Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Outils de développement
Aperçu
Démarrer une intégration
Produits
Global Payouts
Capital
Émission de cartes
    Présentation
    Fonctionnement d'Issuing
    Disponibilité mondiale
    Gérer la fraude
    Cartes bancaires
    Choisir votre type de carte
    Cartes virtuelles
    Cartes physiques
    Gérer des cartes bancaires
    Portefeuilles électroniques
    Cartes de remplacement
    Programmes de cartes
    Gestion de programme
    Issuing pour les prestataires de paiement
    Personnaliser votre programme de cartes
    Ajoutez des fonds à votre programme de cartes
    Credit Consumer Issuing
    Contrôles
    Contrôles des dépenses
    Outils antifraude avancés
    3DS
    Étapes de détection de la fraude
    Autorisations en temps réel
    Gestion des PIN
    Issuing et Elements
    Gestion des tokens
    L'obtention de financements
    Solde
    Post-financer votre intégration à Stripe
    Post-financer votre intégration avec les réserves dynamiques
    Achats
    Autorisations
    Transactions
    Litiges
    Tests
    Catégories de marchands
    Utilisation des distributeurs automatiques
    Enriched merchant data
    Issuing avec Connect
    Configurer une intégration pour Issuing et Connect
    Mettre à jour les Conditions d'utilisation du service
    Financement Connect
    Comptes connectés, cartes et titulaires de carte
    Désinscription des comptes connectés inactifs
    Intégrer l'interface utilisateur pour la gestion des cartes
    Crédit
    Présentation
    Configurer des comptes connectés
    Gérer les conditions de crédit
    Enregistrer d'autres décisions de crédit et gérer les avis de décision défavorable (AAN)
    Communiquer les données réglementaires requises pour les décisions de crédit
    Gérer les obligations des comptes
    Tester une intégration de crédit
    Informations complémentaires
    Choisir un type de titulaire de carte
    Service de support dédié à Issuing et Treasury
    Liste de surveillance Issuing
    Recommandations pour le marketing (Europe/Royaume-Uni)
    Recommandations pour la conformité des produits et du marketing (US)
Treasury
Gérer vos fonds
AccueilGestion de fondsIssuing cards

Utiliser des portefeuilles électroniques avec Issuing

Comment utiliser Issuing pour ajouter des cartes à des portefeuilles électroniques.

Copier la page

Issuing permet aux utilisateurs d’ajouter des cartes à des portefeuilles électroniques comme Apple Pay et Google Pay. Stripe prend en charge l’ajout de cartes via deux méthodes :

  1. Mise en service manuelle : les titulaires de carte saisissent les informations de leur carte dans l’application de portefeuille de leur téléphone pour l’ajouter à leur portefeuille électronique.
  2. Mise en service de type push : les applications mobiles permettent aux utilisateurs d’ajouter des cartes à leur portefeuille électronique directement depuis l’application.

Lorsqu’une carte est ajoutée à un portefeuille électronique, une représentation tokenisée de cette carte est créée. Les tokens de réseau sont gérés séparément des cartes. Pour en savoir plus sur les tokens de réseau et leur fonctionnement, veuillez consulter la page Gestion des tokens.

Mise en service manuelle

Les titulaires de cartes peuvent ajouter des cartes virtuelles et des cartes physiques Stripe Issuing à leurs portefeuilles Apple Pay, Google Pay et Samsung Pay par le biais d’une mise en service manuelle.

Pour ce faire, les titulaires de carte ouvrent l’application du portefeuille concerné sur leur téléphone et saisissent les informations de leur carte. Stripe envoie ensuite un code de vérification à 6 chiffres au phone_number ou email du titulaire de la carte.

Un message d’erreur carte non prise en charge s’affiche si aucun de ces champs n’est renseigné pour le titulaire de la carte au moment où celle-ci est mise en service.

Aucun code n’est nécessaire pour mettre en œuvre la mise en service manuelle, mais le processus de configuration peut varier en fonction du fournisseur de portefeuille électronique et du pays dans lequel vous êtes établi :

États-Unis

