Introduction Last updated: 2020-12-03
Cette page permet de bien démarrer avec DigiPay, vous permettant d'avoir une solution de paiement électronique a la fois flexible, securisée et adaptée aux besoins des utilisateurs.
Cette page permet de bien démarrer avec DigiPay, vous permettant d'avoir une solution de paiement électronique a la fois flexible, securisée et adaptée aux besoins des utilisateurs.
Cette partie vous permet de :
Pour créer un compte client DigiPay, il faut se rendre sur le lien de Création Compte .
Après inscription, vous recevrez un mail comprenant vos paramètres de connexion de l'espace client.
Pour créer une boutique, il faut se connecter à l'espace client, puis se rendre sur le menu Boutique. Une fois dans le menu cliquer sur le bouton Nouvelle Boutique
Exemple de boutique avec Wordpress
Exemple de boutique avec PrestaShop
Exemple de boutique Personalisée
Une fois la boutique créée, vous recevrez vos clés API par mails.
Les Clés API sont aussi disponibles dans l'espace client .
Pour regénérer vos clés API, cliquer sur le bouton dans la liste des boutiques, en suite cliquer sur le bouton .
BASE_URL = https://proxy.bgpay.digital/api
REQUEST_PAYMENT_URL = BASE_URL/payment/request
L'API de paiement permet aux partenaires intégrateurs de faire une demande de paiement par génération d'un token unique pour l’obtention d’un url de paiement sécurisé. Mais aussi permettant d'interagir avec les clients du partenaire intégrateur pour leurs proposer différents modes de paiements.
Cette partie permet à un client final d’effectuer un paiement en ligne via la plateforme en suivant les étapes:
Méthode : POST
Headers : Content-Type : application/json
URL : https://proxy.bgpay.digital/api/payment/request
Paramètres :
Paramètres | Type | Défaut | Obligatoire | Description |
---|---|---|---|---|
app_key | String | NULL | OUI | Identifiant de l'application lié á la boutique en ligne |
public_key | String | NULL | OUI | Clé public á voir dans l'espace client( partie application ) |
secrete_key | String | NULL | OUI | Clé privée de sécurité á voir dans l'espace client( partie application ) |
amount | Number | NULL | OUI | Montant de la transaction |
commande_name | String | NULL | OUI | Nom de la commande |
ref_commande | String|Uniq | NULL | OUI | Référence de la commande |
currency | String | Paramètre global boutique | OUI | Device (XOF, EUR USD CAD GBP MAD) |
data_transactions | Json | NULL | OUI | Données supplémentaires en Json |
mode | String | NULL | OUI | Mode transaction ( test | prod ) |
ipn_url | String | Paramètre global boutique | NON | Url de callback |
success_url | String | Paramètre global boutique | NON | Url de succès |
cancel_url | String | Paramètre global boutique | NON | Url d'annulation |
failed_url | String | Paramètre global boutique | NON | Url d'erreur |
client_name | String | NULL | NON | Le nom du client qui va éffectuer le paiement |
client_phone | String | NULL | NON | Le numéro de téléphone du client qui va éffectuer le paiement |
client_email | String | NULL | NON | L'adresse mail du client qui va éffectuer le paiement |
curl --location --request POST 'https://proxy.bgpay.digital/api/payment/request' \
--header 'Content-Type: application/json' \
--data-raw '{
"app_key": "string",
"public_key": "string",
"secrete_key": "string",
"amount": "number",
"commande_name": "string",
"ref_commande": "string",
"currency": "string",
"data_transactions": "json",
"mode": "string",
"ipn_url": "string",
"success_url": "string",
"cancel_url": "string",
"failed_url": "string",
"client_name": "string",
"client_phone": "string",
"client_email": "string"
}'
Réponse correcte :
{
"data": {
"hash":"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
"url_payment":"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
},
"msg": "Token generer avec success",
"error": false,
"code": 200
}
Réponse erreur :
{
"error": true,
"msg": "Votre clée d'application n'existe pas !!!",
"code": "400"
}
Cette partie permet aux clients finaux de choisir un mode de paiement et de terminer le processus selon le mode spécifié.
Une fois cette étape franchie, le client devra valider la transaction à son niveau, en recevant un URL de validation via requête https.
Méthode : POST
Headers : Content-Type : application/json
URL : url_ipn
Paramètres :
Paramètres | Type | Description |
---|---|---|
hash_app_key | String | Identifiant de l'application lié á la boutique en ligne (haché via l'algorythme sha512) |
hash_public_key | String | Clé public á voir dans l'espace client partie application (haché via l'algorythme sha512) |
hash_secret_key | String | Clé privée de sécurité á voir dans l'espace client partie application (haché avec l'algorythme sha512) |
amount | Number | Montant de la transaction |
commande_name | String | Nom de la commande envoyée dans la phase de demande de paiement |
ref_commande | String|Uniq | Référence de la commande envoyée dans la phase de demande de paiement |
currency | String | Device |
data_transactions | Json | Données supplémentaires en Json envoyées lors de la demande de paiement |
mode | String | Mode transaction ( test | prod ) |
ref_internal_digi_pay | String | Référence de la transaction générée par la plateforme DigiPay |
statut | String | Statut de la transaction ( success) |
event | String | Type événement ( web_payment) |
client_name | String | Le nom du client qui a éffectué le paiement |
client_phone | String | Le numéro de téléphone du client qui a éffectué le paiement |
client_email | String | L'adresse mail du client qui a éffectué le paiement |
{
"data_transactions": "{\"id\":23}",
"hash_app_key": "string",
"hash_secret_key": "string",
"hash_public_key": "string",
"mode": "string",
"payment_method": "string",
"ref_commande": "string",
"commande_name": "string",
"amount": "number",
"currency": "number",
"ref_internal_bg": "string",
"statut": "string",
"event": "string",
"client_name": "string",
"client_phone": "string",
"client_email": "string"
}
Après réception de la requête HTTPS de notre serveur, repondez avec un statut code HTTP 200.
Dans cette partie, vous retrouvrez un exemple complet d'intégration avec plusieurs technologies.
Demander un url de Paiement avec JAVA en utilisant le SDK Java avec Spring Boot
Télécharger le SDK Java
@RequestMapping(path = "/requestPayment",method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String requestPayment(){
DigiPayGatway payment = new DigiPayGatway();
/*Config boutique*/
payment.setSuccess_url("https://mywebsite.shop/success");
payment.setCancel_url("https://mywebsite.shop/cancel");
payment.setIpn_url("https://mywebsite.shop/ipn");
payment.setFailed_url("https://mywebsite.shop/failed");
payment.setApp_key("YOUR_SECRETE_KEY");
payment.setSecrete_key("YOUR_SECRETE_KEY");
payment.setSecrete_key_test("YOUR_SECRETE_TEST_KEY");
payment.setPublic_key("YOUR_PUBLIC_KEY");
payment.setPublic_key_test("YOUR_PUBLIC_TEST_KEY");
payment.setCurrency("XOF");
/*Config boutique*/
/*Client infos*/
payment->setClient_name("Pape Samba Ndour")
payment->setClient_phone("777293282")
payment->getClient_email("papesambandour@hotmail.com")
/*Client infos*/
/*Config product*/
payment.setAmount(1000);
payment.setAmount(1000);
payment.setCommande_name("mY COMMANDE");
payment.setRef_commande(DigiPayGatway.RandomString.generate());
Map data_transactions = new HashMap<>();
payment.setMode(payment.getMODE_TEST());
//info supplementair
data_transactions.put("id","12");
payment.setData_transactions(data_transactions);
/*Config product*/
return payment.start();
}
Réponse attendue
[
"data"=>
[
"hash"=>"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
"url_payment"=>"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
],
"msg"=>"Token generer avec success",
"error"=>false,
"code"=>200
]
Validation du Paiement via le Callback
@RequestMapping(path = "/ipn",method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String ipn(@RequestBody DigiPayGatway.DigiIpnData digiIpnData ){
String app_key = "YOUR_APP_KEY";
String secret_key_prod = "YOUR_SECRETE_KEY";
String public_key_prod = "YOUR_PUBLIC_KEY";
String secret_key_test = "YOUR_SECRETE_TEST_KEY";
String public_key_test = "YOUR_PUBLIC_TEST_KEY";
String mode = digiIpnData.mode;
String hash_app_key = digiIpnData.hash_app_key;
String hash_secret_key = digiIpnData.hash_secret_key;
String hash_public_key = digiIpnData.hash_public_key;
String my_hash_app_key = DigiPayGatway.HASX512( app_key);
String my_hash_secret_key = "";
String my_hash_public_key = "";
if (mode == "prod") {
my_hash_secret_key = DigiPayGatway.HASX512( secret_key_prod);
my_hash_public_key = DigiPayGatway.HASX512( public_key_prod);
} else {
my_hash_secret_key = DigiPayGatway.HASX512( secret_key_test);
my_hash_public_key = DigiPayGatway.HASX512( public_key_test);
}
if (my_hash_public_key == hash_public_key && my_hash_secret_key == hash_secret_key && my_hash_app_key == hash_app_key) {
//FROM BG DIGITAL
return "SUCCESS";
} else {
return "NO_SUCCES";
}
}
Demander un url de Paiement avec NodeJs en utilisant le SDK NodeJs
Télécharger le SDK NodeJs
app.post('/requestPayment', async (req, res) => {
const DigiPayGatway = require("./DigiPayGatway.js") ;
let id = req.body.id;
let other = req.body.other;
/*START SDA*/
let payment = new DigiPayGatway();
/*CONFIG APPLICATION START*/
payment.success_url = ('https://mywebsite.shop/success');
payment.cancel_url = ('https://mywebsite.shop/cancel');
payment.ipn_url = ('https://mywebsite.shop/ipn');
payment.app_key = "YOUR_APP_KEY";
payment.secrete_key = "YOUR_SECRETE_KEY";
payment.secrete_key_test = "YOUR_SECRETE_TEST_KEY";
payment.public_key = "YOUR_PUBLIC_KEY";
payment.public_key_test = "YOUR_PUBLIC_TEST_KEY";
payment.currency = "XOF";
/*CONFIG APPLICATION END*/
/*Client info */
payment.client_name = "Pape Ndour"
payment.client_phone = "777293282"
payment.client_email = "papesambandour@hotmail.com"
/*Client info */
/*ADD PRODUCT INFOS START*/
payment.mode = 'test';
payment.amount = 1000;
payment.ref_commande = Math.random().toString().substr(3,20);
payment.commande_name ="Achat Produit sur Digi-shop";
payment.mode =DigiPayGatway.MODE_TEST;
payment.data_transactions ={
"myProductId" : id,
"otherInfo" : other
};
/*ADD PRODUCT INFOS END*/
/*PROCESS GET URL PAYMENT*/
return res.json(await payment.start())
});
Réponse attendue
{
"data":
{
"hash":"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
"url_payment":"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
},
"msg":"Token generer avec success",
"error":false,
"code":200
}
Validation du Paiement via le Callback
app.post('/ipn', (req, res) => {
const crypto = require('crypto')
const hash = crypto.createHash('sha512');
let app_key ='YOUR_APP_KEY';
let secret_key_prod ='YOUR_SECRETE_KEY';
let public_key_prod ='YOUR_PUBLIC_KEY';
let secret_key_test ='YOUR_SECRETE_TEST_KEY';
let public_key_test ='YOUR_PUBLIC_TEST_KEY';
let mode = req.body.mode;
let hash_app_key = req.body.hash_app_key;
let hash_secret_key = req.body.hash_secret_key;
let hash_public_key = req.body.hash_public_key;
let my_hash_app_key = crypto.createHash('sha512').update(app_key).digest('hex')
let my_hash_secret_key = '';
let my_hash_public_key = '';
if ( mode === 'prod') {
my_hash_secret_key = crypto.createHash('sha512').update(secret_key_prod).digest('hex');
my_hash_public_key = crypto.createHash('sha512').update(public_key_prod).digest('hex');
} else {
my_hash_secret_key = crypto.createHash('sha512').update(secret_key_test).digest('hex');
my_hash_public_key = crypto.createHash('sha512').update(public_key_test).digest('hex');
}
if (my_hash_public_key === hash_public_key && my_hash_secret_key === hash_secret_key && my_hash_app_key === hash_app_key) {
//FROM BG DIGITAL
res.send("SUCCESS");
} else {
res.send("NO_SUCCES");
}
});
Demander un url de Paiement avec PHP en utilisant le SDK Php
Télécharger le SDK Php
use Digipay\Darkness\Pay\DigiPayGatway;
include 'DigiPayGatway.php';
$id = @$_REQUEST['idProduct'];
$other = @$_REQUEST['other'];
/*START SDA*/
$payment = new DigiPayGatway();
/*CONFIG APPLICATION START*/
$payment->setSuccessUrl('https://mywebsite.shop/success');
$payment->setCancelUrl('https://mywebsite.shop/cancel');
$payment->setIpnUrl('https://mywebsite.shop/ipn');
$payment->setAppKey("YOUR_APP_KEY");
$payment->setSecreteKey("YOUR_SECRETE_KEY");
$payment->setSecreteKeyTest("YOUR_SECRETE_TEST_KEY");
$payment->setPublicKey("YOUR_PUBLIC_KEY");
$payment->setPublicKeyTest("YOUR_PUBLIC_TEST_KEY");
$payment->setCurrency("XOF");
/*CONFIG APPLICATION END*/
/*Client info */
$payment->setClientName("Pape Ndour") ;
$payment->setClientPhone("777293282");
$payment->setClientEmail( "papesambandour@hotmail.com");
/*Client info */
/*ADD PRODUCT INFOS START*/
$payment->setAmount(1000);
$payment->setRefCommande(uniqid());
$payment->setCommandeName("Achat Produit sur Digi-shop");
$payment->setMode(DigiPayGatway::MODE_TEST);
$payment->setDataTransactions([
"myProductId" => $id,
"otherInfo" => $other
]);
/*ADD PRODUCT INFOS END*/
/*PROCESS GET URL PAYMENT*/
$res = $payment->start();
Réponse attendue
[
"data"=>
[
"hash"=>"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
"url_payment"=>"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
],
"msg"=>"Token generer avec success",
"error"=>false,
"code"=>200
]
Validation du Paiement via le Callback
$app_key ='YOUR_APP_KEY';
$secret_key_prod ='YOUR_SECRETE_KEY';
$public_key_prod ='YOUR_PUBLIC_KEY';
$secret_key_test ='YOUR_SECRETE_TEST_KEY';
$public_key_test ='YOUR_PUBLIC_TEST_KEY';
$mode = @$_REQUEST['mode'];
$hash_app_key = @$_REQUEST['hash_app_key'];
$hash_secret_key = @$_REQUEST['hash_secret_key'];
$hash_public_key = @$_REQUEST['hash_public_key'];
$my_hash_app_key = hash('sha512', $app_key);
$my_hash_secret_key = '';
$my_hash_public_key = '';
if ($mode === 'prod') {
$my_hash_secret_key = hash('sha512', $secret_key_prod);
$my_hash_public_key = hash('sha512', $public_key_prod);
} else {
$my_hash_secret_key = hash('sha512', $secret_key_test);
$my_hash_public_key = hash('sha512', $public_key_test);
}
if ($my_hash_public_key === $hash_public_key && $my_hash_secret_key === $hash_secret_key && $my_hash_app_key === $hash_app_key) {
//FROM BG DIGITAL
die("SUCCESS");
} else {
die("NO_SUCCES");
}
}
.NET
RUBY
GO
PYTHON
Ressources disponibles en telehargement libre
1- Télécharger le plugin WordPress : ICI
Télécharger le SDK PHP : ICI
Télécharger le SDK JAVA : ICI
Télécharger le SDK NodeJs : ICI