Configurer la caisse express

Suivez ces étapes pour configurer la caisse express d’Affirm, y compris la configuration de la caisse, les options d’expédition et les calculs totaux.

❗️

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.

Conditions préalables

Étapes

1. Configurer l'objet Checkout

Vous devez configurer l’ objet de caisse d’Affirm spécifiquement pour le flux de paiement express :

  • Incluez checkout_type: « express » dans l’objet merchant.
  • Transmettez le tableau items et tous les autres attributs de caisse nécessaires.
  • (Optionnel, mais recommandé) Passez un order_id de caisse pour retracer la session de paiement dans votre système.
  • Exclure l'objet shipping et l'attribut total.
affirm.checkout({
  merchant: {
    checkout_type: "express", // ensure this attribute is passed for Express Checkout
    user_confirmation_url: "https://merchantsite.com/confirm",
    user_cancel_url: "https://merchantsite.com/cancel",
    public_api_key: "YOUR_PUBLIC_KEY",
    user_confirmation_url_action: "POST",
  },
  order_id: "abc123", // optional
  // exclude shipping & total attributes
  items: [{
    display_name: "Awesome Pants",
    sku: "ABC-123",
    unit_price: 10000
  }],
  // rest of checkout attributes
});

affirm.checkout.open();

2. Configurer le point de terminaison de l'API des options d'expédition

Fournir un point de terminaison API côté serveur pour les options d’expédition qui :

  • Accepte les articles du panier et l'adresse de livraison du client comme données d'entrée, et
  • Retourne toutes les options d'expédition valides disponibles pour la commande.

Consultez la page de l’API Express Caisse pour obtenir les définitions complètes des charges utiles des requêtes et des réponses.

Lors de la sélection de l’adresse d’expédition par l’utilisateur, Affirm envoie une requête avec une charge utile similaire à la suivante :

{
  "currency":"USD",
  // https://docs.affirm.com/developers/reference/the-item-object
  "items":[
    {
      "display_name":"Awesome Pants",
      "sku":"ABC-123",
      "unit_price":1999,
      "qty":3,
      "item_image_url":"http://merchantsite.com/images/awesome-pants.jpg",
      "item_url":"http://merchantsite.com/products/awesome-pants.html",
      "categories":[
        [
          "Apparel",
          "Pants"
        ],
        [
          "Mens",
          "Apparel",
          "Pants"
        ]
      ]
    }
  ],
  // https://docs.affirm.com/developers/reference/shipping-billing-object
  "shipping":{
    "address":{
      "line1":"325 Pacific Ave",
      "city":"San Francisco",
      "state":"CA",
      "zipcode":"94111",
      "country":"US"
    },
    "name":{
      "first":"John",
      "last":"Doe",
      "full":"John Doe"
    },
    "phone_number":"4151234567",
    "email":"[email protected]"
  },
  order_id: "abc123"
}

Si la requête est réussie, Affirm s'attend à une réponse HTTP 200 similaire à la suivante :

{
  "currency":"USD",
  "shipping_options":[
    {
      "shipping_id":1,
      "shipping_type":"Standard",
      "shipping_amount":0
    },
    {
      "shipping_id":2,
      "shipping_type":"Express",
      "shipping_amount":1000
    },
    {
      "shipping_id":3,
      "shipping_type":"Overnight",
      "shipping_amount":2000
    }
  ]
  order_id: "abc123"
}

Si la requête est infructueuse, Affirm s'attend à une réponse HTTP 422 similaire à ce qui suit :

{
  "error_code": "unsupported_shipping_zone",
  "message": "We currently do not offer shipping to Hawaii or Alaska.",
  "fields": ["shipping.address.state"],
}

3. Configurer le point de terminaison de l'API Total de la caisse

Fournir un point de terminaison API pour Total de la caisse qui :

  • Accepte les articles du panier et les informations de livraison du client, et
  • Retourne le montant d’expédition calculé, le montant de la taxe et le montant total de la commande pour la méthode d’expédition choisie.

Nous recommandons d'utiliser order_id pour suivre les sessions de caisse dans votre système. Voir la page de le API Paiement express pour les définitions complètes des requêtes et des réponses.

À la confirmation des détails d’expédition par l’utilisateur, Affirm envoie une requête avec une charge utile similaire à la suivante :

