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.
currencystringOuiThree-letter ISO currency code in uppercase.
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

Champ

Type

Requis

Description

order_id

string

Oui

Identifiant 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.

currency

string

Oui

Three-letter ISO currency code in uppercase.

subtotal

integer

Oui

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_options

Array<Object> (ShippingOption)

Oui

Les options d'expédition disponibles ainsi que les totaux de commande associés.

ShippingOption

Champ

Type

Requis

Description

shipping_type

string

Oui

Oui, un identifiant unique généré par le commerçant pour l'option d'expédition. Cette valeur est utilisée pour mapper la sélection du client à vos dossiers de traitement internes et doit rester constante pendant toute la session. Veuillez vous assurer que chaque option d’expédition a sa propre valeur shipping_type unique.

Exemples :

  • « Shipping_ups_123 »,
  • « Shipping_fedex_456 »,
  • « instore_pickup_789 ».

shipping_label

string

Oui

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

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

shipping_amount

integer

Oui

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_amount

integer

Oui

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

Exemple : 100 cents pour facturer 1,00 $

total

integer

Oui

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.
messagestringOuiA description of the error.
fieldsstring[]NonThe request payload property that caused the error.
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.