Apple Pay
Donnez à votre clientèle la possibilité de régler ses achats de manière sécurisée avec Apple Pay sur son iPhone, iPad ou Apple Watch.
Apple Pay est compatible avec la plupart des produits et fonctionnalités Stripe. Les utilisateurs de Stripe peuvent accepter Apple Pay dans les applications sous iOS 9 et versions ultérieures, ainsi que sur le Web, dans Safari, à partir d’iOS 10 et de macOS Sierra. Le traitement des paiements via Apple Pay n’entraîne aucuns frais supplémentaires et les tarifs sont identiques à ceux des autres transactions par carte.
Apple Pay est disponible pour les titulaires de cartes émises par des banques participantes, dans les pays pris en charge. Pour en savoir plus, reportez-vous à la liste des banques participantes établie par Apple pour connaître les banques et pays pris en charge.
Tunnel de paiement
La démonstration ci-dessous illustre le tunnel de paiement Apple Pay depuis votre page de paiement :
Utilisation de Stripe et Apple Pay, et achats dans les applications
Pour la vente de biens physiques, de services et autres, votre application peut accepter Apple Pay ou tout autre moyen de paiement pris en charge par Stripe. Ces paiements sont traités par Stripe et vous n’avez qu’à payer les frais de traitement de Stripe. Cependant, la vente de produits numériques, de contenu numérique et autres doit se faire par le biais des achats dans les applications d’Apple. Ces paiements sont traités par Apple et sont soumis aux frais de transaction de l’entreprise.
Pour en savoir plus sur les ventes qui doivent faire l’objet d’achats dans les applications, consultez les instructions de vérification de l’App Store d’Apple.
Accepter Apple Pay
Stripe met à votre disposition différentes méthodes pour ajouter Apple Pay aux moyens de paiement que vous proposez. Pour plus d’informations sur l’intégration à mettre en place, sélectionnez la méthode qui vous intéresse :
Vous pouvez utiliser le SDK React Native de Stripe pour accepter à la fois les paiements Apple Pay et les cartes bancaires traditionnelles. Avant de commencer, vous devez vous inscrire au programme Apple Developer et configurer Stripe sur votre serveur et dans votre application. Ensuite, suivez les étapes ci-dessous :
- Demander un ID de marchand Apple
- Créer un certificat Apple Pay
- Réaliser une intégration avec Xcode
- Configurer votre ID de marchand Apple dans StripeProvider
- Vérifier si Apple Pay est pris en charge
- Présenter le formulaire de paiement
- Envoyer le paiement à Stripe
Demander un ID de marchand Apple
Pour obtenir un ID de marchand Apple, demandez un nouvel identifiant sur le site Web Apple Developer.
Renseignez le formulaire en indiquant une description et un identifiant. La description n’est destinée qu’à votre propre information et vous pourrez la modifier ultérieurement au besoin. En ce qui concerne l’identifiant, Stripe vous recommande d’utiliser le nom de votre application (par exemple, merchant.
).
Créer un certificat Apple Pay
Créez un certificat permettant à votre application de chiffrer les données de paiement.
Accédez aux paramètres des certificats iOS dans le Dashboard, cliquez sur Ajouter une nouvelle application et suivez le guide.
Téléchargez un fichier CSR (Certificate Signing Request) pour obtenir d’Apple un certificat sécurisé vous autorisant à utiliser Apple Pay.
Un fichier CSR peut émettre exactement un certificat. Si vous changez d’ID de marchand Apple, vous devez accéder aux paramètres des certificats iOS dans le Dashboard pour obtenir un nouveau fichier CSR et un nouveau certificat.
Réaliser une intégration avec Xcode
Ajoutez la fonctionnalité Apple Pay à votre application. Dans Xcode, ouvrez vos paramètres de projet, cliquez sur l’onglet Signature et fonctionnalités, puis ajoutez Apple Pay. Vous serez peut-être alors invité(e) à vous connecter à votre compte développeur. Sélectionnez l’ID du marchand créé plus tôt. Il est désormais possible d’utiliser Apple Pay sur votre application.
Activez la fonctionnalité Apple Pay dans Xcode
Configurer votre ID de marchand Apple dans StripeProvider
Dans le composant StripeProvider
, spécifiez l’ID de marchand Apple avec lequel vous venez de vous inscrire :
import { StripeProvider } from '@stripe/stripe-react-native'; function App() { return ( <StripeProvider publishableKey="
" merchantIdentifier="merchant.com.{{YOUR_APP_NAME}}" > // Your app code here </StripeProvider> ); }pk_test_TYooMQauvdEDq54NiTphI7jx
Vérifier si Apple Pay est pris en charge
Avant d’afficher Apple Pay comme option de paiement dans votre application, déterminez si l’appareil de l’utilisateur prend en charge Apple Pay et s’il a ajouté une carte bancaire à son portefeuille :
import { PlatformPayButton, isPlatformPaySupported } from '@stripe/stripe-react-native'; function PaymentScreen() { const [isApplePaySupported, setIsApplePaySupported] = useState(false); useEffect(() => { (async function () { setIsApplePaySupported(await isPlatformPaySupported()); })(); }, [isPlatformPaySupported]); // ... const pay = async () => { // ... }; // ... return ( <View> {isApplePaySupported && ( <PlatformPayButton onPress={pay} type={PlatformPay.ButtonType.Order} appearance={PlatformPay.ButtonStyle.Black} borderRadius={4} style={{ width: '100%', height: 50, }} /> )} </View> ); }
Créer le PaymentIntent
Côté serveur
Créez un endpoint qui génère un PaymentIntent avec un montant et une devise. Décidez toujours du montant à débiter côté serveur, un environnement sécurisé, à la différence du côté client. Cette précaution empêchera les éventuels clients malveillants de fixer leurs propres tarifs.
Côté client
Créez une méthode qui demande un PaymentIntent depuis votre serveur :
function PaymentScreen() { // ... const fetchPaymentIntentClientSecret = async () => { const response = await fetch(`${API_URL}/create-payment-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ some: 'value', }), }); const { clientSecret } = await response.json(); return clientSecret; }; // ... }
Résolution des problèmes
Si l’API Stripe génère des erreurs lors de la tentative de création de tokens, il est probable que votre certificat Apple Pay pose problème. Solution : générer un nouveau certificat et l’envoyer à Stripe, comme expliqué sur cette page. Veillez à utiliser une demande de signature de certificat (CSR) obtenue depuis votre Dashboard et non pas une CSR que vous avez générée vous-même. Xcode met souvent en cache de manière incorrecte d’anciens certificats. En plus de générer un nouveau certificat, Stripe vous recommande donc de créer aussi un nouvel ID de marchand Apple.
Si vous recevez l’erreur :
Vous n’avez pas ajouté votre compte de marchand Apple à Stripe
Il est probable que votre application envoie des données chiffrées avec une ancienne CSR/un ancien certificat (non générés par Stripe). Vérifiez que tout certificat généré par des CSR autres que Stripe est révoqué pour votre ID de marchand Apple. Si cette mesure ne résout pas le problème, supprimez l’ID de marchand dans votre compte Apple et recréez-le. Ensuite, créez un nouveau certificat basé sur la même CSR (fournie par Stripe) que celle utilisée précédemment. Vous n’avez pas besoin de charger ce nouveau certificat sur Stripe. Une fois ces opérations effectuées, désactivez les identifiants Apple Pay dans votre application et réactivez-les pour vous assurer qu’ils sont bien actualisés.
Présenter le formulaire de paiement
Dans la propriété onPress
de votre PlatformPayButton
, appelez confirmPlatformPayPayment
pour ouvrir un formulaire Apple Pay. Pour afficher les articles mis dans le panier du client sur le formulaire de paiement, transmettez les articles en tant qu’arguments :
Note
Dans votre code qui gère l’action du client, n’incluez aucune action complexe ou asynchrone avant d’afficher le formulaire de paiement. Si l’action de l’utilisateur n’invoque pas directement le formulaire de paiement, Apple Pay renvoie une erreur.
import { confirmPlatformPayPayment } from '@stripe/stripe-react-native'; function PaymentScreen() { // ... see above const pay = async () => { const clientSecret = await fetchPaymentIntentClientSecret() const { error } = await confirmPlatformPayPayment( clientSecret, { applePay: { cartItems: [ { label: 'Example item name', amount: '14.00', paymentType: PlatformPay.PaymentType.Immediate, }, { label: 'Total', amount: '12.75', paymentType: PlatformPay.PaymentType.Immediate, }, ], merchantCountryCode: 'US', currencyCode: 'USD', requiredShippingAddressFields: [ PlatformPay.ContactField.PostalAddress, ], requiredBillingContactFields: [PlatformPay.ContactField.PhoneNumber], }, } ); if (error) { // handle error } else { Alert.alert('Success', 'Check the logs for payment intent details.'); console.log(JSON.stringify(paymentIntent, null, 2)); } }; // ... see above }
Tester Apple Pay
Il n’est pas possible d’enregistrer les informations des cartes de test Stripe dans Wallet sous iOS. Néanmoins, Stripe reconnaît l’utilisation de vos clés API de test et renvoie un token de carte de test valide. Ce token vous permet de réaliser des paiements à l’aide d’une carte en mode production sans qu’elle soit débitée.