{warning} À la différence de
l'API de paiement Standard, l'API de paiement Express demande moins de configuration et de paramètre pour générer un lien de paiement.
NB : L'objectif est de générer rapidement des liens de paiement avec la référence (Uuid) du compte marchand.
Toute requête vers l'API WiniPayer doit contenir les tokens d'authentification du compte marchand dans le Header de la requête.
La Référence (Uuid) du compte marchand est disponible sur la page de detail de chaque compte marchand dans votre Manager.
| Paramètres Headers | Obligatoire | Exemple |
|---|---|---|
| X-Merchant-Uuid | Oui |
af0169d8-fdb4-4df8-af8e-6b16af3213790 |
{info} NB : Il est tout à fait possible de générer des liens de paiement en
TESTou enPRODen fonction de l'environnement du compte marchand :
- Si le compte marchand est enTESTvous ne pouvez générer que des liens de paiements enTESTen utilisant les Tokens deTEST.
- Si le compte marchand est enPRODvous ne pouvez générer que des liens de paiement enPRODen utilisant les Tokens dePROD.
Pour générer un lien de paiement vous aurez besoin des éléments suivants :
Pour générer un lien de paiement express, vous devez effectuer une requête HTTP POST sur l'URL suivant :
https://api-v2.winipayer.com/checkout/express/create
En plus des parametres Headers, vous devez utiliser en paramètres Body les clés suivantes:
| Paramètres Body | Type | Obligatoire | Exemple |
|---|---|---|---|
| env | string |
Oui |
test pour un paiement en TEST et prod pour un paiement en PRODUCTION |
| amount | int |
Oui |
3500 Le montant de la transaction. |
| client_pay_fee | boolean |
Non |
true Permets de specifier si le client payé les frais de transaction. |
curl --location 'https://api-v2.winipayer.com/checkout/express/create' \
--header 'X-Merchant-uuid: af0169d8-fdb4-4df8-af8e-6b16af3213790' \
--form 'env="prod"' \
--form 'amount="100"' \
--form 'client_pay_fee="true"'
{success} Si les paramètres sont valides vous devez obtenir une réponse au format JSON :
{
"success": true,
"results": {
"uuid": "5010eec1-2678-51db-b0f9-e4ac8c6d5988",
"crypto": "invoice_prod_ce2c813e152363b5702042af105665834c700ebfd9daa4485e99bfe94b4df3a0e5228fde1ed1bad414b2a3f018ab9b9e3fbe74cf",
"env": "prod",
"amount": 100,
"operator": null,
"operator_process": null,
"operator_message": null,
"checkout_process": "https://checkout-v2.winipayer.com/process/tng/invoice_prod_ce2c813e152363b5702042af105665834c700ebfd9daa4485e99bfe94b4df3a0e5228fde1ed1bad414b2a3f018ab9b9e3fbe74cf",
"expired_at": "2024-07-10 13:09:28"
},
"errors": [],
"messages": []
}
Après avoir obtenu l'URL de paiement checkout_process vous devez rediriger l'utilisateur sur ce lien (Portail de paiement) pour effectuer le paiement.
Attention !
uuid est la référence permanente de la facture. Elle vous servira pour obtenir les informations détaillées du paiement.crypto est la référence temporaire de la facture. Elle est valide uniquement durant la transaction.expired_at est la date d'expiration du lien de paiement. Elle a une durée de validité de 30 minutes{
"success": false,
"results": [],
"errors": {
"code": 2000,
"key": "amount",
"msg": "The amount field is required."
},
"messages": []
}
Portail de paiment client.

