Le bouton de paiement express Sezzle est un outil puissant pour les marchands sur plateformes personnalisées. Intégré directement dans la page du panier, le bouton permet aux acheteurs de sélectionner Sezzle comme mode de paiement en un seul clic, en utilisant leur compte Sezzle pour une expérience de paiement fluide. Cette fonctionnalité est conçue pour réduire l’abandon de panier, augmenter le taux de conversion et améliorer la satisfaction des clients.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.
Installation
Inclure le code SDK
Incluez le script suivant dans la<head> section de la page.
<script
type="text/javascript"
src="https://checkout-sdk.sezzle.com/express_checkout.min.js"
></script>
Configuration du paiement
Options de configuration
- Modèle
- Exemple
- Options
const checkoutSdk = new Checkout({
mode: string,
publicKey: string,
apiMode: string,
apiVersion: string,
});
const checkoutSdk = new Checkout({
mode: "popup",
publicKey: "sz_pub_...",
apiMode: "live",
apiVersion: "v2",
});
Options disponibles :
popup, iframe, redirectSi 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.popup fonctionnera immédiatement, et Sezzle le recommande pour la plupart des intégrations SDK basées sur un navigateur.
Si votre paiement s’exécute dans une webview ou un navigateur intégré où les popups peuvent être bloqués, utilisez le mode iframe à la place. iframe ne fonctionnera pas correctement sans avoir préalablement contacté Sezzle. Pour des raisons de sécurité, Sezzle doit activer iframe pour votre ou vos domaines. Pour l’activer, veuillez soumettre une demande avec votre UUID marchand Sezzle et une liste de domaines à autoriser par environnement (production et sandbox). Par exemple, please enable uat1.mysite.com, uat2.mysite.com in sandbox and www.mysite.com, mysite.com in production.
redirect est également pris en charge, mais il est généralement moins utile avec le SDK car la principale valeur du SDK est de gérer l’expérience de paiement en contexte et la messagerie entre votre site et Sezzle.
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
Environnement dans lequel le paiement doit être effectuéOptions disponibles :
live, sandboxVersion du SDK de paiement SezzleOptions disponibles :
v2Bouton Sezzle
Configuration du bouton Sezzle
Créez un élément de remplacement pour que le bouton Sezzle soit rendu sur la ou les pages.- Modèle
- Exemple
- Options
<div
id="sezzle-smart-button-container"
style="text-align: center"
></div>
<div
id="sezzle-smart-button-container"
style="text-align: center"
templateText="Pay with %%logo%%"
borderType="semi-rounded"
customClass="action,primary,checkout"
></div>
Texte à afficher à l’intérieur du bouton. Utilisez
%%logo%% dans le texte pour
afficher l’image SezzleOptions disponibles :
square, semi-roundedClasses personnalisées à appliquer
Espace négatif entre le haut du contenu et le bord du bouton
Espace négatif entre le bas du contenu et le bord du bouton
Espace négatif entre le côté gauche du contenu et le bord du bouton
Espace négatif entre le côté droit du contenu et le bord du bouton
Largeur du logo Sezzle dans le bouton
Position du logo Sezzle depuis le haut.
Position du logo Sezzle depuis le bas.
Position du logo Sezzle depuis la gauche.
Position du logo Sezzle depuis la droite.
Espacement entre les lettres du templateText.
Largeur du bouton
Hauteur du bouton.
Afficher le bouton Sezzle
Nécessite que l’objet de paiement créé ci-dessus soit disponible pour afficher le bouton. Appelez renderSezzleButton en passant l’identifiant de l’élément de remplacement défini dans la Configuration du bouton, ci-dessus.await checkoutSdk.renderSezzleButton("sezzle-smart-button-container");
Initialiser le paiement
Gestionnaires d’événements
Le SDK nécessite les gestionnaires d’événements suivants qui peuvent être utilisés pour étendre les fonctionnalités de votre application.- Modèle
- Exemple
- Options
checkoutSdk.init({
onClick: function () {
event.preventDefault();
checkoutSdk.startCheckout({...});
},
onComplete: function (response) {
console.log(response.data);
},
onCancel: function () {
alert("Transaction cancelled.");
},
onFailure: function () {
alert("Transaction failed.");
},
onCalculateAddressRelatedCosts: async function (
shippingAddress,
order_uuid
) {
// Call authentication endpoint
const response = await fetch(
"https://gateway.sezzle.com/v2/authentication",
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
public_key: string,
private_key: string,
}),
}
);
const data = await response.json();
const token = data.token;
const updateResponse = await fetch(
`https://gateway.sezzle.com/v2/order/${order_uuid}/checkout`,
{
method: "PATCH",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
currency_code: string,
address_uuid: shippingAddress.uuid,
shipping_options: [
{
name: string,
description: string,
shipping_amount_in_cents: integer,
tax_amount_in_cents: integer,
final_order_amount_in_cents: integer
}
]
}),
}
);
const updateStatus = updateResponse.ok;
return {
ok: updateStatus,
};
},
});
checkoutSdk.init({
onClick: function () {
event.preventDefault();
checkoutSdk.startCheckout({
checkout_payload: {
// "cancel_url":{
// "href": "http://localhost:44300/demo/v2checkout.html"
// },
// "complete_url":{
// "href": "http://localhost:44300/demo/v2checkout.html"
// },
express_checkout_type: "multi-step",
order: {
intent: "AUTH",
reference_id: "543645yg5tg5675686",
description: "sezzle-store - #12749253509255",
requires_shipping_info: true,
items: [
{
name: "widget",
sku: "sku123456",
quantity: 1,
price: {
amount_in_cents: 1000,
currency: "USD",
},
},
],
discounts: [
{
name: "20% off",
amount: {
amount_in_cents: 1000,
currency: "USD",
},
},
],
metadata: {
location_id: "123",
store_name: "Downtown Minneapolis",
store_manager: "Jane Doe",
},
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 () {
alert("Transaction cancelled.");
},
onFailure: function () {
alert("Transaction failed.");
},
onCalculateAddressRelatedCosts: async function (
shippingAddress,
order_uuid
) {
// Call authentication endpoint
const response = await fetch(
"https://gateway.sezzle.com/v2/authentication",
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
private_key: sz_pr_...
public_key: sz_pub_...
}),
}
);
const data = await response.json();
const token = data.token;
const updateResponse = await fetch(
`https://gateway.sezzle.com/v2/order/${order_uuid}/checkout`,
{
method: "PATCH",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
currency_code: "USD",
address_uuid: shippingAddress.uuid,
shipping_options: [
{
name: "Standard Shipping",
description: "3-5 business days",
shipping_amount_in_cents: 2000,
tax_amount_in_cents: 3000,
final_order_amount_in_cents: 10200
},
{
name: "Express Shipping",
description: "1-2 business days",
shipping_amount_in_cents: 2000,
tax_amount_in_cents: 3000,
final_order_amount_in_cents: 10200
}
]
}),
}
);
const updateStatus = updateResponse.ok;
return {
ok: updateStatus,
};
},
});
Le bouton Sezzle est cliqué par l’utilisateur.
Voir Initialisation du paiement section pour les options de payload.
Le paiement Sezzle est effectué avec succès. Un paiement Sezzle complété avec succès déclenchera un événement vers le gestionnaire
onComplete. L’événement doit inclure un objet de données avec des données pertinentes pour le paramètre d’entrée de démarrage du paiement.Voir capturePayment section pour les options de payload.
Le paiement Sezzle est annulé. Si l’utilisateur quitte le paiement Sezzle pour quelque raison que ce soit, le gestionnaire
onCancel sera exécuté.Le paiement Sezzle a échoué. S’il y a une erreur lors du chargement de la page de paiement Sezzle, le gestionnaire
onFailure sera exécuté.Requis si
express_checkout_type est single-step ou multi-step. Une fois que l’acheteur a fourni son adresse de livraison via le paiement express Sezzle, cette fonction doit retourner les coûts de taxe et de livraison à Sezzle.Initialisation du paiement
- Modèle
- Exemple
- Options
checkoutSdk.startCheckout({
checkout_payload: {
// "cancel_url":{
// "href": string
// },
// "complete_url":{
// "href": string
// },
express_checkout_type: string,
order: {
intent: string,
reference_id: string,
description: string,
requires_shipping_info: boolean,
items: [
{
name: string,
sku: string,
quantity: integer,
price: {
amount_in_cents: integer,
currency: string,
},
},
],
discounts: [
{
name: string,
amount: {
amount_in_cents: integer,
currency: string,
},
},
],
metadata: {
some_property: string,
some_other_property: string
},
order_amount: {
amount_in_cents: integer,
currency: string,
},
},
},
});
checkoutSdk.startCheckout({
checkout_payload: {
// "cancel_url":{
// "href": "http://localhost:44300/demo/v2checkout.html"
// },
// "complete_url":{
// "href": "http://localhost:44300/demo/v2checkout.html"
// },
express_checkout_type: "multi-step",
order: {
intent: "AUTH",
reference_id: "543645yg5tg5675686",
description: "sezzle-store - #12749253509255",
requires_shipping_info: true,
items: [
{
name: "widget",
sku: "sku123456",
quantity: 1,
price: {
amount_in_cents: 1000,
currency: "USD",
},
},
],
discounts: [
{
name: "20% off",
amount: {
amount_in_cents: 1000,
currency: "USD",
},
},
],
metadata: {
location_id: "123",
store_name: "Downtown Minneapolis",
store_manager: "Jane Doe",
},
order_amount: {
amount_in_cents: 10000,
currency: "USD",
},
},
},
});
Les informations de requête HTTP utilisées pour rediriger le client en cas d’annulation
Afficher attributs enfants
Afficher attributs enfants
L’URL utilisée lors de la redirection d’un client
Les informations de requête HTTP utilisées pour rediriger le client à la fin de la session
Afficher attributs enfants
Afficher attributs enfants
L’URL utilisée lors de la redirection d’un client
single-step: il n’existe qu’une seule méthode de livraison, ou utiliser uniquement la méthode de livraison par défaut pour le flux de paiement express Sezzlemulti-step: permettre à l’utilisateur de choisir parmi les méthodes de livraison prises en charge par le marchandno-shipping: l’achat ne contient aucun article à expédier et l’acheteur n’a pas la possibilité de sélectionner, comme un téléchargement numérique ou un achat en ligne avec retrait en magasin (BOPIS)Poursingle-step andmulti-step,requires_shipping_infomust betrue. Forno-shipping,requires_shipping_infomust befalse`
single-step, multi-step, no-shippingLa commande pour cette session
Afficher attributs enfants
Afficher attributs enfants
Si votre flux de paiement nécessite que l’utilisateur confirme son paiement sur votre site après avoir été approuvé par Sezzle, utilisez “AUTH” comme intention. Si vous préférez que le paiement soit capturé immédiatement, utilisez “CAPTURE”.Options disponibles :
AUTH, CAPTUREVotre identifiant de référence pour cette commande (doit contenir uniquement des caractères alphanumériques, des tirets (-) et des underscores (_))
Votre description pour cette commande
Indicateur pour préciser si vous souhaitez que nous collections les informations de livraison pour ce paiement auprès du client. Si omis, la valeur par défaut est false.
Si
express_checkout_type est single-step ou multi-step, requires_shipping_info doit être true. Pour express_checkout_type: no-shipping et le paiement standard, utilisez falseLes articles achetés
Afficher attributs enfants
Afficher attributs enfants
Les remises appliquées à cette commande. Doit être inclus dans le total
Objet pour toute donnée personnalisée que vous souhaitez soumettre avec le paiement. Vous n’êtes pas limité aux paires clé-valeur indiquées dans l’exemple, et vous pouvez utiliser les paires clé-valeur de votre choix
Les taxes appliquées à cette commande. Doit être inclus dans le total. Si
express_checkout_type est single-step ou multi-step, cela peut être omis - il sera fourni après que l’acheteur confirme son adresse de livraison.onClick gestionnaire. Il existe deux méthodes pour héberger un paiement.
Utiliser un payload de paiement tel que détaillé dans l’objet Session
- Les URL d’annulation et de finalisation ne sont pas requises pour
iframeetpopupmode.
- Le
modeutilisé lors de la configuration du paiement SDK doit correspondre aucheckout_modelors de la création d’une session. - La fenêtre parente
origindoit être fournie dans les URL d’annulation et de finalisation lorsque lecheckout_modeestiframeoupopup.
Tokenisation du client Ceci n’est pas pris en charge dans l’événement
onComplete.
Pour recevoir un UUID client, abonnez-vous à l’événement
customer.tokenized
événement.Capture du paiement
La capture d’une commande n’est pas requise si l’intention
CAPTURE a été utilisée lors de
la création du paiement.- Modèle
- Exemple
- Options
checkoutSdk
.capturePayment(response.data.order_uuid, {
capture_amount: {
amount_in_cents: integer,
currency: string,
},
partial_capture: boolean,
})
.then((r) => {
console.log(r);
});
checkoutSdk
.capturePayment(response.data.order_uuid, {
capture_amount: {
amount_in_cents: 10000,
currency: "USD",
},
partial_capture: false,
})
.then((r) => {
console.log(r);
});
onCalculateAddressRelatedCosts
Pour des raisons de sécurité, l’authentification et la mise à jour du paiement doivent provenir
du code back-end du marchand.
- Obtenir un jeton d’authentification
- Appelez le authentification endpoint pour obtenir un jeton bearer
- Vous devriez avoir déjà configuré cela dans votre back-end pour l’intégration standard
- Au lieu de pointer directement vers Sezzle comme dans l’exemple ci-dessous, vous pouvez réutiliser votre fonction existante
- Mettre à jour la commande
- Appelez l’endpoint de mise à jour du paiement pour fournir à Sezzle les options de livraison et le montant final des taxes et de la livraison en fonction de l’adresse de livraison de l’acheteur
- Voir
Optionsonglet ci-dessous pour plus de détails
Une fois que
shipping_options ont été fournis à Sezzle pour un paiement, ils ne peuvent pas être modifiés à moins que l’acheteur ne change son adresse de livraison.- Modèle
- Exemple
- Options
onCalculateAddressRelatedCosts: async function (
shippingAddress,
order_uuid
) {
// Call authentication endpoint
const response = await fetch(
yourBackendAuthenticationURL,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
public_key: string,
private_key: string,
}),
}
);
const data = await response.json();
const token = data.token;
const updateResponse = await fetch(
yourBackendUpdateOrderURL,
{
method: "PATCH",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
currency_code: string,
address_uuid: shippingAddress.uuid,
shipping_options: [
{
name: string,
description: string,
shipping_amount_in_cents: integer,
tax_amount_in_cents: integer,
final_order_amount_in_cents: integer
}
]
}),
}
);
const updateStatus = updateResponse.ok;
return {
ok: updateStatus,
};
},
onCalculateAddressRelatedCosts: async function (
shippingAddress,
order_uuid
) {
// All this must be done inside your backend endpoint and this should be replaced with your endpoint communication logic
// Call authentication endpoint
const response = await fetch(
`https://sandbox.gateway.sezzle.com/v2/authentication`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
private_key: sz_pr_...,
public_key: sz_pub_...,
}),
}
);
const data = await response.json();
const token = data.token;
// Calculate your shipping options based on the provided shippingAddress
const shipping_options = [
{
name: "Standard Shipping",
description: "3-5 business days",
shipping_amount_in_cents: 1000,
tax_amount_in_cents: 500,
final_order_amount_in_cents: 11500
},
{
name: "Express Shipping",
description: "1-2 business days",
shipping_amount_in_cents: 2000,
tax_amount_in_cents: 1000,
final_order_amount_in_cents: 13000
}
]
// Update your checkout with the calculated shipping options
const updateResponse = await fetch(
`https://sandbox.gateway.sezzle.com/v2/order/{order_uuid}/checkout`,
{
method: "PATCH",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
currency_code: "USD",
address_uuid: shippingAddress.uuid,
shipping_options,
}),
}
);
const updateStatus = updateResponse.ok;
return {
ok: updateStatus,
};
}
Le code de devise à 3 caractères tel que défini par ISO 4217
L’UUID d’adresse pour la commande
Les options de livraison disponibles pour la commande, par ordre de recommandation/préférence
- Si
express_checkout_typeestmulti-stepmais qu’une seule méthode est fournie, l’expérience utilisateur suivra le fluxsingle-stepà partir de ce point - Si
express_checkout_typeestsingle-stepmais que plusieurs méthodes sont fournies, l’acheteur recevra un message d’erreur. - Si
express_checkout_typeestmulti-stepousingle-stepet qu’aucune méthode n’est fournie, l’acheteur sera invité à vérifier son adresse de livraison et à réessayer.
Afficher attributs enfants
Afficher attributs enfants
Le nom de la méthode de livraison
La description de la méthode de livraison, comme le nombre de jours ouvrables
Le montant de la livraison en centimes pour la commande
Le montant des taxes en centimes pour la commande
Le montant total final en centimes pour la commande
Réponse
- Modèle
- Exemple
- Options
{
ok: boolean,
error: {
code: string
}
}
{
ok: false,
error: {
code: "merchant_unsupported_shipping_address"
}
}
Afficher attributs enfants
Afficher attributs enfants
Options disponibles :
merchant_unsupported_shipping_address, merchant_errormerchant_unsupported_shipping_address indique que le marchand ne prend pas en charge l’adresse de livraison fournie.
merchant_error est une erreur générique renvoyée par le marchand lorsque quelque chose se passe mal de son côté.