Gestion des transactions Split Capture

Découvrez comment gérer les états des transactions dans votre passerelle de paiement, y compris l'autorisation, la capture des transactions, et plus encore.

Aperçu

Les transactions représentent les prêts Affirm émis au consommateur. Vous pouvez interagir avec les transactions via l'API Transaction pour modifier l'état d'une transaction, mettre à jour les métadonnées ou récupérer des détails.


Autorisation

L'autorisation se produit lorsqu'un utilisateur a terminé avec succès le flux de paiement Affirm et retourne sur le site du commerçant. L'autorisation de la transaction génère un transaction_id ex : (A1B2-C3D4), que vous utiliserez pour référencer ce prêt à l’avenir.

Le point de terminaison de la ressource Autoriser crée un prêt et réserve les fonds. Lorsque vous autorisez, Affirm génère un transaction_id que vous utiliserez pour faire référence à la transaction. Vous devez autoriser une transaction pour terminer sa création.

❗️

Autorisation du prêt

Si vous n'autorisez pas un prélèvement, le prêt ne sera pas activé. L'utilisateur ne verra pas le prêt, et vous ne pourrez pas capturer les fonds. Pour éviter cela, autorisez le prêt dès que vous recevez un checkout token.

curl https://sandbox.affirm.com/api/v1/transactions \
     -X POST \
     -u "<public_api_key>:<private_api_key>" \
     -H "Content-Type: application/json" \
     -d '{"transaction_id": "<checkout_token>","order_id": "JKLM4321"}'

Vous devriez recevoir une réponse qui ressemble à l'exemple ci-dessous avec le transaction_id.

{
   "amount": 6100,
   "amount_refunded": 0,
   "authorization_expiration": "2019-01-01T00:00:00Z",
   "checkout_id": "A1B2C3D4E5F6G7H8",
   "created": "2019-01-01T00:00:00Z",
   "currency": "USD",
   "id": "A1B2-C3D4",
   "order_id": "JKLM4321",
   "provider_id": 1,
   "status": "authorized"
}

Après avoir autorisé une transaction et reçu le montant autorisé, l’utilisateur sera redirigé vers la page user_confirmation_url sur votre site, qui fera ce qui suit :

  • Validez que le montant autorisé correspond au total de la commande.
  • Redirigez le client vers la page de confirmation de commande ou affichez un message de confirmation de commande.
  • Conserve le transaction_id.
  • Marquez le paiement de la commande comme étant en attente.

Si l'autorisation échoue, l'utilisateur sera redirigé vers la page user_cancel_url sur votre site, qui fera ce qui suit :

  • Rediriger le client vers la page d'erreur de commande ou indiquer que la commande est incomplète.
  • Conserver potentiellement cette tentative de paiement, ce qui n'est pas obligatoire de notre côté.

📘

Autoriser un prêt Affirm

Vous ne devez autoriser un prêt Affirm donné qu'une seule fois, pour le montant total de la
transaction en cours d'achat.


Gestion des transactions

Vous pouvez intégrer les points d'accès Transaction dans votre système dorsal de gestion des commandes, où vous traitez les commandes et effectuez les paiements.

L'API Transaction vous permet de gérer la transaction à travers différents états tels que autorisée, capturée et annulée.

Si vous souhaitez lire ou mettre à jour les informations du prêt, vous pouvez utiliser les statuts read et update .


Capturer une transaction

Après avoir traité une commande, vous devez envoyer une requête Capture Transaction API à Affirm, afin de capturer ou de régler les fonds. Vous voudrez effectuer cette activité à partir de vos systèmes dorsaux sécurisés. Pour capturer une transaction autorisée, vous aurez besoin ducharge_id fourni dans la réponse API Autorisation. Il n'y a pas de champs obligatoires à enregistrer dans la réponse capture.

La capture des fonds est similaire à celle d'une transaction par carte de crédit. Après avoir capturé le prêt, nous procédons comme suit :

  • Informer le client que le prêt a été saisi et que son premier paiement sera dû à l’avenir.
  • Payer le commerçant dans 2 à 3 jours ouvrables.

