API de caisse express

Présentation du point de terminaison Expédition et totaux d'Affirm Express Checkout, notamment la façon dont il retourne les options d'expédition, les taxes et les montants finaux de la commande lors du flux de caisse hébergé.

❗️

Vous souhaitez offrir Affirm Express Checkout ?
Contactez votre gestionnaire de compte Affirm pour confirmer la disponibilité et connaître les prochaines étapes pour construire vos API.

Aperçu

Affirm Express Checkout s’appuie sur un point de terminaison API hébergé par le commerçant pour compléter dynamiquement le processus de paiement dans l’expérience Affirm : point de terminaison Expédition et totaux. Ce point de terminaison permet à Affirm de recueillir les détails d’expédition des clients, de présenter des méthodes d’expédition valides, de calculer les taxes et les totaux, et de retourner les détails de la commande finalisés au commerçant après la confirmation du prêt.

En transférant la collecte d’adresses et le calcul de la caisse dans le flux hébergé d’Affirm, les commerçants peuvent réduire la complexité de la caisse tout en conservant un contrôle total sur la logique d’expédition, les prix et les calculs fiscaux en arrière-plan.

Types de points de terminaison pour l’expédition et les totaux

Le point de terminaison Expédition et totaux calcule et renvoie les options d’expédition disponibles ainsi que les totaux finaux de la commande en fonction de l’adresse de livraison du client pendant le passage à la caisse.

demande

En-têtes

En-têteTypeRequisDescription
X-Affirm-SignaturestringOuiUtilisé pour vérifier que la requête provient légitimement d'Affirm. Il contient un horodatage et un hachage HMAC-SHA512 du corps de la requête, signé avec votre clé API privée.
Content-TypestringOuiDoit être réglé sur application/json car le terminal accepte et retourne les charges utiles JSON.

corps

ChampTypeRequisDescription
order_idstringOuiIdentifiant marchand permettant de référencer la session de paiement en cours. Veuillez noter que vous êtes toujours tenu de fournir une confirmation order_id après le prêt.
currencystringOuiTrois lettres code de devise ISO en majuscules.
shippingShippingBilling.AddressOuiAdresse de livraison.
ShippingBilling.Address
ChampTypeRequisDescription
line1stringOuiLigne d'adresse 1 (p. ex. rue, boîte postale ou nom de l'entreprise).
line2stringNonAdresse ligne 2 (p. ex. appartement, suite, unité ou immeuble).
citystringOuiVille, quartier, banlieue, bourg ou village.
statestringOuiÉtat, comté, province ou région.
zipcodestringOuiCode postal.
countrystringOuiCode de pays à deux lettres (ISO 3166-1 alpha-2).

Réponse HTTP 200

corps

ChampTypeRequisDescription
order_idstringOuiIdentifiant marchand permettant de référencer la session de paiement en cours. Veuillez noter que vous êtes toujours tenu de fournir une confirmation order_id après le prêt.
currencystringOuiTrois lettres code de devise ISO en majuscules.
subtotalintegerOui

Montant total des articles dans le panier, à l'exclusion de toute taxe ou frais d'expédition, dans l'unité monétaire mineure du code ISO spécifié.

Exemple : 100 cents pour facturer 1,00 $ CA

shipping_optionsArray<Object> (ShippingOption)OuiLes options d'expédition disponibles ainsi que les totaux de commande associés.
ShippingOption
ChampTypeRequisDescription
shipping_typestringOui

Yes
A unique, merchant-generated identifier for the shipping option. This value is used to map the customer’s selection to your internal fulfillment records and must remain persistent throughout the session. Please ensure that each shipping option has its own unique shipping_type value.

Exemples :
  • « Shipping_ups_123 »,
  • « Shipping_fedex_456 »,
  • « instore_pickup_789 ».
shipping_labelstringOui

L'étiquette de méthode d'expédition affichée à l'utilisateur.

Exemple : « Livraison standard (7 à 10 jours) »

shipping_amountintegerOui

Le coût d’expédition dans l’unité monétaire mineure du code de devise ISO spécifié.

Exemple : 100 cents pour facturer 1,00 $

tax_amountintegerOui

Le montant total de la taxe dans l'unité monétaire mineure du code ISO spécifié.

Exemple : 100 cents pour facturer 1,00 $

totalintegerOui

Le montant total de la caisse dans l'unité monétaire mineure du code devise ISO spécifié.

Exemple : 100 cents pour facturer 1,00 $

Réponse HTTP 422

corps

ChampTypeRequisDescription
errorsArray<Object> (Error)OuiUn tableau d’un ou plusieurs objets d’erreur décrivant pourquoi la requête n’a pas pu être traitée. Doit contenir au moins un élément.

Error

ChampTypeRequisDescription
error_codeenumOuiUn des codes d’erreur Affirm prédéfinis.
messagestringOuiUne description de l'erreur.
fieldsstring[]NonLa propriété de la charge utile de la requête qui a causé l'erreur.
error_code Enum
Code d’erreurDescription
UNSUPPORTED_SHIPPING_ZONEUtilisé lorsque l'adresse est valide, mais que le commerçant ne livre pas dans cette région (par exemple, Hawaï/Alaska).
INVALID_SHIPPING_ADDRESSL'adresse fournie n'existe pas ou est mal formée.
ORDER_NOT_FOUNDLe order_id transmis dans la requête ne correspond pas à une session active ni à un panier dans le système du commerçant.
CURRENCY_MISMATCHLe système du commerçant ne prend pas en charge la devise spécifiée dans la requête (par exemple, le commerçant ne prend en charge que le dollar canadien, mais reçoit le dollar américain).
INVENTORY_UNAVAILABLEEntre l'initiation de la caisse et le calcul des totaux, des articles du tableau « items » ne sont plus en stock.
SHIPPING_METHOD_UNAVAILABLEAucune option d'expédition valide ne peut être générée pour l'adresse demandée (par exemple, des articles surdimensionnés vers une zone éloignée).
INTERNAL_SERVER_ERRORUne catégorie générique pour les pannes inattendues du backend côté commerçant ou les délais d’attente de la base de données lors du calcul.