Les portefeuilles Apple Pay nécessitent l’approbation d’Apple. Consultez vos paramètres de portefeuilles électroniques pour connaître l’état d’Apple Pay sur votre compte. Il est possible que vous deviez soumettre une demande avant d’utiliser Apple Pay.

Google Pay et Samsung Pay ne nécessitent aucune étape supplémentaire.

UE/Royaume-Uni

Les intégrations de portefeuilles électroniques nécessitent une approbation supplémentaire de la part de l’équipe de partenariat Stripe. Pour en savoir plus, contactez le représentant de votre compte ou contactez Stripe.

Les portefeuilles Apple Pay nécessitent une autorisation supplémentaire. Vérifiez vos paramètres de portefeuilles électroniques pour connaître l’état d’Apple Pay sur votre compte. Il est possible que vous deviez soumettre une demande avant de pouvoir utiliser Apple Pay.

Mise en service de type push

Avec la mise en service de type push, les titulaires de carte peuvent ajouter leurs cartes Stripe Issuing à leurs portefeuilles électroniques grâce à votre application, en appuyant sur un bouton « Ajouter au portefeuille » comme ceux illustrés ci-dessous.

Pour activer la mise en service de type push aux États-Unis, les utilisateurs doivent d’abord effectuer les étapes de mise en service manuelle. En plus de l’approbation manuelle de la mise en service, la mise en service push nécessite une intégration avec le SDK Stripe.

Cela nécessite à la fois des processus d’approbation via Stripe et une intégration de code avec le SDK Stripe pour chaque plateforme sur laquelle vous souhaitez prendre en charge la mise en service de type push. Les approbations de la plateforme se répercutent sur tous les comptes connectés.

La mise en service de type push de Samsung Pay n’est pas prise en charge par nos SDK.

Un bouton d'interface utilisateur noir indiquant la mention Ajouter à Apple Wallet. Le logo Apple Wallet figure à gauche du texte. Il s'agit d'un portefeuille gris avec des cartes bleues, jaunes, vertes et rouges légèrement décalées.
Un bouton noir pour l’interface utilisateur indiquant Ajouter au wallet Google. Le logo Google Wallet figure à gauche du texte.

Demander un accès

Demande d’accès pour iOS

