Intégrer des mandats électroniques indiens
Ce guide explique brièvement comment générer et utiliser des mandats électroniques indiens avec Stripe Invoicing pour les paiements ponctuels. À l’heure actuelle, vous ne pouvez intégrer les mandats électroniques indiens que via l’API.
Nous employons le terme hors session pour qualifier les paiements qui sont effectués sans implication directe du client. Ces types de paiements utilisent les informations de paiement du client précédemment collectées. En revanche, les paiements pendant une session se produisent lorsqu’un client est directement impliqué, que ce soit par l’intermédiaire de l’interface utilisateur ou pour effectuer un flux d’authentification à deux facteurs comme 3D Secure (3DS).
Générer un mandat
Pour générer un mandat, effectuez un appel de création de SetupIntent incluant l’ID du moyen de paiement et les détails du mandat. Pour ce faire, votre client doit être connecté.
Note
Lorsque vous envoyez une demande de création de SetupIntent, la date de début doit être un horodatage et doit être située à moins d’un jour de la date du jour.
Une fois le SetupIntent créé, utilisez le Payment Element pour collecter les données de paiement de votre client et configurer ses paiements futurs. Utilisez stripe.confirmSetup pour finaliser la configuration à l’aide des données collectées par le Payment Element.
stripe.confirmSetup({ elements, confirmParams: { // Return URL where the customer should be redirected after the SetupIntent is confirmed. return_url: 'https://example.com', }, }) .then(function(result) { if (result.error) { // Inform the customer that there was an error. } });
Le fait de confirmer le SetupIntent le fait passer à l’état requires_action
, et la propriété next_action
décrit les étapes à suivre pour réaliser le paiement.
{ "payment_method_options": { "card" : { "mandate_options" : { "reference" : "{{REFRENCE}}", "description" : "{{DESCRIPTION}}", "amount" : "{{AMOUNT}}", "currency" : "inr", "type" : "{{AMOUNT_TYPE}}", "start_date" : "{{START_DATE}}", "end_date" : "{{END_DATE}}", "interval" : "{{INTERVAL}}", "interval_count" : "{{INTERVAL_COUNT}}" } } }, "status": "requires_action", "next_action": { "type": "use_stripe_sdk", "use_stripe_sdk": { "type": "three_d_secure_redirect", "stripe_js": "https://hooks.stripe.com/redirect/authenticate/src_xxxxxxxxxxx", "source": "src_xxxxxxxx" } }, // Other existing SetupIntent params }
Une fois que le titulaire de la carte a procédé à l’authentification forte (3DS), le SetupIntent passe à l’état succeeded
et Stripe créé un mandat, disponible dans l’objet SetupIntent
.
{ "mandate": "{{MANDATE_ID}}", "payment_method_options": { "card" : { "mandate_options" : { "reference" : "{{REFRENCE}}", "description" : "{{DESCRIPTION}}", "amount" : "{{AMOUNT}}", "currency" : "inr", "type" : "{{AMOUNT_TYPE}}", "start_date" : "{{START_DATE}}", "end_date" : "{{END_DATE}}", "interval" : "{{INTERVAL}}", "interval_count" : "{{INTERVAL_COUNT}}" } } }, status: "succeeded", // Other existing SetupIntent params }
Note
Vous pouvez transmettre le paramètre payment_method_options[card][mandate_options]
pour toutes les demandes d’enregistrement d’abonnements. Stripe ignore ces paramètres si votre client utilise une carte qui n’a pas été émise en Inde dans le cadre de son abonnement, étant donné que la réglementation ne s’applique pas à ces cartes.
Utiliser un mandat pour créer une facture
Lorsque vous créez une facture, vous pouvez définir le mandat par défaut pour tous les paiements hors session de la facture. Lorsque vous utilisez des mandats par défaut, nous vous recommandons de définir le moyen de paiement correspondant et le paramètre default_payment_method
:
# Request to create an Invoice with a default mandate curl https://api.stripe.com/v1/invoices \ -u sk_test_123: \ -d customer=cus_xyz \ -d default_payment_method=pm_xxx \ -d payment_settings[default_mandate]=mandate_xyz
Il se peut que cette facture tente un débit hors session du moyen de paiement. Cela s’explique de différentes façons : vous avez configuré la facture pour qu’elle avance automatiquement, vous l’avez fait avancer manuellement à l’aide du endpoint Invoice Pay, ou vous avez confirmé le PaymentIntent de la facture. Si la facture tente de débiter votre client, les paramètres default_mandate
et default_payment_method
fonctionnent ensemble pour payer la facture hors session.
Tant que le mandat reste actif (et que le débit respecte les paramètres initiaux du mandat en termes de montant et de fréquence), le débit est traité avec succès. Il est également possible de définir les paramètres default_mandate
et default_payment_method
sur la facture à l’aide du endpoint de mise à jour de facture.
Utiliser un mandat pour débiter une facture
Si vous ne souhaitez pas définir le mandat sur la facture au moment de la création (par exemple, vous n’avez pas collecté le mandat), vous pouvez le fournir à deux moments ultérieurs du cycle de vie du mandat. Le processus que vous adoptez dépend de la façon dont vous configurez votre intégration de facturation existante.
Si vous utilisez l’endpoint Invoice Pay
, vous pouvez également fournir le mandat en tant que paramètre mandate
de niveau supérieur. Comme lors de la configuration du mandat par défaut, vous devez fournir explicitement le moyen de paiement que vous souhaitez utiliser avec le mandat :
# Request to attempt payment on an open invoice with a mandate curl https://api.stripe.com/v1/invoices/in_aaa/pay \ -u sk_test_123: \ -d payment_method=pm_xxx \ -d mandate=mandate_xyz
De la même façon, vous pouvez utiliser le mandat pour confirmer le Payment Intent associé à la facture :
# Request to retrieve the invoice's PaymentIntent ID curl https://api.stripe.com/v1/invoices/in_aaa \ -u sk_test_123: # Response to GET /v1/invoices/in_aaa { "id": "in_abc789", "status": "open", "payment_intent": "pi_zyx", # ... more fields } # Request to attempt invoice payment with a mandate by confirming the payment intent curl https://api.stripe.com/v1/payment_intents/pi_zyc012/confirm \ -u sk_test_123: \ -d mandate=mandate_xyz
Notification et période d'attente
Avant que le prélèvement ne soit effectué, une notification est envoyée aux clients pour les en informer. Les clients ont également la possibilité de modifier ou d’annuler le mandat. Après 26 heures, le montant est débité de la carte du client et la facture passe à l’état paid
.