Pour obtenir les détails d'un lien de paiement, vous devez effectuer une requête HTTP POST sur l'URL suivant :
https://api-v2.winipayer.com/checkout/express/detail/:crypto
Attention !
:crypto remplacer cette clé par la valeur de la clé crypto de la facture :Exemple: https://api-v2.winipayer.com/checkout/express/detail/invoice_prod_ce2c813e152363b5702042af105665834c700ebfd9daa4485e99bfe94b4df3a0e5228fde1ed1bad414b2a3f018ab9b9e3fbe74cf
En plus des parametres Headers, vous devez utiliser en paramètres Body les clés suivantes:
| Paramètres Body | Type | Obligatoire | Exemple |
|---|---|---|---|
| env | string |
Oui |
test pour un paiement en TEST et prod pour un paiement en PRODUCTION |
{
"success": true,
"results": {
"invoice": {
"uuid": "2f1e1d74-78f3-4759-96a4-1ff6bc409d91",
"crypto": "invoice_prod_9d6b71764a1f20cfe851f00f57908e599439e7c548fa1eae8bc4f53b00e5f571a0e8923e725bae4a1a86e191cb7911b1e08ad8e3",
"module": {
"name": "default",
"uuid": null
},
"hash": "3a58322928469be5f4d152af26ecd611123bca04c81a15f59b1a9c6b54600bed",
"env": "prod",
"version": "v2",
"state": "success",
"state_date": "2024-07-09 08:04:58",
"amount_init": 3500,
"amount": 3500,
"client_pay_fee": true,
"commission_amount": 87.5,
"commission_rate": 2.5,
"commission_fee": null,
"amount_available": 3412.5,
"currency": "xof",
"channel": [],
"description": null,
"wpsecure": false,
"wpsecure_validate": null,
"items": [],
"custom_data": [],
"store": {
"uuid": "af0169d8-fdb4-4df8-bf8e-6b16ab321379",
"name": "WiniHost",
"description": "WiniHost est un service qui offre tout ce qu'il faut pour lancer un site internet ou une application en ligne avec tous les standards de sécurité: nom de domaine gratuit, hébergement web, comptes mail, bases de données, CMS, etc...",
"web_url": "https://www.winihost.com",
"logo": "https://api-v2.winipayer.com/all/media/view/117c5a99-b6eb-4ada-8374-5bc716b370b0",
"email": "[email protected]",
"phone": "2250555800400",
"country": "ci",
"city": "Abidjan",
"address": "Angré 9ème tranche, Immeuble Téré",
"ipn_url": "https://pay.winihost.com/ipn"
},
"operator": "wave-cote-divoire",
"operator_ref": "TBLBCKZHJVE",
"reference": [],
"customer_pay": {
"name": "JARS T I",
"phone": "+2250555800400",
"email": null
},
"cancel_url": "https://checkout-v2.winipayer.com/page/cancel",
"return_url": "https://checkout-v2.winipayer.com/page/return",
"callback_url": "https://checkout-v2.winipayer.com/page/callback",
"checkout_link": "https://checkout-v2.winipayer.com/process/tng/invoice_prod_9cb7961e9d04cd562e833c449fdfad78b545c4e3fb5ce9146bc86d46e452e448678cd4a7a44c674ffe0a1767eb89822a6f393ecc",
"checkout_receipt": null,
"ipn_call": null,
"created_at": "2024-07-09 08:04:58",
"expired_at": "2024-07-09 08:34:58"
}
},
"errors": [],
"messages": []
}
{info} La clé
hashrenvoyée par dans la réponse par WiniPayer est lehash256duprod_private_keyoutest private keyde votre compte marchand en fonction de l'environnement (testouprod) dans laquelle la facture a été génère. Cette{test|prod}_private_keyest concaténé avec les clésuuid,crypto,amountetcreated_atavant le hashage. Ce hash vous permettra de vous assurer que les données que vous avez reçues proviennent de nos serveurs.
// Example PHP pour une facture générer en PROD
$generated_hash = hash('sha256', $prod_private_key . $uuid . $crypto . $amount . $created_at);
if($received_token === $generated_hash)
{
// Valid transaction
}
{
"success": false,
"results": [],
"errors": {
"code": 3000,
"key": "uuid",
"msg": "Invalide or missing invoice"
},
"messages": []
}
{
"success": false,
"results": [],
"errors": {
"code": 2000,
"key": "X-Merchant-Token",
"msg": "Invalid or missing X-Merchant-Token"
},
"messages": []
}