Paiements Cash App Pay
Ajoutez la prise en charge de Cash App Pay à votre intégration.
Nous vous recommandons d’utiliser le composant Mobile Payment Element, un formulaire de paiement intégrable, pour ajouter Cash App Pay (et d’autres moyens de paiement) à votre intégration le plus facilement possible.
Ce guide explique comment accepter les paiements Cash App Pay depuis votre application mobile native à l’aide de votre propre formulaire de paiement personnalisé.
Si vous acceptez les paiements Cash App Pay à partir de votre application mobile native, vos clients sont redirigés vers l’application mobile Cash App pour authentification. L’achat est finalisé dans l’application mobile Cash App, et le client est redirigé vers votre application mobile native.
Configurer StripeCôté serveurCôté client
Tout d’abord, il vous faut un compte Stripe. Inscrivez-vous.
Côté serveur
Pour cette intégration, votre serveur doit être doté d’endpoints qui communiquent avec l’API Stripe. Utilisez les bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur :
Côté client
Le SDK iOS de Stripe est disponible en open source et fait l’objet d’une documentation complète. Il est également compatible avec les applications prenant en charge iOS 13 et les versions ultérieures.
Remarque
Pour obtenir de plus amples informations sur la version la plus récente du SDK et ses versions antérieures, consultez la page des versions sur GitHub. Pour recevoir une notification lors de la publication d’une nouvelle version, surveillez les versions à partir du référentiel.
Configurez le SDK avec votre clé publiable Stripe au démarrage de votre application. Cela lui permet d’envoyer des requêtes à l’API Stripe.
Remarque
Utilisez vos clés de test lors de vos activités de test et de développement et vos clés du mode production pour la publication de votre application.
Créer un PaymentIntentCôté serveurCôté client
Côté serveur
Un PaymentIntent est un objet qui représente votre intention d’encaisser le paiement d’un client et qui suit le cycle de vie du processus de paiement étape par étape.
Pour créer et confirmer un PaymentIntent
sur votre serveur :
- Indiquez le montant à encaisser et la devise.
- Ajoutez
cashapp
à la liste des types de moyens de paiement pour votrePaymentIntent
. Assurez-vous que Cash App Pay est activé dans le Dashboard. - Définissez
payment_
surmethod_ data[type] cashapp
pour créer un PaymentMethod et l’utiliser immédiatement avec ce PaymentIntent.
Le PaymentIntent renvoyé contient la clé secrète du client, que vous utiliserez pour confirmer le PaymentIntent. Renvoyez cette clé secrète côté client pour permettre son utilisation à l’étape suivante.
Côté client
Côté client, demandez un PaymentIntent auprès de votre serveur et sauvegardez la clé secrète du client qu’il contient.
Soumettre le paiement à StripeCôté client
Lorsqu’un client appuie sur le bouton pour payer avec Cash App Pay, confirmez le PaymentIntent
pour finaliser le paiement. Configurez un objet STPPaymentIntentParams
avec la clé secrète du client du PaymentIntent
.
La clé secrète est différente de vos clés API qui servent à authentifier les requêtes de l’API Stripe. Elle doit être utilisée avec prudence, car elle peut servir à réaliser le paiement. Ne l’enregistrez pas, ne l’intégrez pas dans des URL et ne la dévoilez à personne d’autre que votre client.
Configurer une URL de redirection
Le SDK iOS présente une vue Web dans votre application afin d’effectuer le paiement Cash App Pay. Si vous souhaitez qu’une fois l’authentification effectuée, la vue Web disparaisse automatiquement, sans que votre client ait à la fermer, vous pouvez paramétrer une URL personnalisée ou un lien universel, puis configurer votre délégation d’application de façon à transférer l’URL au SDK.
Transmettez l’URL en tant que return_
lorsque vous confirmez le PaymentIntent. Une fois l’authentification effectuée sur la vue Web, Stripe redirige l’utilisateur vers la return_
.
Confirmer un paiement Cash App Pay
Finalisez le paiement en appelant STPPaymentHandler confirmPayment
. Une vue Web s’affiche pour permettre au client d’effectuer le paiement avec Cash App Pay. Le bloc de finalisation est ensuite appelé avec le résultat du paiement.
FacultatifAutorisation et capture distinctes
Vous pouvez séparer l’autorisation de la capture pour créer un paiement maintenant, mais capturer les fonds ultérieurement. Stripe annule le PaymentIntent et envoie un événement payment_intent.canceled si le paiement n’est pas capturé dans un délai de 7 jours.
Si vous savez que vous ne pouvez pas capturer le paiement, nous vous recommandons d’annuler le PaymentIntent plutôt que d’attendre la fin de la période de 7 jours.
Indiquez à Stripe d’autoriser uniquement le montant 
Pour indiquer que vous souhaitez séparer l’autorisation de la capture, définissez capture_method sur manual
lors de la création du PaymentIntent. Ce paramètre indique à Stripe d’autoriser uniquement le montant sur le compte Cash App Pay du client.
Capturez les fonds 
Une fois l’autorisation réussie, l’état du PaymentIntent passe à requires_
. Pour capturer les fonds autorisés, faites une demande de capture du PaymentIntent.
Le montant total autorisé est capturé par défaut. Vous pouvez également spécifier le montant à capturer amount_
, qui peut être inférieur ou égal au total.
Facultatif Annuler l’autorisation
Si vous devez annuler une autorisation, vous pouvez annuler le PaymentIntent.
FacultatifGérer les événements post-paiement
Stripe envoie un événement payment_intent.succeeded à l’issue du paiement. Utilisez le Dashboard, un webhook personnalisé ou une solution partenaire pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un workflow de livraison.
Plutôt que d’attendre un rappel de votre client, écoutez ces événements. En effet, côté client, l’acheteur pourrait fermer la fenêtre de son navigateur ou quitter l’application avant l’exécution du rappel. Des personnes malveillantes peuvent en profiter pour manipuler la réponse. Si vous configurez votre intégration de manière à écouter les événements asynchrones, cela vous permettra également d’accepter de nouveaux moyens de paiement plus facilement à l’avenir. Apprenez-en davantage sur les différences entre les différents moyens de paiement pris en charge.
Gérer les événements manuellement dans le Dashboard
Utilisez le Dashboard pour afficher vos paiements de test dans le Dashboard, envoyer des reçus par e-mail, gérer les virements ou réessayer les paiements échoués.
Créer un webhook personnalisé
Créez un gestionnaire de webhook personnalisé pour écouter les événements et créer des tunnels de paiement asynchrones personnalisés. Testez et déboguez votre intégration de webhook localement avec la CLI Stripe.
Intégrer une application prédéfinie
Gérez les événements commerciaux courants, tels que l’automatisation ou le marketing et les ventes, en intégrant une application partenaire.
Tester votre intégration
Testez votre intégration Cash App Pay en affichant la page de redirection à l’aide de vos clés API de test. Vous pouvez tester la réussite de paiement en l’authentifiant sur la page de redirection. Le PaymentIntent bascule alors de l’état requires_
à succeeded
.
Pour tester un échec d’authentification de l’utilisateur, utilisez vos clés API de test et accédez à la page de redirection. Sur cette page, cliquez sur Échec du paiement test. Le PaymentIntent bascule alors de l’état requires_
à requires_
.
Pour les PaymentIntents de capture manuelle de test, le PaymentIntent non capturé expire automatiquement 7 jours après l’autorisation.
En mode production, le fait d’appuyer sur Payer vous redirige vers l’application mobile Cash App. Vous n’avez pas la possibilité d’approuver ou de refuser le paiement dans l’application Cash. Le paiement est automatiquement approuvé après la redirection.
Échecs de paiement
Cash App Pay utilise plusieurs données pour décider du refus d’une transaction (par exemple, si son modèle d’IA a détecté un risque élevé de fraude pour la transaction, ou si le client a révoqué votre autorisation de débit dans Cash App).
Dans ce cas, le PaymentMethod est détaché et le statut de l’objet PaymentIntent passe automatiquement à requires_
Hormis le refus d’un paiement, dans le cas d’un PaymentIntent Cash App Pay à l’état requires_
, les clients doivent effectuent le paiement sous 10 minutes une fois qu’ils ont été redirigés vers Cash App. En l’absence d’action sous 10 minutes, le PaymentMethod est détaché et l’état de l’objet PaymentIntent passe automatiquement à requires_
.
Dans ce cas, le composant Payment Element affiche des messages d’erreur et demande à votre client de réessayer avec un autre moyen de paiement.
Codes d’erreur
Le tableau suivant détaille les codes d’erreur courants et les actions recommandées :
Code d’erreur | Action recommandée |
---|---|
payment_ | Saisissez la devise appropriée. Cash App Pay prend uniquement en charge l’usd . |
missing_ | Consultez le message d’erreur pour en savoir plus sur le paramètre requis. |
payment_ | Ce code peut apparaître dans le champ last_payment_error.code d’un PaymentIntent. Consultez le message d’erreur pour connaître la raison détaillée de l’échec et obtenir une suggestion de traitement de l’erreur. |
payment_ | Spécifiez une URL return_ lors de la confirmation d’un PaymentIntent avec Cash App Pay. |