Une mise en service de type push nécessite un droit Apple spécial appelé com.apple.developer.payment-pass-provisioning. Vous pouvez demander ce droit par e-mail à l’adresse support-issuing@stripe.com. Dans votre e-mail, veillez à inclure les informations suivantes :

  • Réseau de cartes : Visa ou MasterCard.
  • Nom de la carte : il s’agit du nom de la carte affichée dans le portefeuille numérique.
  • Nom de l’application : le nom de votre application.
  • ID de l’équipe de développeurs : disponible dans la section abonnement des paramètres de votre compte Apple Developer.
  • ID ADAM : l’ID numérique unique de votre application, que vous trouverez sur l’App Store Connect ou dans le lien de l’App Store vers votre application (par exemple, https://apps.apple.com/app/id123456789).
  • ID de groupe (bundle ID) : l’identifiant de groupe de votre application, également disponible sur l’App Store Connect (par exemple, com.example.yourapp).

Demande d’accès pour Android

Stripe fournit un wrapper SDK basé sur une bibliothèque Google privée pour la mise en service de type push. Pour publier votre application sur le Google Play Store via une mise en service de type push, vous devez demander un accès à cette bibliothèque :

  • Demander un accès à Google Pay
  • Téléchargez le SDK privé TapAndPay de Google (la version compatible actuelle est la 17.1.2)
  • Demandez un accès à l’API de provisionnement push pour votre application. Vous devrez fournir votre ID d’application pour l’ajouter à la liste blanche de Google. Pour en savoir plus sur ce processus, consultez la documentation de Google.
  • Envoyez le même ID d’application, le nom de votre application, le réseau de cartes et le nom de la carte à l’adresse support-issuing@stripe.com.

Configurer votre application
Côté client

Le SDK React Native est disponible en open source et fait l’objet d’une documentation complète. En interne, il utilise des SDK Android et iOS natifs. Pour installer le SDK React Native de Stripe, exécutez l’une des commandes suivantes dans le répertoire de votre projet (selon le gestionnaire de paquets que vous utilisez) :

Command Line
yarn add @stripe/stripe-react-native

Ensuite, installez les autres dépendances nécessaires :

  • Pour iOS, accédez au répertoire ** ios** et exécutez pod install pour vous assurer d’installer également les dépendances natives requises.
  • Pour Android, il n’y a plus de dépendances à installer.

Initialisation de Stripe

Pour initialiser Stripe dans votre application React Native, wrappez votre écran de paiement avec le composant StripeProvider ou utilisez la méthode d’initialisation initStripe. Seule la clé publiable de l’API dans publishableKey est nécessaire. L’exemple suivant montre comment initialiser Stripe à l’aide du composant StripeProvider.

import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( <StripeProvider publishableKey={publishableKey} merchantIdentifier="merchant.identifier" // required for Apple Pay urlScheme="your-url-scheme" // required for 3D Secure and bank redirects > // Your app code here </StripeProvider> ); }

Remarque

Use your API test keys while you test and develop, and your live mode keys when you publish your app.

Configuration pour Android

Pour activer le provisionnement de type push sur Android après avoir obtenu l’accès au SDK TapAndPay (voir ci-dessus), vous devez l’intégrer à votre projet Android natif.

Ensuite, vous devez importer la bibliothèque de provisionnement de type push pour Android de Stripe en ajoutant ce qui suit à votre fichier android/app/build.gradle :

build.gradle
Groovy
dependencies { // ... implementation 'com.stripe:stripe-android-issuing-push-provisioning:1.1.0' }

Configuration pour iOS

Pour activer le provisionnement de type push sur iOS une fois que Stripe a octroyé le droit d’accès, vous devez ajouter les fonctionnalité à votre profil de provisionnement dans l’App Store Connect.

Ensuite, vous devez ajouter le nouveau droit d’accès à votre fichier ios/app.config.js :

app.config.js
"entitlements": { "com.apple.developer.payment-pass-provisioning": true }

Mettre votre back-end à jour
Côté serveur

L’implémentation de la mise en service de type push expose des méthodes qui requièrent que vous communiquiez avec votre back-end pour créer une clé éphémère Stripe et renvoyer un JSON de celle-ci à votre application. Cette clé est un identifiant éphémère de l’API que vous pouvez utiliser pour récupérer les informations de carte chiffrées d’une instance unique d’un objet Card.

Pour garantir que l’objet renvoyé par l’API Stripe est compatible avec la version du SDK que vous utilisez, vous devez explicitement transmettre la version d’API exportée par le SDK React Native à notre API lorsque vous créez la clé.

Command Line
curl
curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "issuing_card"="{{ISSUING_CARD_ID}}" \ -H "Stripe-Version: {{API_VERSION}}"
{ "id": "ephkey_1G4V6eEEs6YsaMZ2P1diLWdj", "object": "ephemeral_key", "associated_objects": [ { "id": "ic_1GWQp6EESaYspYZ9uSEZOcq9", "type": "issuing.card" } ], "created": 1586556828, "expires": 1586560428, "livemode": false, "secret": "ek_test_YWNjdF8xRmdlTjZFRHelWWxwWVo5LEtLWFk0amJ2N0JOa0htU1JzEZkd2RpYkpJdnM_00z2ftxCGG" }

Vous devez également créer un endpoint pour récupérer les informations de la carte émise, qu’il vous faudra transmettre au composant <AddToWalletButton /> :

Command Line
cURL
curl https://api.stripe.com/v1/issuing/cards/ISSUING_CARD_ID \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Mettre votre application à jour
Côté client

Tout d’abord, déterminez si l’appareil est admissible à l’approvisionnement push en vérifiant que la valeur de wallets.apple_pay.eligible dans la carte émise (récupérée à partir du deuxième endpoint que vous avez créé ci-dessus à l’étape 3) est true. Si tel est le cas, enregistrez les informations de la carte pour les utiliser ultérieurement dans notre composant, puis continuez. Si wallets.apple_pay.eligible est défini sur false, n’affichez pas le <AddToWalletButton /> sur iOS, car App Review pourrait rejeter votre application. Il en va de même pour wallets.google_pay.eligible sur Android.

import React, {useEffect, useState} from 'react'; import {Constants} from '@stripe/stripe-react-native'; import {View} from 'react-native'; export default function MyScreen() { const [key, setKey] = useState(null); const [card, setCard] = useState(null); useEffect(() => { fetchEphemeralKey(); fetchIssuingCard(); }, []); const fetchIssuingCard = async () => { const response = await fetch(`${API_URL}/issuing-card`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ISSUING_CARD_ID: '{{ISSUING_CARD_ID}}', }), }); const card = await response.json(); if (!card.wallets.apple_pay.eligible) { // Do not show <AddToWalletButton /> component on iOS. See card.wallets.apple_pay.ineligible_reason for details } else if (!card.wallets.google_pay.eligible) { // Do not show <AddToWalletButton /> component on Android. See card.wallets.google_pay.ineligible_reason for details } else { setCard(card); } }; const fetchEphemeralKey = async () => { // See above }; return <View />; }

Ensuite, récupérez votre clé éphémère auprès du premier endpoint que vous avez créé à l’étape 3 ci-dessus et enregistrez-la.

import React, {useEffect, useState} from 'react'; import {Constants} from '@stripe/stripe-react-native'; import {View} from 'react-native'; export default function MyScreen() { const [key, setKey] = useState(null); useEffect(() => { fetchEphemeralKey(); }, []); const fetchEphemeralKey = async () => { const response = await fetch(`${API_URL}/ephemeral-key`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ISSUING_CARD_ID: '{{ISSUING_CARD_ID}}', API_VERSION: Constants.API_VERSIONS.ISSUING, }), }); const myKey = await response.json(); setKey(myKey); }; return <View />; }