Pour les Split Cpatures, vous pouvez capture le prêt dans vos incréments souhaités en spécifiant le paramètre amount pour chaque demande de capture unique dans la fenêtre d'autorisation.

❗️

Montant

Si vous ne transmettez pas un montant précis dans la requête capture, le montant total sera capturé.


Fenêtre d'autorisation

Toutes les captures doivent se produire dans la fenêtre d'autorisation définie. À l’expiration de la période d’autorisation, les montants non capturés seront remboursés au prêt du client et ne pourront plus être récupérés. Travaillez avec votre homologue technique pour vous assurer que la fenêtre d’autorisation est définie correctement selon vos délais d’expédition. La fenêtre d'authentification par défaut est par ailleurs fixée à 30 jours.

curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":"50000", "order_id": "{order_id}", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'

Vous recevrez ensuite une réponse avec la confirmation.

{
  "fee": 600,
  "created": "2016-03-18T00:03:44Z",
  "order_id": "JKLM4321",
  "currency": "USD",
  "amount": 50000,
  "type": "capture",
  "id": "O5DZHKL942503649",
  "transaction_id": "6dH0LrrgUaMD7Llc"
}

Captures, remboursements et annulations multiples

Pour collecter des fonds par incréments, envoyez une requête Capture Transaction API pour le montant spécifié dans la fenêtre d'autorisation. Par exemple, si votre fenêtre d'autorisation est de 30 jours, vous pouvez créer une requête unique capture pour chaque article de la commande dans ce délai de 30 jours. Vous pouvez également utiliser le point de terminaison d'annulation pour annuler les fonds non collectés et le point de terminaison de remboursement pour traiter les remboursements pour les fonds partiellement capturés.


Exemples

Vous trouverez ci-dessous des exemples de cas d’utilisation courants de Split Capture, où nous vous guidons dans la soumission de plusieurs requêtes capture. Ces exemples concernent une entreprise fictive, Prometheus Furniture, qui vend des meubles et des appareils électroménagers. En raison de la forte demande de leurs meubles, ils expédient généralement des articles pour plusieurs commandes à différents moments.

Exemple 1 : capturer tous les fonds

Prometheus Furniture vient de passer une commande pour un canapé de 400 dollars et un bureau d'ordinateur de 600 dollars, soit un total de 1 000 dollars. Dans l'exemple ci-dessous, le canapé est prêt à être expédié immédiatement, tandis que le bureau d'ordinateur prendra plus de temps.

Tout d'abord, il autorisera le prêt pour un montant total de 1000 $.

curl https://sandbox.affirm.com/api/v1/transactions \
     -X POST \
     -u "<public_api_key>:<private_api_key>" \
     -H "Content-Type: application/json" \
     -d '{"transaction_id": "<checkout_token>","order_id": "JKLM4321"}'

Ensuite, Prometheus Furniture envoie une demande capture en spécifiant le amount pour 400 dollars au premier jour du prêt.

#First capture for $400
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":40000, "order_id": "JKLM4321", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'

26 jours plus tard, lorsque le bureau d'ordinateur est prêt à être expédié, Prometheus Furniture soumet une autre requête de capture en précisant le montant restant de 600 dollars.

#Second capture for $600
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":60000, "order_id": "JKLM4321", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'

Exemple 2 : capturer une quantité inférieure à la totalité avec une annulation partielle

Parfois, les clients demandent un prêt supérieur au montant qu'ils finissent par dépenser en raison de l'annulation d'un article ou d'un ajustement fiscal. Dans l’exemple ci-dessous, un client contracte un prêt de 1 000 $, mais commande deux tabourets de bar à 300 $, des meubles de patio à 500 $ et une chaise à 200 $. Après avoir autorisé le montant total du prêt, Prometheus saisit les fonds pour les tabourets de bar en spécifiant le paramètre amount de 300 $.

