Installation
Inclure le code SDK
Incluez le script suivant dans la<head> section de la page.
Copier
Demander à l'IA
<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
Copier
Demander à l'IA
const checkoutSdk = new Checkout({
mode: string,
publicKey: string,
apiMode: string,
apiVersion: string,
});
Copier
Demander à l'IA
const checkoutSdk = new Checkout({
mode: "popup",
publicKey: "sz_pub_...",
apiMode: "live",
apiVersion: "v2",
});
Options disponibles :
popup, iframe, redirectpopup le mode fonctionnera immédiatement. Aucune configuration supplémentaire n’est requise pour utiliser popup. Sezzle recommande actuellement le mode popup.iframe le mode ne fonctionnera pas correctement sans contacter d’abord Sezzle. Pour des raisons de sécurité, Sezzle doit activer iframe pour votre(vos) domaine(s). Pour l’activer, veuillez soumettre une demande avec votre UUID de marchand Sezzle et une liste des 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.
L’intégration pour popup et iframe sont identiques, à l’exception du mode. L’utilisation du mode popup accélérera votre développement. Une fois l’intégration terminée, si iframe est une exigence, contactez alors Sezzle pour activer votre(vos) domaine(s) et passez le mode à iframe.
Utilisé lors de la création d’un paiement ou de la capture d’un paiement. Trouvez vos clés API à https://dashboard.sezzle.com/merchant/settings/apikeys
Environnement dans lequel le paiement doit être effectuéOptions disponibles :
live, sandboxVersion du SDK Sezzle CheckoutOptions disponibles :
v2Bouton Sezzle
Configuration du bouton Sezzle
Créez un élément d’emplacement pour que le bouton Sezzle soit rendu sur la(les) page(s).- Modèle
- Exemple
- Options
Copier
Demander à l'IA
<div
id="sezzle-smart-button-container"
style="text-align: center"
></div>
Copier
Demander à l'IA
<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 texte du modèle.
Largeur du bouton
Hauteur du bouton.
Rendre le bouton Sezzle
Nécessite d’avoir l’objet de paiement créé ci-dessus pour rendre le bouton. Appelez renderSezzleButton en passant l’identifiant de l’élément d’emplacement défini dans la Configuration du bouton, ci-dessus.Copier
Demander à l'IA
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
Copier
Demander à l'IA
checkoutSdk.init({
onClick: function () {
event.preventDefault();
checkoutSdk.startCheckout({...});
},
onComplete: function (response) {
checkoutSdk
.capturePayment(response.data.order_uuid, {...})
.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({
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,
};
},
});
Copier
Demander à l'IA
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 charge utile.
Le paiement Sezzle est effectué avec succès. Un paiement Sezzle réussi déclenchera un événement vers le gestionnaire
onComplete. L’événement devrait inclure un objet de données avec des données pertinentes au paramètre d’entrée de démarrage du paiement.Voir capturePayment section pour les options de charge utile.
Le paiement Sezzle est annulé. Si l’utilisateur quitte le paiement Sezzle pour une raison quelconque, 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 l’adresse de livraison via le paiement express Sezzle, cette fonction doit renvoyer les coûts de taxe et d’expédition à Sezzle.Initialisation du paiement
- Modèle
- Exemple
- Options
Copier
Demander à l'IA
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,
},
},
},
});
Copier
Demander à l'IA
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: une seule méthode d’expédition existe, ou utiliser uniquement la méthode d’expédition par défaut pour le flux de paiement express Sezzle -
multi-step: permettre à l’utilisateur de sélectionner parmi les méthodes d’expédition prises en charge par le marchand -
no-shipping: l’achat ne contient aucun article expédiable 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 ID de référence pour cette commande (doit contenir uniquement des caractères alphanumériques, des tirets (-) et des traits de soulignement (_))
Votre description pour cette commande
Indicateur pour indiquer si vous souhaitez que nous collections les informations d’expédition 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 paiement standard, utilisez falseLes articles achetés
Afficher attributs enfants
Afficher attributs enfants
Les remises appliquées à cette commande. Doivent être incluses dans le total
Objet pour toutes les données personnalisées 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 n’importe quelles paires clé-valeur
Les taxes appliquées à cette commande. Doivent être incluses 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 l’adresse de livraison.onClick. Il existe deux méthodes pour héberger un paiement.
Utiliser une charge utile de paiement comme 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 SDK de paiement doit correspondre aucheckout_modelors de la création d’une session. - La fenêtre parent
origindoit être fournie dans les urls 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énementcustomer.tokenized
.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
Copier
Demander à l'IA
checkoutSdk
.capturePayment(response.data.order_uuid, {
capture_amount: {
amount_in_cents: integer,
currency: string,
},
partial_capture: boolean,
})
.then((r) => {
console.log(r);
});
Copier
Demander à l'IA
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 point de terminaison authentication pour obtenir un jeton bearer
- Vous devriez déjà avoir 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 le point de terminaison 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 l’onglet
Optionsci-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
Copier
Demander à l'IA
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,
};
},
Copier
Demander à l'IA
onCalculateAddressRelatedCosts: async function (
shippingAddress,
order_uuid
) {
// Call authentication endpoint
const response = await fetch(
`http://your-backend-endpoint/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(
`http://your-backend-endpoint/updateOrder`,
{
method: "PATCH",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
currency_code: "USD",
address_uuid: shippingAddress.uuid,
shipping_options: [
{
name: "test-1",
description: "desc-1",
shipping_amount_in_cents: 2000,
tax_amount_in_cents: 3000,
final_order_amount_in_cents: 10200
},
{
name: "test-2",
description: "desc-2",
shipping_amount_in_cents: 2001,
tax_amount_in_cents: 3001,
final_order_amount_in_cents: 10201
}
]
}),
}
);
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 une 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
Copier
Demander à l'IA
{
ok: boolean,
error: {
code: string
}
}
Copier
Demander à l'IA
{
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 ne va pas de leur côté.