Vous n’avez plus besoin de communiquer avec le serveur. Vous devez ensuite déterminer si la carte peut être ajoutée au portefeuille. Vous pouvez vérifier cela à l’aide de la méthode canAddCardToWallet, qui renvoie un objet contenant un champ booléen canAddCard. Si canAddCard est défini sur false, n’affichez pas le paramètre AddToWalletButton, car votre application pourrait être rejetée par Apple.

Sur Android, il se peut que la carte soit déjà présente dans le portefeuille, mais que son état soit bloqué. Pour résoudre ce problème, vous pouvez ajouter une logique permettant de vérifier la réponse token renvoyée par canAddCardToWallet dans l’objet details. Si cette réponse est non nulle et que token.status est "TOKEN_STATE_NEEDS_IDENTITY_VERIFICATION", transmettez ce token aux propriétés de <AddToWalletButton />.

import React, {useEffect, useState} from 'react'; import {Constants, canAddCardToWallet, GooglePayCardToken} from '@stripe/stripe-react-native'; import {View} from 'react-native'; export default function MyScreen() { const [key, setKey] = useState(null); const [card, setCard] = useState(null); const [showAddToWalletButton, setShowAddToWalletButton] = useState(false); const [androidCardToken, setAndroidCardToken] = useState(null); useEffect(() => { fetchEphemeralKey(); fetchIssuingCard(); }, []); const checkIfCanAddCard = async () => { const { canAddCard, details, error } = await canAddCardToWallet({ primaryAccountIdentifier: card?.wallets?.primary_account_identifier, cardLastFour: card.last4, hasPairedAppleWatch: // Pass a boolean indicating whether or not the device has a paired Apple Watch. iOS only. }); if (error) { Alert.alert(error.code, error.message); } else { setShowAddToWalletButton(canAddCard); if (details?.token?.status === 'TOKEN_STATE_NEEDS_IDENTITY_VERIFICATION') { setAndroidCardToken(details.token); } } }; const fetchIssuingCard = async () => { // See above await checkIfCanAddCard(); }; const fetchEphemeralKey = async () => { // See above }; return <View />; }

Nous disposons désormais de toutes les informations nécessaires pour pouvoir afficher ce bouton :

import React, {useEffect, useState} from 'react'; import { Constants, canAddCardToWallet, AddToWalletButton, GooglePayCardToken, } from '@stripe/stripe-react-native'; import {View, Image, Alert, StyleSheet} from 'react-native'; import AddToGooglePayPNG from '../assets/Add-to-Google-Pay-Button-dark-no-shadow.png'; export default function MyScreen() { const [key, setKey] = useState(null); const [card, setCard] = useState(null); const [showAddToWalletButton, setShowAddToWalletButton] = useState(false); const [androidCardToken, setAndroidCardToken] = useState<null | GooglePayCardToken>(null); useEffect(() => { fetchEphemeralKey(); fetchIssuingCard(); }, []); const canAddCard = async () => { // See above }; const fetchIssuingCard = async () => { // See above }; const fetchEphemeralKey = async () => { // See above }; return ( <View> {showAddToWalletButton && ( <AddToWalletButton token={androidCardToken} androidAssetSource={Image.resolveAssetSource(AddToGooglePayPNG)} testEnv={true} style={styles.payButton} iOSButtonStyle="onLightBackground" cardDetails={{ name: card?.cardholder?.name, primaryAccountIdentifier: card?.wallets?.primary_account_identifier, // This can be null, but should still always be passed. Failing to pass the primaryAccountIdentifier can result in a failure to provision the card. lastFour: card?.last4, description: 'Added by Stripe', }} ephemeralKey={key} onComplete={({error}) => { Alert.alert( error ? error.code : 'Success', error ? error.message : 'Card was successfully added to the wallet.', ); }} /> )} </View> ); } const styles = StyleSheet.create({ payButton: { // You may add custom styles to your button, but make sure it complies // with the relevant platform guidelines: // iOS : https://developer.apple.com/wallet/add-to-apple-wallet-guidelines/ // Android : https://developers.google.com/pay/issuers/apis/push-provisioning/android/branding-guidelines }, });

Lorsqu’un utilisateur touche le bouton, il lance l’interface utilisateur permettant d’ajouter la carte au portefeuille. Implémentez ce rappel dans votre propriété onComplete. Si le champ error est non nul, une erreur se produit et la carte n’est pas ajoutée au portefeuille. Au contraire, si error est nul, la carte peut être ajoutée.

Apparence du bouton

Sur iOS, l’apparence du bouton est déterminée par la propriété iOSButtonStyle. Définissez-la sur :

  • onLightBackground lorsque vous affichez le bouton sur un arrière-plan clair ou blanc.
  • onDarkBackground lorsque vous affichez le bouton sur un arrière-plan sombre ou noir.

Sur Android, vous devez transmettre la ressource de l’image réelle à la propriété androidAssetSource. Vous pouvez télécharger toutes les options de ressources possibles directement depuis Google. Suivez les instructions de Google relatives à la marque lorsque vous implémentez votre bouton.

Pour transmettre le fichier PNG de votre choix au composant AddToWalletButton, ajoutez-le à votre projet, importez-le de la même manière que n’importe quelle ressource et résolvez la source avec Image.resolveAssetSource :

import {Image} from 'react-native'; import AddToGooglePayPNG from '../assets/Add-to-Google-Pay-Button-dark-no-shadow.png'; ... <AddToWalletButton ... androidAssetSource={Image.resolveAssetSource(AddToGooglePayPNG)} ... />

Tests

iOS

Sur iOS, vous pouvez tester le provisionnement push en développement sur des simulateurs ou à l’aide de cartes de test, du moment que vous transmettez le paramétrage testEnv={true} au composant AddToWalletButton. Cependant, notez que si la propriété testEnv est définie sur true, les cartes ne seront pas ajoutées au wallet de l’appareil. Dans les environnements de test, le droit d’accès com.apple.developer.payment-pass-provisioning n’est pas nécessaire.

Android

Sur Android, la propriété testEnv n’a aucun effet. Tous les tests doivent être réalisés en mode production, avec des cartes réelles et sur des appareils physiques.

Veillez à fournir votre ID d’application à Stripe avant de commencer les tests internes.

Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc