Traiter les transactions
Guide de traitement des paiements avec sessions de paiement et liens de paiement, exemples de code inclus.
lomi. propose deux modes principaux pour traiter les transactions et encaisser des paiements via son API : les sessions de paiement (checkout sessions) et les liens de paiement.
- Sessions de paiement : adaptées aux transactions à usage unique lorsque vous générez dynamiquement une page de paiement hébergée et sécurisée pour une commande client précise. Les sessions expirent après 60 minutes par défaut.
- Liens de paiement : idéaux pour créer des liens réutilisables liés à des produits, des plans d’abonnement ou pour encaisser des montants fixes immédiatement. Ils se partagent facilement et peuvent être configurés pour expirer à une date donnée.
Cette section couvre les bases des deux approches. Pour les spécifications détaillées de l’API, voir la section Référence API.
Créer une session de paiement
Pour lancer un paiement unique pour un produit ou service dynamique (comme un panier), créez une session de paiement. Cela génère une page de paiement hébergée, sécurisée et à durée limitée, préremplie avec les informations que vous fournissez.
import { LomiSDK } from '@lomi./sdk';
const lomi = new LomiSDK({
apiKey: process.env.LOMI_SECRET_KEY!,
environment: 'live',
});
async function createCheckout() {
const session = await lomi.checkoutSessions.create({
amount: 10000, // 10,000 F CFA
currency_code: 'XOF',
success_url: 'https://your-store.com/success',
cancel_url: 'https://your-store.com/cancel',
title: 'Your Order - #ORD-12345',
description: 'Payment for items in cart',
customer_email: 'customer@email.com',
metadata: {
cart_id: 'cart_abc123',
internal_user_id: 'user_xyz789',
},
});
console.log('Checkout URL:', session.checkout_url);
}
import os
from lomi import LomiClient, LomiError
# Initialize client
client = LomiClient(
api_key=os.environ["LOMI_SECRET_KEY"],
environment="test"
)
try:
session = client.checkout_sessions.create({
"amount": 10000, # 10,000 F CFA
"currency_code": "XOF",
"success_url": "https://your-store.com/success",
"cancel_url": "https://your-store.com/cancel",
"title": "Your Order - #ORD-12345",
"description": "Payment for items in cart",
"customer_email": "customer@email.com",
"metadata": {
"cart_id": "cart_abc123",
"internal_user_id": "user_xyz789"
}
})
print(f"Checkout URL: {session['checkout_url']}")
except LomiError as e:
print(f"Error: {e}")sessionData := lomi.CheckoutSessionsCreate{
Amount: lomi.PtrInt32(10000),
CurrencyCode: lomi.PtrString("XOF"),
SuccessUrl: lomi.PtrString("https://your-store.com/success"),
CancelUrl: lomi.PtrString("https://your-store.com/cancel"),
Title: lomi.PtrString("Your Order - #ORD-12345"),
Description: lomi.PtrString("Payment for items in cart"),
CustomerEmail: lomi.PtrString("customer@email.com"),
Metadata: &map[string]interface{}{
"cart_id": "cart_abc123",
},
}
session, \_, err := client.CheckoutSessionsAPI.CreateCheckoutSession(auth).
CheckoutSessionsCreate(sessionData).
Execute()
if err != nil {
// Handle error
return
}
fmt.Printf("Checkout URL: %s\n", \*session.CheckoutUrl)
use Lomi\Api\CheckoutSessionsApi;
use Lomi\Model\CheckoutSessionsCreate;
$checkoutApi = new CheckoutSessionsApi(null, $config);
$session = $checkoutApi->createCheckoutSession(
new CheckoutSessionsCreate([
'amount' => 10000,
'currency_code' => 'XOF',
'success_url' => 'https://your-store.com/success',
'cancel_url' => 'https://your-store.com/cancel',
'title' => 'Your Order - #ORD-12345',
'description' => 'Payment for items in cart',
'customer_email' => 'customer@email.com',
'metadata' => [
'cart_id' => 'cart_abc123'
]
])
);
header('Location: ' . $session->getCheckoutUrl());Après la création de la session, redirigez le client vers le checkout_url renvoyé dans la réponse. lomi. gère le paiement en toute sécurité sur cette page.
Pourquoi fournir des détails client optionnels ?
- Confort : préremplit les champs pour faire gagner du temps au client.
- Facultatif : s’ils sont omis, le client les saisira au moment du paiement.
Créer un lien de paiement
Les liens de paiement conviennent aux liens réutilisables associés à un produit ou service précis.
const paymentLink = await lomi.paymentLinks.create({
link_type: 'product',
product_id: 'prod_xxxxxxxxxxxxxxxxxxxx',
description: 'Special offer',
allow_coupon_code: true,
success_url: 'https://your-store.com/success',
metadata: { campaign: 'q4_special_offer' },
});
console.log('Payment Link URL:', paymentLink.url);
# Initialize client as shown above
link = client.payment_links.create({
"link_type": "product",
"product_id": "prod_xxxxxxxxxxxxxxxxxxxx",
"description": "Special offer",
"allow_coupon_code": True,
"success_url": "https://your-store.com/success",
"metadata": {"campaign": "q4_special_offer"}
})
print(f"Payment Link URL: {link['url']}")linkData := lomi.PaymentLinksCreate{
LinkType: lomi.PtrString("product"),
ProductId: lomi.PtrString("prod_xxxxxxxxxxxxxxxxxxxx"),
Description: lomi.PtrString("Special offer"),
AllowCouponCode: lomi.PtrBool(true),
SuccessUrl: lomi.PtrString("https://your-store.com/success"),
}
link, \_, err := client.PaymentLinksAPI.CreatePaymentLink(auth).
PaymentLinksCreate(linkData).
Execute()
fmt.Printf("Payment Link URL: %s\n", \*link.Url)
$link = $linksApi->createPaymentLink(
new PaymentLinksCreate([
'link_type' => 'product',
'product_id' => 'prod_xxxxxxxxxxxxxxxxxxxx',
'description' => 'Special offer',
'allow_coupon_code' => true,
'success_url' => 'https://your-store.com/success'
])
);
echo 'Share this: ' . $link->getUrl();Une fois créé, vous pouvez partager l’URL par e-mail, sur les réseaux sociaux ou l’intégrer à votre site.
Note importante sur les frais : les sessions de paiement n’appliquent pas automatiquement les frais prédéfinis de l’organisation, car le amount indiqué est le montant final facturé. En revanche, les liens de paiement fondés sur un produit respectent en général toute configuration de frais attachée au produit ou à l’organisation.
Configurer les webhooks
Les webhooks permettent à votre application de recevoir des notifications en temps réel sur les événements qui se produisent dans votre compte lomi., comme les paiements réussis, les nouveaux abonnements ou les transactions échouées.
Guides avancés
Approfondissez la gestion d’erreurs, les webhooks, la sécurité, les stratégies de test et l’intégration CI/CD pour des paiements prêts pour la production.