> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sezzle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Integration

Le SDK Javascript peut être utilisé pour une intégration simple et légère, mais il inclut également un mode en contexte qui hébergera le paiement Sezzle dans un iframe modal ou une fenêtre pop-up.

<CardGroup cols="2">
  <Card title="Paiements" icon="cart-shopping-fast">
    Créez des paiements et capturez des paiements avec Sezzle.
  </Card>

  <Card title="Intégrations" icon="code-simple">
    Paiement dans un iframe, une fenêtre pop-up, ou redirection vers Sezzle.
  </Card>

  <Card title="Paiements" icon="money-check-dollar-pen">
    Gérez le succès, l'échec ou l'annulation du paiement avec vos commandes Sezzle.
  </Card>

  <Card title="Bouton Sezzle" icon="badge-check">
    Affichez le bouton de paiement Sezzle sur votre boutique.
  </Card>
</CardGroup>

## Inclure le code SDK

Incluez le script suivant dans la `<head>` section de la page.

```html theme={"system"}
<script
    type="text/javascript"
    src="https://checkout-sdk.sezzle.com/checkout.min.js"
></script>
```

## Configuration du paiement

La première étape pour démarrer avec le SDK JavaScript direct est de configurer un nouvel objet Checkout.

### Options de configuration

<Tabs>
  <Tab title="Modèle">
    ```javascript theme={"system"}
    const checkoutSdk = new Checkout({
      mode: string,
      publicKey: string,
      apiMode: string,
      apiVersion: string,
    });
    ```
  </Tab>

  <Tab title="Exemple">
    ```javascript theme={"system"}
    const checkoutSdk = new Checkout({
      mode: "popup",
      publicKey: "sz_pub_...",
      apiMode: "sandbox",
      apiVersion: "v2",
    });
    ```
  </Tab>

  <Tab title="Options">
    <ParamField path="mode" default="popup" type="string">
      Options disponibles : `popup`, `iframe`, `redirect`

      <Warning>
        Si vous utilisez le mode `iframe`, ajoutez `*.sezzle.com` à la liste d'autorisation de la politique de sécurité du contenu (CSP) de votre site afin que l'iframe de paiement Sezzle puisse se charger.
      </Warning>

      <Note>
        * **popup** (recommandé) : fonctionne immédiatement pour la plupart des intégrations SDK basées sur un navigateur.
        * **iframe** : requis lorsque les pop-ups sont bloquées (par exemple, dans une webview ou un navigateur intégré). Sezzle doit d'abord activer l'iframe pour votre ou vos domaines — soumettez votre UUID Marchand et les domaines à autoriser par environnement (sandbox et production). Par exemple : *veuillez activer uat1.mysite.com, uat2.mysite.com en sandbox et [www.mysite.com](http://www.mysite.com), mysite.com en production*.
        * **redirect** : pris en charge mais généralement moins utile avec le SDK, car la valeur du SDK réside dans le paiement en contexte et la messagerie de fenêtre.
      </Note>
    </ParamField>

    <ParamField path="publicKey" type="string" required>
      Utilisé lors de la création d'un paiement ou de la capture d'un paiement. Trouvez vos clés API sur [https://dashboard.sezzle.com/merchant/settings/apikeys](https://dashboard.sezzle.com/merchant/settings/apikeys)
    </ParamField>

    <ParamField path="apiMode" default="live" type="string">
      Environnement dans lequel le paiement doit être effectué

      Options disponibles : `live`, `sandbox`
    </ParamField>

    <ParamField path="apiVersion" default="v2" type="string">
      La version de l'API Sezzle Checkout que le SDK appellera. Utilisez `v2` sauf indication contraire.

      Options disponibles : `v2`
    </ParamField>
  </Tab>
</Tabs>

## Option de paiement

Cette section explique comment présenter Sezzle comme méthode de paiement lors du paiement. Selon la conception de votre page web, vous pouvez souhaiter afficher Sezzle comme un bouton de méthode de paiement alternative (APM), une option radio dans une liste de méthodes de paiement, et/ou comme un bouton de soumission alternatif. Voici quelques exemples de mise en œuvre du composant front-end.

<Note>
  Si vous souhaitez utiliser un design différent des options affichées ci-dessous, veuillez vous référer à nos [Directives de co-marquage](https://sezzle.com/brand-assets/) pour les messages approuvés et l'utilisation acceptable du logo Sezzle.
</Note>

### Sezzle dans le tableau des méthodes de paiement

Voici un exemple de Sezzle comme radio de méthode de paiement.

<Tabs>
  <Tab title="Image">
    <Frame>
      <img src="https://mintcdn.com/sezzle/kTEIf2sm4ufO8y92/images/docs/guides/direct/payment-methods-table.png?fit=max&auto=format&n=kTEIf2sm4ufO8y92&q=85&s=762e57fa2bccb357a6cbc9ff3584ea60" alt="Payment Methods Table" width="299" height="176" data-path="images/docs/guides/direct/payment-methods-table.png" />
    </Frame>
  </Tab>

  <Tab title="Exemple d'extrait">
    *Cet exemple d'extrait est fourni à titre informatif uniquement. Veuillez suivre le format HTML établi de vos méthodes de paiement existantes.*

    ```html theme={"system"}
            <div class="payment-method-tile">
                <input type="radio" id="sezzlepay" value="sezzlepay"/>
                <label for="sezzlepay">
                    <div style="width: 100%; display: inline; align-items: center; justify-content: left;">
                        <img src="https://media.sezzle.com/branding/2.0/Sezzle_Logo_FullColor.svg" alt="Sezzle" style="height: 20px; width: fit-content; padding: 0px 4px 0 2px; position: relative; top: 4px;"/>
                        <span>Buy Now, Pay Later</span>
                    </div>
                </label>
            </div>
    ```
  </Tab>
</Tabs>

### Bouton Sezzle

L'option bouton est disponible en tant que composant de cette bibliothèque SDK. Elle est composée de deux parties : l'espace réservé d'élément configurable et la fonction de rendu.

#### Configuration du bouton Sezzle

Placez l'extrait d'élément de l'onglet Modèle à l'endroit où vous souhaitez que le bouton Sezzle soit rendu sur la page, puis mettez à jour les attributs Options selon vos besoins.

<Tabs>
  <Tab title="Image">
    <CardGroup cols={2}>
      <Card img="https://mintcdn.com/sezzle/kTEIf2sm4ufO8y92/images/docs/guides/direct/APM-button.png?fit=max&auto=format&n=kTEIf2sm4ufO8y92&q=85&s=6163d313f6d04988cfb870235ef5930c" width="1078" height="590" data-path="images/docs/guides/direct/APM-button.png">
        Sezzle comme bouton aux côtés d'autres APM
      </Card>

      <Card img="https://mintcdn.com/sezzle/kTEIf2sm4ufO8y92/images/docs/guides/direct/Submit%20button.png?fit=max&auto=format&n=kTEIf2sm4ufO8y92&q=85&s=df631a88ccfc6360d01f2961107e5ae0" width="1096" height="738" data-path="images/docs/guides/direct/Submit button.png">
        Sezzle comme bouton de soumission en alternative au bouton par défaut
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Modèle">
    ```html theme={"system"}
    <div id="sezzle-smart-button-container" style="text-align: center"></div>
    ```
  </Tab>

  <Tab title="Exemple">
    ```html theme={"system"}
    <div
        id="sezzle-smart-button-container"
        style="text-align: center"
        templateText="Pay with %%logo%%"
        borderType="semi-rounded"
        customClass="action,primary,checkout"
    ></div>
    ```
  </Tab>

  <Tab title="Options">
    <ParamField path="templateText" default="Checkout with %%logo%%" type="string">
      Texte à afficher à l'intérieur du bouton. Utilisez `%%logo%%` dans le texte pour afficher l'image Sezzle
    </ParamField>

    <ParamField path="theme" type="string" default="light">
      Le thème correspond à la couleur d'arrière-plan de votre site. Si `theme`: `dark`, le bouton sera blanc avec du texte sombre. Sinon, le bouton sera violet foncé avec du texte blanc.

      Options disponibles : `dark`, `light`
    </ParamField>

    <ParamField path="borderType" type="string" default="square">
      Options disponibles : `square`, `semi-rounded`
    </ParamField>

    <ParamField path="customClass" type="string">
      Classes personnalisées à appliquer
    </ParamField>

    <ParamField path="paddingTop" default="1px" type="string">
      Espace vide entre le haut du contenu et le bord supérieur du bouton
    </ParamField>

    <ParamField path="paddingBottom" default="7px" type="string">
      Espace vide entre le bas du contenu et le bord inférieur du bouton
    </ParamField>

    <ParamField path="paddingLeft" default="30px" type="string">
      Espace vide entre le côté gauche du contenu et le bord gauche du bouton
    </ParamField>

    <ParamField path="paddingRight" default="30px" type="string">
      Espace vide entre le côté droit du contenu et le bord droit du bouton
    </ParamField>

    <ParamField path="sezzleImageWidth" default="84px" type="string">
      Largeur du logo Sezzle à l'intérieur du bouton
    </ParamField>

    <ParamField path="sezzleImagePositionTop" type="string">
      CSS `top` décalage pour le logo Sezzle à l'intérieur du bouton (par ex., `2px`).
    </ParamField>

    <ParamField path="sezzleImagePositionBottom" type="string">
      CSS `bottom` décalage pour le logo Sezzle à l'intérieur du bouton (par ex., `2px`).
    </ParamField>

    <ParamField path="sezzleImagePositionLeft" type="string">
      CSS `left` décalage pour le logo Sezzle à l'intérieur du bouton (par ex., `2px`).
    </ParamField>

    <ParamField path="sezzleImagePositionRight" type="string">
      CSS `right` décalage pour le logo Sezzle à l'intérieur du bouton (par ex., `2px`).
    </ParamField>

    <ParamField path="letterSpacing" type="string">
      Espacement entre les lettres du templateText.
    </ParamField>

    <ParamField path="width" type="string">
      Largeur du bouton
    </ParamField>

    <ParamField path="height" default="4.2em" type="string">
      Hauteur du bouton.
    </ParamField>
  </Tab>
</Tabs>

#### Afficher le bouton Sezzle

Ajoutez la fonction suivante pour afficher le bouton au moment approprié, par exemple lorsque la section des méthodes de paiement se charge, ou lorsque Sezzle est sélectionné comme méthode de paiement. Le paramètre correspond à l'élément créé à l'étape précédente.

```javascript theme={"system"}
checkoutSdk.renderSezzleButton("sezzle-smart-button-container");
```

## Initialiser le paiement

### Gestionnaires d'événements

Le SDK utilise ces gestionnaires d'événements pour informer votre site de ce qui se passe lors du paiement. Implémentez chacun d'eux pour réagir aux actions de l'acheteur, comme compléter, annuler ou rencontrer une erreur.

<Tabs>
  <Tab title="Modèle">
    ```javascript theme={"system"}
    checkoutSdk.init({
      onClick: function () {
        event.preventDefault();
        checkoutSdk.startCheckout({...});
      },
      onComplete: function (response) {
        console.log(response.data);
      },
      onCancel: function () {
        console.log("Checkout cancelled.");
      },
      onFailure: function () {
        console.log("Checkout failed.");
      },
    });
    ```
  </Tab>

  <Tab title="Exemple">
    ```javascript expandable theme={"system"}
    checkoutSdk.init({
      onClick: function () {
        event.preventDefault();
        checkoutSdk.startCheckout({
          checkout_payload: {
            order: {
              intent: "AUTH",
              reference_id: "543645yg5tg5675686",
              description: "sezzle-store - #12749253509255",
              order_amount: {
                amount_in_cents: 10000,
                currency: "USD",
              },
            },
          },
        });
      },
      onComplete: function (response) {
        alert("Completed transaction. Capture started.");
        checkoutSdk
        .capturePayment(response.data.order_uuid, {
            capture_amount: {
            amount_in_cents: 10000,
            currency: "USD",
            },
            partial_capture: false,
        })
        .then((r) => {
            console.log(r);
        });
      },
      onCancel: function () {
        console.log("Checkout cancelled.");
      },
      onFailure: function () {
        console.log("Checkout failed.");
      },
    });
    ```
  </Tab>

  <Tab title="Options">
    <ParamField path="onClick" type="function" required>
      S'exécute lorsque l'acheteur clique sur le bouton Sezzle.

      Utilisez cette fonction pour créer la session de paiement Sezzle et diriger l'acheteur dans ce flux.

      <Note>
        Voir [Initialisation du paiement](#checkout-initialization) section pour `startCheckout` options de payload.
      </Note>
    </ParamField>

    <ParamField path="onComplete" type="function" required>
      S'exécute lorsque le paiement Sezzle se termine avec succès. Utilisez ceci pour enregistrer la commande et, si vous avez utilisé `intent: AUTH`, pour capturer le paiement.

      <Note>
        Voir [Capture du paiement](#capture-payment) section pour `capturePayment` options de payload.
      </Note>

      <Expandable title="paramètres">
        <ParamField path="response" type="object">
          La réponse de complétion du paiement

          <Expandable title="attributs enfants">
            <ParamField path="data" type="object">
              Données de complétion du paiement

              <Expandable title="attributs enfants">
                <ParamField path="status" type="string">
                  `"success"`
                </ParamField>

                <ParamField path="checkout_uuid" type="string">
                  UUID du paiement
                </ParamField>

                <ParamField path="session_uuid" type="string">
                  UUID de session
                </ParamField>

                <ParamField path="order_uuid" type="string">
                  UUID de commande
                </ParamField>
              </Expandable>
            </ParamField>

            <ParamField path="origin" type="string">
              URL d'origine de la fenêtre de paiement
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="onCancel" type="function" required>
      S'exécute lorsque l'acheteur quitte le paiement Sezzle avant d'avoir terminé le paiement. Utilisez ceci pour mettre à jour le statut de la commande dans votre système.

      <Expandable title="paramètres">
        <ParamField path="response" type="object">
          La réponse à l'événement d'annulation

          <Expandable title="attributs enfants">
            <ParamField path="data" type="object">
              Données de l'événement d'annulation

              <Expandable title="attributs enfants">
                <ParamField path="status" type="string">
                  `"cancel"`
                </ParamField>

                <ParamField path="checkout_uuid" type="string">
                  L'UUID du paiement qui a échoué
                </ParamField>

                <ParamField path="session_uuid" type="string">
                  UUID de session
                </ParamField>

                <ParamField path="order_uuid" type="string">
                  UUID de commande
                </ParamField>
              </Expandable>
            </ParamField>

            <ParamField path="origin" type="string">
              URL d'origine de la fenêtre de paiement
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="onFailure" type="function" required>
      S'exécute lorsque le paiement Sezzle ne parvient pas à se charger ou rencontre une erreur. Utilisez ceci pour mettre à jour le statut de la commande et signaler l'échec à l'acheteur.

      <Expandable title="paramètres">
        <ParamField path="response" type="object">
          La réponse à l'échec

          <Expandable title="attributs enfants">
            <ParamField path="data" type="object">
              Objet d'erreur ou réponse d'erreur API. Lorsque `data` est un `Error`:

              <Expandable title="attributs enfants">
                <ParamField path="status" type="string">
                  `"failure"`
                </ParamField>

                <ParamField path="checkout_uuid" type="string">
                  L'UUID du paiement qui a échoué
                </ParamField>

                <ParamField path="session_uuid" type="string">
                  UUID de session
                </ParamField>

                <ParamField path="order_uuid" type="string">
                  UUID de commande
                </ParamField>

                <ParamField path="message" type="string">
                  Message d'erreur (par ex., `"Public Key is missing."`)
                </ParamField>
              </Expandable>
            </ParamField>

            <ParamField path="origin" type="string">
              URL d'origine de la fenêtre de paiement
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>
  </Tab>
</Tabs>

### Initialisation du paiement

<Tabs>
  <Tab title="Modèle">
    ```javascript theme={"system"}
    checkoutSdk.startCheckout({
      checkout_payload: {
        order: {
          intent: string,
          reference_id: string,
          description: string,
          order_amount: {
            amount_in_cents: integer,
            currency: string,
          },
        },
      },
    });
    ```
  </Tab>

  <Tab title="Exemple">
    ```javascript theme={"system"}
    checkoutSdk.startCheckout({
      checkout_payload: {
        order: {
          intent: "AUTH",
          reference_id: "543645yg5tg5675686",
          description: "sezzle-store - #12749253509255",
          order_amount: {
            amount_in_cents: 10000,
            currency: "USD",
          },
        },
      },
    });
    ```
  </Tab>

  <Tab title="Options">
    Le `checkout_payload` le schéma reflète le [Create Session](/fr/docs/api/core/sessions/postv2session) corps de la requête. Consultez ce document de référence pour la liste complète des champs, types et contraintes.
  </Tab>
</Tabs>

<Note>
  Vous pouvez également démarrer le paiement par URL :

  ```javascript theme={"system"}
  checkout.startCheckout({
      checkout_url: "https://checkout.sezzle.com/?id=example",
  });
  ```
</Note>

Le `startCheckout` la méthode doit être implémentée dans le paiement `onClick` gestionnaire. Il existe deux façons de démarrer le paiement :

* **Avec un payload de paiement** — passez l'objet de session complet en ligne (comme indiqué ci-dessus). Les URL d'annulation et de finalisation sont facultatives pour `iframe` et `popup` mode.
* **Avec une URL de paiement existante** — appelez `startCheckout({ checkout_url })`. Le SDK `mode` doit correspondre au `checkout_mode` que vous avez utilisé lors de la [création de la session](/fr/docs/api/core/sessions/postv2session). Pour `iframe` et `popup`, incluez le `origin` de la fenêtre parente dans les URL d'annulation et de finalisation.

<Note>
  **Tokenisation du client :** l'UUID du client n'est pas transmis via `onComplete`. Pour le recevoir, abonnez-vous à l'événement webhook [customer.tokenized](/fr/docs/api/core/webhooks/postv2webhooks#valid-webhook-events).
</Note>

### Paiement finalisé par payload

```javascript theme={"system"}
function onCompleteHandler(event) {
    var data = event.data || Object.create(null);

    console.log("session data:", data.session_uuid, data.order_uuid);
}

checkout.init({
    onComplete: onCompleteHandler,
});
```

### Paiement finalisé par URL

```javascript theme={"system"}
function onCompleteHandler(event) {
    var data = event.data || Object.create(null);

    console.log("checkout data:", data.checkout_uuid);
}

checkout.init({
    onComplete: onCompleteHandler,
});
```

### Capture du paiement

<Note>
  Ignorez cette étape si vous avez utilisé l'intention `CAPTURE` lors du démarrage du paiement — Sezzle capture la commande automatiquement.
</Note>

<Tabs>
  <Tab title="Modèle">
    ```javascript theme={"system"}
    var payload = {
        capture_amount: {
            amount_in_cents: integer,
            currency: string,
        },
    };

    checkout.capturePayment(data.order_uuid, payload);
    ```
  </Tab>

  <Tab title="Exemple">
    ```javascript theme={"system"}
    var payload = {
        capture_amount: {
            amount_in_cents: 5000,
            currency: "USD",
        },
    };

    checkout.capturePayment(data.order_uuid, payload);
    ```

    La méthode de capture du paiement nécessite deux paramètres, le `order_uuid` et le payload tel que détaillé dans le [Capture Amount By Order Object](/fr/docs/api/core/orders/postv2capturebyorder).
  </Tab>

  <Tab title="Options">
    Le `capturePayment` le corps de la requête reflète le [Capture by Order](/fr/docs/api/core/orders/postv2capturebyorder) corps de la requête. Consultez ce document de référence pour la liste complète des champs, types et contraintes.
  </Tab>
</Tabs>

## Plan de versements

```javascript theme={"system"}
const checkout = new Checkout({});
checkout.getInstallmentPlan(1000);
```

<Tabs>
  <Tab title="Modèle">
    ```json theme={"system"}
    {
        "schedule": string,
        "totalInCents": integer,
        "installments": [
            {
                "installment": integer,
                "amountInCents": integer,
                "dueDate": string
            }
        ]
    }
    ```
  </Tab>

  <Tab title="Exemple">
    ```json theme={"system"}
    {
        "schedule": "bi-weekly",
        "totalInCents": 1000,
        "installments": [
            {
                "installment": 1,
                "amountInCents": 250,
                "dueDate": "2020-10-14"
            },
            {
                "installment": 2,
                "amountInCents": 250,
                "dueDate": "2020-10-28"
            },
            {
                "installment": 3,
                "amountInCents": 250,
                "dueDate": "2020-11-11"
            },
            {
                "installment": 4,
                "amountInCents": 250,
                "dueDate": "2020-11-25"
            }
        ]
    }
    ```
  </Tab>

  <Tab title="Options">
    <ParamField path="schedule" default="bi-weekly" type="string">
      Cadence de paiement pour le plan de versements
    </ParamField>

    <ParamField path="totalInCents" type="integer">
      Montant total de la commande en centimes
    </ParamField>

    <ParamField path="installments" type="array">
      Détail de chaque paiement dû

      <Expandable>
        <ParamField path="installment" type="integer">
          Numéro du versement dans la série
        </ParamField>

        <ParamField path="amountInCents" type="integer">
          Montant du versement en centimes
        </ParamField>

        <ParamField path="dueDate" type="string">
          Date d'échéance du versement
        </ParamField>
      </Expandable>
    </ParamField>
  </Tab>
</Tabs>

Cette fonction fournira les détails du versement en fonction d'un montant en centimes. Un [paiement](#checkout-initialization) existant peut être utilisé, ou un `checkout` sans aucune configuration peut également être utilisé pour obtenir rapidement les détails du versement.
