Toute requête vers l'API WiniPayer doit contenir les tokens d'authentification du compte marchand dans le Header de la requête.
Les Tokens de l'API
sont disponibles sur la page de detail de chaque compte marchand dans votre Manager.
Paramètres Headers | Obligatoire | Exemple |
---|---|---|
X-Merchant-Apply | Oui |
5NqZlFTai12YsSWbGbS6 |
X-Merchant-Token | Oui |
828209b9-a457-4a06-9635-35dc46187330 |
{info} NB : Il est tout à fait possible de générer des liens de paiement en
TEST
ou enPROD
en fonction de l'environnement du compte marchand :
- Si le compte marchand est enTEST
vous ne pouvez générer que des liens de paiements enTEST
en utilisant les Tokens deTEST
.
- Si le compte marchand est enPROD
vous ne pouvez générer que des liens de paiement enPROD
en 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 standard, vous devez effectuer une requête HTTP POST
sur l'URL suivant :
https://api-v2.winipayer.com/checkout/standard/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. |
description | string |
Oui |
Facture Client Mariam N° 2563584 |
items | json |
Non |
Le paramètre items est un tableau d'objet. Exemple ci-dessous |
custom_data | json |
Non |
{"user_id":33,"order_id":365} |
client_pay_fee | boolean |
Non |
true Permets de specifier si le client payé les frais de transaction. |
cancel_url | url |
Oui |
https://tester.winipayer.com/cancel |
return_url | url |
Oui |
https://tester.winipayer.com/return |
callback_url | url |
Oui |
https://tester.winipayer.com/callback |
NB : Pour les paramètres supplémentaires facultatif, veuillez vous référer à la section Paramètres supplémentaires
[
{
"name": "Boubou marocain",
"quantity": 1,
"price_unit": 3500,
"description": "Qualité supérieur",
"price_total": 3500
},
...
]
NB : Les montants des items n'ont aucun impact sur le montant à payer par le client . ses informations sont à titre indicatif pour votre client.
curl --location 'https://api-v2.winipayer.com/checkout/standard/create' \
--header 'X-Merchant-Apply: 5NqZlFTai12YsSWbGbS6' \
--header 'X-Merchant-Token: 828209b9-a457-4a06-9635-35dc46187330' \
--form 'env="prod"' \
--form 'amount="3500"' \
--form 'description="Facture Client Mariam N° 2563584"' \
--form 'items="[{\"name\":\"Boubou marocain\",\"quantity\":1,\"price_unit\":3500,\"description\":"Qualité supérieur",\"price_total\":3500}]"' \
--form 'custom_data="{\"user_id\":33,\"order_id\":365}"' \
--form 'client_pay_fee="true"' \
--form 'cancel_url="https://tester.winipayer.com/cancel"' \
--form 'return_url="https://tester.winipayer.com/return"' \
--form 'callback_url="https://tester.winipayer.com/callback"'
{success} Si les paramètres sont valides vous devez obtenir une réponse au format JSON :
{
"success": true,
"results": {
"uuid": "2f1e1d74-78f3-4759-96a4-1ff6bc409d91",
"crypto": "invoice_prod_9d6b71764a1f20cfe851f00f57908e599439e7c548fa1eae8bc4f53b00e5f571a0e8923e725bae4a1a86e191cb7911b1e08ad8e3",
"env": "prod",
"amount": 500,
"currency": "xof",
"operator": null,
"operator_process": null,
"operator_message": null,
"checkout_process": "https://checkout-v2.winipayer.com/process/tng/invoice_prod_9d6b71764a1f20cfe851f00f57908e599439e7c548fa1eae8bc4f53b00e5f571a0e8923e725bae4a1a86e191cb7911b1e08ad8e3",
"expired_at": "2024-07-08 21:35:55"
},
"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/standard/detail/:uuid
Attention !
:uuid
remplacer cette clé par la valeur de la reference UUID de la facture :Exemple : `https://api-v2.winipayer.com/checkout/standard/detail/2f1e1d74-78f3-4759-96a4-1ff6bc409d91`
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": "acture Client Mariam",
"wpsecure": false,
"wpsecure_validate": null,
"items": [
{
"name": "Boubou marocain",
"quantity": 1,
"price_unit": 3500,
"description": null,
"price_total": 3500
}
],
"custom_data": {
"user_id": 33,
"order_id": 365
},
"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": "TBLBMKZHJVE",
"reference": {
"identifier": null,
"name": null,
"phone": null,
"email": null
},
"customer_pay": {
"name": "JARS T I",
"phone": "+2250555800400",
"email": null
},
"cancel_url": "https://tester.winipayer.com/cancel",
"return_url": "https://tester.winipayer.com/return",
"callback_url": "https://tester.winipayer.com/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é
hash
renvoyée par dans la réponse par WiniPayer est lehash256
duprod_private_key
outest private key
de votre compte marchand en fonction de l'environnement (test
ouprod
) dans laquelle la facture a été génère. Cette{test|prod}_private_key
est concaténé avec les clésuuid
,crypto
,amount
etcreated_at
avant 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": []
}
En plus des Paramètres Body de base pour la génération de liens de paiement, vous avez la possibilité d'ajouter des paramètres supplémentaires au besoin :
Paramètres Body | Type | Exemple |
---|---|---|
wpsecure | boolean |
true Ce paramètre permet d'ajouter une couche de validation* |
channel | json |
{"wave-cote-divoire", ...} Permet de fixer les opérateurs à afficher au client |
reference | json |
{"identifier":"AA256KL","name":"Koffi Charle","phone":"0555800400", "email":"[email protected]"} |
operator | string |
wave-cote-divoire Permets de générer une session directement auprès de l'opérateur. |
operator_input | string |
{"phone":"0555800400"} la valeur de cette clé est dependant de l'opérateur |
Information :
wpsecure
: Ce paramètre permet d'ajouter une couche de validation supplémentaire.true
alors un code à 9 chiffres (Ex: 653-987-167) est envoyé au client via le mail specifier dans le paramètre reference.email
.Le code de validation
peut être utilisé dans le cas d'une transaction entre un client qui commande un article sur internet et qui voudrai communiquer le code uniquement après réception et vérification du colis.