#First capture for $300
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":30000, "order_id": "JKLM4421", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'

Lorsque le meubles de patio est prêt à être expédié le 13 ème jour, le deuxième montant est prélevé pour le meuble de patio.

#Second capture for $500
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":50000, "order_id": "JKLM4421", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'

La chaise initialement commandée a été annulée avant d'être expédiée. Par conséquent, Prometheus Furniture n’a pas saisi les 200 $, mais plutôt soumis une requête Void dans la fenêtre d'autorisation du montant restant.

#Void $200
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/void \
    -X POST \
    -H "Content-Type: application/json" \
    -u "{public_api_key}:{private_api_key}" \
    -d '{"amount":20000}'

Exemple 3 : capturer tous les fonds avec un remboursement

Dans cet exemple, le client a décidé d'acheter un nouveau tapis pour 200 $ et un nouveau réfrigérateur pour 800 $. Après l'autorisation initiale, Prometheus Furniture envoie cette première requête de capture pour 200 $.

#First capture for $200
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":20000, "order_id": "JKLM5431", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'

Prometheus peut livrer le réfrigérateur au client un peu plus tôt que d’habitude et saisit le deuxième montant pour 800 $ le jour 4.

#Second capture for $800
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":80000, "order_id": "JKLM5431", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'

Le client était très excité d’obtenir ses articles rapidement, mais n’aimait pas vraiment le contraste entre le tapis et les couleurs de son salon. Heureusement, Prometheus Furniture a une excellente politique de remboursement et a initié un remboursement pour le client lorsqu'ils l'ont découvert. Cette fois, ils utiliseront l'API Refund pour créditer les 200 $ au client.

curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/refund \
    -X POST \
    -H "Content-Type: application/json" \
    -u "{public_api_key}:{private_api_key}" \
    -d '{"amount": 20000}'

Bien que Prometheus Furniture ait finalement capture la totalité du prêt, ils ont remboursé le montant demandé au client, qui sera appliqué à la fin du prêt.

Exemple 4 : le prêt partiellement capturé doit être annulé et remboursé

Pour cet exemple, un client a commandé une table de salle à manger pour 1000 $ et 6 chaises pour 1200 $. Prometheus furniture capture alors le premier montant de 1000 $ pour la table de salle à manger.

#First capture for $1000
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
     -X POST \
     -u "{public_api_key}:{private_api_key}" \
     -H "Content-Type: application/json" \
     -d '{"amount":100000, "order_id": "JKLM5555", "shipping_carrier":   "USPS", "shipping_confirmation": "1Z23223"}'

Lorsque la table arrive chez le client, celui-ci se rend compte qu'elle est beaucoup trop grande pour sa salle à manger et décide de la retourner. Maintenant que la table est retournée, les chaises de salle à manger ne sont plus nécessaires et le client demande l'annulation de la commande non exécutée. Pour annuler la commande, la première étape consiste à annuler le montant supplémentaire autorisé mais non capturé de 1 200 $.

#Voiding the authorized but uncaptured loan amount of $1200
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/void \
    -X POST \
    -H "Content-Type: application/json" \
    -u "{public_api_key}:{private_api_key}" \
    -d '{"amount":120000}

Après avoir annulé le montant de la transaction autorisé mais non saisi de 1 200 $, l'étape suivante consiste à rembourser le montant du prêt capturé de 1 000 $ pour la table à manger.

#Refunding the captured loan amount of $1000
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/refund \
    -X POST \
    -H "Content-Type: application/json" \
    -u "{public_api_key}:{private_api_key}" \
    -d '{"amount": 100000}'

Étant donné que le prêt a été partiellement capturé, mais que le client a décidé de retourner la table et d'annuler la commande des chaises, il était nécessaire d'annuler d'abord le montant de transaction autorisé mais non capturé de 1 200 $. Suivi d'un remboursement pour le montant du prêt partiellement capturé de 1 000 $.