Payin sans redirection
Le payin sans redirection est une méthode de paiement de l'API LigdiCash qui permet à un marchand de collecter des paiements auprès de ses clients sans qu'ils ne quittent votre plateforme.
Cette méthode de paiement est particulièrement utile pour les marchands qui souhaitent offrir une expérience de paiement personnalisée à leurs clients, tout en bénéficiant de la sécurité et de la simplicité de l'API LigdiCash.
Cependant, le marchand doit gérer lui-même la logique de paiement et de confirmation de la transaction pour tous les opérateurs de paiement qu'il utilise.
Mise en place
Pour éffectuer un paiement sans redirection, vous devez disposer d'un projet API activé. Suivez le guide pour créer un projet API.
Afin de collecter des paiements sans redirection, le marchand doit au préalable connaître le mode de fonctionnement de l'opérateur de paiement (OTP, Approbation, etc) que le client a choisi.
Dans ce guide, nous allons prendre en compte le système OTP (One Time Password) et le système d'approbation.
Le système OTP(One Time Password) consiste à envoyer un code unique par SMS au client pour valider une transaction.
Nous prendrons le cas de Orange Money Burkina pour illustrer le fonctionnement du payin sans redirection avec le système OTP.
Initier la transaction
Acteurs
: Client
Le client exécute d'abord le code USSD *144*4*6*montant#
suivi de son code secret pour obtenir un code OTP.
Le code est alors envoyé par SMS au client.
Valider la transaction
Acteurs
: Marchand => LigdiCash => Opérateur
Une fois le code OTP obtenu, le client le communique, en plus du numéro utilisé, au marchand qui devra l’ajouter dans le corps de sa requête vers l’API de Ligdicash.
Cette requête permettra de valider la transaction en créditant le compte mobile money du client et en débitant le portefeuille LigdiCash du marchand.
1curl --location 'https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create' \
2--header 'Apikey: 81J...DH8C' \
3--header 'Authorization: Bearer eyJ0eXAiO...4LyaRolhw' \
4--header 'Accept: application/json' \
5--header 'Content-Type: application/json' \
6--data-raw '{
7 "commande": {
8 "invoice": {
9 "items": [
10 {
11 "name": "Premier produit",
12 "description": "__description_du_produit__",
13 "quantity": 1,
14 "unit_price": 1000,
15 "total_price": 1000
16 },
17 {
18 "name": "Deuxieme produit",
19 "description": "__description_du_produit__",
20 "quantity": 3,
21 "unit_price": 5000,
22 "total_price": 5000
23 }
24 ],
25 "total_amount": 16000,
26 "devise": "XOF",
27 "description": "Achat de produits sur https://masuperboutique.com",
28 "customer": "226XXXXXXXX", // <--- Numéro de téléphone utilisé pour obtenir le code OTP. Préfixé par l'indicatif du pays
29 "customer_firstname": "Cheik",
30 "customer_lastname": "Cissé",
31 "customer_email": "cheikcisse@gmail.com",
32 "external_id": "",
33 "otp": "XXXXXX" // <--- Code OTP obtenu par le client
34 },
35 "store": {
36 "name": "Ma boutique",
37 "website_url": "https://masuperboutique.com"
38 },
39 "actions": {
40 "cancel_url": "",
41 "return_url": "",
42 "callback_url": "https://backend.masuperboutique.com/callback"
43 },
44 "custom_data": {
45 "order_id": "ORD-1234567890",
46 "transaction_id": "ORD-1234567890"
47 }
48 }
49}'
Nous vous recommandons fortement d'implémenter le endpoint de callback pour recevoir les détails de la transaction après le paiement.
Cela vous permettra de mettre à jour le statut de la commande dans votre système et d'offrir le service ou le produit à votre client sans qu'il ne soit obligé de revenir sur votre site.
Réponse
1{
2 "response_code": "00",
3 "token": "eyJ0eXAiOiJKV1QiLCJh...GlyeV9kYXRlIjoxNzE2Mzc2NTE3fQ.7iwLZVmG_Hw_ncFUcF5Hzk8cB2BSUqroF9rGqym_qSw",
4 "response_text": "La requête est en cours de traitement",
5 "description": "",
6 "custom_data": {
7 "logfile": "20240521131517664c9e65689a3"
8 },
9 "wiki": "https://client.ligdicash.com/wiki/createInvoice"
10}
11
Vérifier le statut de la transaction
Une fois que la reponse obtenue, vous devrez alors vérifier le statut de la transaction pour confirmer réellement le statut du paiement.
Pour vérifier le statut de la transaction, vous devez utiliser le token retourné lors de la création de la facture, et effectuer la requête suivante:
1curl --location 'https://app.ligdicash.com/pay/v01/redirect/checkout-invoice/confirm/?invoiceToken=eyJ0eXAiOiJK...nk159cWyokRv6wAlh3g' \
2--header 'Apikey: 81J...IDH8C' \
3--header 'Authorization: Bearer eyJ0eXAiOiJ...4LyaRolhw' \
4--data ''
Interpréter la réponse
Lorsque vous recevez la réponse de la requête de vérification du statut de la transaction, vous devez vous assurez que response_code == 00
et que status == completed
avant de valider la transaction et de livrer le service ou le produit à votre client.
1{
2 "date": "2023-10-29 09:46:27+00",
3 "response_code": "00",
4 "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUz...bdqRzL_aOJ1SYzY",
5 "description": "”,
6 "amount": "100",
7 "montant": "100",
8 "response_text": null,
9 "status": "completed",
10 "custom_data": [
11 {
12 "id_invoice": 29505444,
13 "keyof_customdata": "order_id",
14 "valueof_customdata": "MonSiteOrder234"
15 }
16 ],
17 "operator_name": "ORANGE BURKINA",
18 "operator_id": "11",
19 "customer": “”,
20 "transaction_id": “TRNS.36887”,
21 "external_id": null,
22}
23