{
  // selected shipping option returned from the Shipping Options API Endpoint
  "selected_shipping_option":{
    "shipping_id":1,
    "shipping_type":"Standard",
    "shipping_amount":0
  }  
  // https://docs.affirm.com/developers/reference/the-item-object
  "items":[
    {
      "display_name":"Awesome Pants",
      "sku":"ABC-123",
      "unit_price":1999,
      "qty":3,
      "item_image_url":"http://merchantsite.com/images/awesome-pants.jpg",
      "item_url":"http://merchantsite.com/products/awesome-pants.html",
      "categories":[
        [
          "Apparel",
          "Pants"
        ],
        [
          "Mens",
          "Apparel",
          "Pants"
        ]
      ]
    }
  ],
  // https://docs.affirm.com/developers/reference/shipping-billing-object
  "shipping":{
    "address":{
      "line1":"325 Pacific Ave",
      "city":"San Francisco",
      "state":"CA",
      "zipcode":"94111",
      "country":"US"
    },
    "name":{
      "first":"John",
      "last":"Doe",
      "full":"John Doe"
    },
    "phone_number":"4151234567",
    "email":"[email protected]"
  },
}

Si la requête est réussie, Affirm s'attend à une réponse HTTP 200 similaire à la suivante :

{
  "currency":"USD",
  "shipping_amount": "1000",
  "shipping_type": "UPS Ground",
  "tax_amount": "800",
  "total": "11800"
}

Si la requête est infructueuse, Affirm s'attend à une réponse HTTP 422 similaire à ce qui suit :

{
  "error_code": "unsupported_shipping_zone",
  "message": "We currently do not offer shipping to Hawaii or Alaska.",
  "fields": ["shipping.address.state"],
}

4. Récupérer les détails de l'expédition

Si vous réussissez le order_id à l'étape 3 pour suivre la session de caisse dans votre système, cette étape est facultative.

Une fois que l'utilisateur a terminé avec succès son paiement Affirm, vous pouvez appeler l'API de lecture de caisse Affirm avec l'ID de caisse pour récupérer les informations complètes d'expédition et les détails de caisse :

{
  "total": 20000,
  "selected_shipping_option":{
    "shipping_id":1,
    "shipping_type":"Standard",
    "shipping_amount": 1000 // should match shipping_amount field below
  },
  "shipping_amount": 1000,  
  "shipping": {
    "name": {
      "full": "John Doe",
      "first": "John",
      "last": "Doe"
    },
    "address": {
      "city": "San Francisco",
      "country": "USA",
      "line1": "123 Example Street",
      "line2": "Apt 123",
      "state": "CA",
      "zipcode": "94107"
    },
    "email": "[email protected]",
    "phone_number": "1234567890"
  },
  "billing_frequency": "monthly",
  "currency": "USD",
  "meta": {
    "release": "string",
    "user_timezone": "America/Los_Angeles",
    "_affirm_tracking_uuid": "356a483a-86b2-4846-b6f2-70d37d95a78c"
  },
  "financial_program_external_name": "string",
  "financial_program_name": "standard_3_6_12",
  "checkout_flow_type": "classic",
  "billing": {
    "name": {
      "last": "string",
      "first": "string"
    },
    "phone_number": "1234567890",
    "email": "[email protected]"
  },
  "config": "string",
  "product_type": "string",
  "api_version": "v2",
  "metadata": {
    "checkout_channel_type": "online",
    "mode": "redirect"
  },
  "merchant": {
    "public_api_key": "string",
    "user_cancel_url": "string",
    "user_confirmation_url": "string",
    "user_confirmation_url_action": "string",
    "name": "string",
  },
  "product": "string",
  "order_id": "ABC123",
  "suppress_expiration_declination_messaging": true,
  "mfp_rule_input_data": {
    "items": {
      "sku_number": {
        "sku": 0,
        "item_url": "string",
        "display_name": "string",
        "unit_price": 0,
        "qty": 0,
        "item_type": "string",
        "item_image_url": "string"
      }
    },
    "total": 49999,
    "metadata": {
      "checkout_channel_type": "online",
      "mode": "redirect"
    },
    "financing_program": "string"
  },
  "loan_type": "classic",
  "chekcout_type": "merchant",
  "tax_amount": 0,
  "checkout_status": "string",
    "email": "[email protected]",
    "phone_number": "1234567890"
  },
  "use_adaptive": true,
  "financing_program": "string",
  "merchant_external_reference": "ab-12345"
}

5. Ajouter le bouton de paiement Affirm

Ajoutez le bouton de caisse Affirm pré-stylisé sur votre site web pour bénéficier du paiement express. Consultez le bouton caisse pour plus de détails.

Exemple:

<div class="affirm-checkout-button-container"
     data-page-type="product"
     data-size="large"
     data-theme="dark"
     data-shape="rounded"
     data-button-text="checkout"
>
</div>

Quelle est la prochaine étape?