Capture asynchrone
Utilisez la capture asynchrone pour accélérer les confirmations de PaymentIntent.
La capture asynchrone réduit la latence des confirmations de PaymentIntent en faisant en sorte que l’opération de capture se déroule en arrière-plan. Après avoir effectué la demande de capture, votre intégration reçoit une réponse positive et Stripe finalise la capture du paiement dans le back-end. Pour utiliser ces captures de PaymentIntent plus rapides, définissez le paramètre capture_
lors de la confirmation d’un PaymentIntent.
Accepter la capture asynchrone
Pour mettre à niveau votre intégration existante et ajouter la prise en charge de la capture asynchrone, utilisez automatic_
comme méthode de capture lors de la création d’un PaymentIntent. La spécification du paramètre capture_
est facultative, car Stripe active la fonctionnalité par défaut dans la dernière version de l’API.
Il se peut que vous deviez apporter des modifications supplémentaires lorsque vous optez pour la capture asynchrone, car la réponse de l’API et certains webhooks ont un comportement différent de celui des autres méthodes de capture.
Pour tous les paiements, la balance_transaction est null
pour les objets suivants. Pour les paiements Connect, le transfer et l’application_fee sont également null
pour les objets suivants :
- l’objet Charge joint à la réponse de l’API
- webhook charge.succeeded
- webhook payment_intent.succeeded
Objet Charge modifié sur le webhook charge.succeeded :
# Charge Object { "id": "ch_123", "object": "charge", "amount_captured": 1000, # the capture has happened "application_fee_amount": 100, "captured": true, "balance_transaction": "txn_123", # applicable to all charges. "transfer": "tr_123", # applicable to destination charge only. "application_fee": "fee_123", # applicable to destination charge only. "balance_transaction": null, # object might not be created yet, might be shown as nil. "transfer": null, # object might not be created yet, might be shown as nil. "application_fee": null, # object might not be created yet, might be shown as nil. ... }
Modification de la réponse de l’API et du webhook payment_intent.succeeded : (varie selon la version de l’API)
Écoutez les webhooks pour recevoir une notification lorsque des données supplémentaires sont disponibles
Avertissement
Notre accord de niveau de service (SLA) pour le webhook charge.updated est d’une heure après la confirmation du PaymentIntent.
Vous pouvez écouter les webhooks pour vérifier l’état des objets qui sont initialement à l’état null
lors de l’utilisation de la capture asynchrone.
- Pour obtenir le balance_transaction, abonnez-vous à l’événement webhook charge.updated.
- Pour obtenir l’application_fee, abonnez-vous à l’événement webhook application_fee.created.
- Pour obtenir le transfer, abonnez-vous aux événements webhook transfer.created.
Webhooks pour la capture asynchrone
# charge.updated events { "data": { "id": "ch_123", "object": "charge", "amount": 100, "balance_transaction": "txn_123", # applicable to all charges. "transfer": "tr_123", # applicable to destination charge only. "application_fee": "fee_123", # applicable to destination charge only. ... }, previous_attributes: { "balance_transaction": null, # applicable to all charges. "transfer": null, # applicable to destination charge only. "application_fee": null, # applicable to destination charge only. } }
# transfer.created events { "data": { "id": "tr_123", "object": "transfer", "amount": 1000, ... } }
# application_fee.created events { "data": { "id": "fee_123", "object": "application_fee", "amount": 100, ... } }