Avec PAYREMITS Standard et Express, vous pouvez facilement et en toute sécurité recevoir des paiements en ligne de votre client.
Ce document est un guide sur la manière d’intégrer le paiement marchand avec l’API REST.
L’API est un service web RESTful qui accepte des données de formulaire en entrée. Toutes les méthodes sont implémentées en POST.
Avant toute chose, l’utilisateur (celui qui paie le marchand) doit être connecté pour obtenir le jeton d’autorisation.
URL: https://app.payremits.com/api/login
Type de méthode: POST
Requête d’exemple: PARAMÈTRE DU CORPS (form-data)
{"email":"david.luca@gmail.com","password":"123456"}
| Paramètre | La description | Statut | Taper | Exemple |
|---|---|---|---|---|
| Doit être un e‑mail | Requis | Chaîne | david.luca@gmail.com | |
| mot de passe | Mot de passe utilisateur | Requis | Chaîne | 123456 |
Connexion réussie
{"response":{"user_id":4,"first_name":"David","last_name":"Luca","email":"david.luca@gmail.com","formattedPhone":null,"picture":"","defaultCountry":"US","TOKEN":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6Ijg0OGU2NjhhZDdjMWRmYzhjODA1NGE0NjY5ZTM0OGYyND","STATUS":200,"USER-STATUS":"ACTIVE"}}
Erreur de connexion
{"response":{"status":401,"message":"Invalid email & credentials"}}
N.B. : vous devez utiliser ce JETON généré à toutes les autres étapes comme Authorization-token dans l’en-tête.
URL: https://app.payremits.com/api/merchant/verify
Méthode: POST
La description: Accéder au compte marchand, https://app.payremits.com/merchants Cliquez sur l’icône d’engrenage du marchand express approuvé.
Copiez depuis la fenêtre modale le Client ID et le Client Secret. Cette méthode est utilisée pour générer un jeton d’accès.
N.B: Si le marchand est approuvé par l’administrateur, seule alors l’icône d’engrenage sera disponible pour ce marchand. Le Authorization‑token doit être envoyé dans l’en‑tête.
PARAMÈTRE DU CORPS (form-data)
{" client_id":" yMKqAvC2dILUyhwdIbryh4rsl784kF"," client_secret":" ZubitDCg2QyxuoSu0l6pJkNB5lOrcl1Ivy0qZlhlu8QhWHDYOelkVSNC8B0ybunOb3i832W3FC2SUuXw04Rj8kRHduMx7pdD4a48"}
PARAMÈTRE DE L’EN‑TÊTE
{“ Authorization-token”:” eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIzIiwianRpIjoiNTFiMTU5N2EyYjI4NDMxMzFiZWM0MTdlZGI4NmExOTcyNGZhYWVlZWMzZGNjMjNkMzRlOTE2YjVkYzJlM2M0NjEwODJkOGNlNTdlZGNkNmYiLCJpYXQiOjE2MzYxNzk5MjgsIm5iZiI6MTYzNjE3OTkyOCwiZXhwIjoxNjY3NzE1OTI4LCJzdWIiOiI0Iiwic2NvcGVzIjpbXX0...”}
| Paramètre | La description | Statut | Taper | Exemple |
|---|---|---|---|---|
| client_id | Client ID du marchand | Requis | Chaîne | yMKqAvC2dILUyhwdIbryh4rsl784kF |
| client_secret | Secret du marchand | Requis | Chaîne | ZubitDCg2QyxuoSu0l6pJkNB5lOrcl1Ivy0qZlhlu8QhWHDYOe... |
| Authorization-token | Doit être fourni dans l’en‑tête, le jeton généré après la réponse de connexion de l’utilisateur. | Requis | Chaîne | eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIzIiw... |
Le marchand existe
{"success":{"response":{"status":"success","message":"Client Verified","data":{"access_token":"PIdb49a6imxSecjkr2tn21YSPn"}},"status":200}}
Le marchand n’existe pas
{"success":{"status":407,"message":"Can not verify the client. Please check client Id and Client Secret!"}}
N.B. : vous devez utiliser ce access_token généré à l’étape suivante comme AUTORISATION
URL: https://app.payremits.com/api/merchant/transaction-info
Méthode: POST
La description: Nous utilisons ce point de terminaison pour stocker les informations de paiement. Obtenez le jeton d’accès généré lors de la vérification du marchand à l’étape précédente. Utilisez “Authorization-token” et “Authorization” comme en‑têtes. “Authorization-token” est généré à partir de https://app.payremits.com/api/login
N.B: Vous devrez définir Authorization : Bearer suivi de la valeur du jeton. Ajoutez successUrl et cancelUrl selon vos besoins. Pour le code de devise, utilisez le format ISO.
PARAMÈTRE DU CORPS (form-data)
{"payer":"Wallet","amount":"10","currency":"USD","email":"david.luca@gmail.com","successUrl":"https://app.payremits.com/dashboard","cancelUrl":"https://app.payremits.com"}
PARAMÈTRE DE L’EN‑TÊTE
{" Authorization-token ":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6Ijg0OGU2NjhhZDdjMWRmYzhjODA1NGE0NjY5ZTM0OGYyND..."," Authorization ":"Bearer 5UTduND48M4qrbSJ9i3CVuQ2cE "}
| Paramètre | La description | Statut | Taper | Exemple |
|---|---|---|---|---|
| payer | Mode de paiement | Requis | Chaîne | Wallet/Mtn |
| amount | Le montant que l’utilisateur doit payer. | Requis | Double | 10 |
| currency | La devise utilisée pour le paiement ; elle doit être un code ISO. | Requis | Chaîne | USD |
| E‑mail de l’utilisateur effectuant le paiement | Optional | david.luca@gmail.com | ||
| successUrl | URL du tableau de bord de l’application | Requis | Chaîne | https://app.payremits.com/dashboard |
| cancelUrl | URL racine de l’application | Requis | Chaîne | https://app.payremits.com |
| Authorization-token | Doit être fourni dans l’en‑tête, le jeton généré après la réponse de connexion de l’utilisateur. | Requis | Chaîne | eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQi... |
| Authorization | Doit être donné dans l’en‑tête, à récupérer lors de la vérification du marchand | Requis | Chaîne | Bearer PIdb49a6imxSecjkr2tn21YSPn |
Succès
{"success":{"status":"success","grandId":78509912,"token":"VPJSyzRvTgzWGll3xjTI","message":"","data":{"approvedUrl":"https://app.payremits.com/merchant/payment?grant_id=78509912&token=VPJSyzRvTgzWGll3xjTI"}}}
Devise invalide
{"success":{"status":"error","message":"Currency GBP is not supported by this merchant!","data":[]}}
Montant nul
{"success":{"status":"error","message":"Amount cannot be 0 or less than 0.","data":[]}}
N.B. : après avoir effectué l’étape ci‑dessus, vous obtiendrez grant_id et jeton. Ces valeurs seront nécessaires à l’étape suivante.
URL: https://app.payremits.com/api/merchant/payment
Méthode: POST
La description: Dans ce point de terminaison, le paiement réussira : toutes les validations des entrées sont vérifiées et l’utilisateur est redirigé vers la page de paiement (s’il n’est pas connecté, il doit d’abord se connecter). L’utilisateur doit décider d’annuler ou d’accepter le paiement. Fournissez grant_id et jeton dans le corps de la requête, tels que générés à l’étape précédente.
PARAMÈTRE DU CORPS (form-data)
{"grant_id":"55890128","token":"OfCErZrxuiDqxTjscQon"}
PARAMÈTRE DU CORPS (form-data)
{"grant_id":"55890128","token":"OfCErZrxuiDqxTjscQon","carrierCode":"244","phone":"123456","message":"hello","note":"note"}
PARAMÈTRE DE L’EN‑TÊTE
{“ Authorization-token”:” eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6Ijg0OGU2NjhhZDdjMWRmYzhjODA1NGE0NjY5ZTM0OGYyND...”}
| Paramètre | La description | Statut | Taper | Exemple |
|---|---|---|---|---|
| grant_id | Obtenu depuis le point de terminaison 2 | Requis | Double | 78509912 |
| token | Obtenu depuis le point de terminaison 2 | Requis | Chaîne | VPJSyzRvTgzWGll3xjTI |
| carrierCode | Mtn mobile number carrier code | Requis | Chaîne | 244 |
| phone | Mtn mobile number without carrier code | Requis | Chaîne | 123456 |
| message | Message for the MTN user | Requis | Chaîne | 123456 |
| note | Note for the transaction | Requis | Chaîne | note |
| Authorization-token | Doit être fourni dans l’en‑tête : le jeton généré après réponse de connexion de l’utilisateur. | Requis | Chaîne | eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aS... |
N.B: carrierCode, phone, message, note are required only for the MTN payment.
Payment Success
{"success": {"status": 200,"message": "Success","successUrl": "https://app.payremits.com?eyJzdGF0dXMiOjIwMCwidHJhbnNhY3Rpb25faWQiOiJFQjlCRUM0MUYyMDRCIiwibWVyY2hhbnQiOiJBc2hyYWZ1bCBSYXNlbCIsImN1cnJlbmN5IjoiVVNEIiwiZmVlIjowLjE0OTk5OTk5OTk5OTk5OTk5NDQ0ODg4NDg3Njg3NDIxNzI5Nzg4MTg0MTY1OTU0NTg5ODQzNzUsImFtb3VudCI6OS44NDk5OTk5OTk5OTk5OTk2NDQ3Mjg2MzIxMTk5NDk5MDcwNjQ0Mzc4NjYyMTA5Mzc1LCJ0b3RhbCI6IjEwLjAwMDAwMDAwIn0="}}
MTN Payment
{"success": {"status": 200,"message": "Success","successUrl": "payremits.com?eyJzdGF0dXMiOjIwMCwidHJhbnNhY3Rpb25faWQiOiI5RkRFMkZGMTJDN0FEIiwibWVyY2hhbnQiOiJGb2lzYWwgQWhtZWQiLCJjdXJyZW5jeSI6IlhBRiIsImZlZSI6MS41LCJhbW91bnQiOjk4LjUsInRvdGFsIjoxMDB9","mtnResponse": {"primary_key": "95fc9962968840ceb8c001755a8e11db","uuid": "d9f8d42b-66f0-4c4c-9d66-267db3b7cfb6","env": "mtncameroon","access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSMjU2In0.eyJjbGllbnRJZCI6ImJkZmVjMjcyLTk3ODgtNGU2OS1iZWI1LTJkZTYxMWJjN2IyYyIsImV4cGlyZXMiOiIyMDI1LTA4LTE1VDA5OjM3OjU2LjIzNCIsInNlc3Npb25JZCI6IjYyYWE3OTc3LTI3MGMtNDZjNC1hZjRjLTkzZDc5YjFkYmNlOCJ9.M0L5IoX3AWEdLICJmxfW9Olq81Z6rlKjVwO6CDHlPe4f2qsRddNrN88v3a2Ntf6soRgPiZTyxWvuCVHc75hMK3jipEgKWjD2M9jEMntAIFDbMrCuIpDVyr2Z-WC_RO-T0wzOweVOQSaym05goIWnY8GY96zf6w55JG6MSKem0FGPB9N13WIgQ9eCocdVwqcGaBdaY4IH7oHL5R6sHev2ECb9metu58bkcb0v1-CWzAsjCH_lkXDFwFSUPvyF9mzg9xyJFzRw3Rp_z94mQ04_VNT4AX2TZUjm-jEepTvo_ju2Y7kQwa8zOVfIp9sElPJY--2e4YyMED9ZxxISqZgkKQ"}}}
Le marchand et l’utilisateur sont identiques
{"success":{"status":801,"message":"Merchant cannot make payment to himself!"}}
Incompatibilité entre Grant ID ou jeton
{"success":{"status":401,"message":"Grant Id or Token does not Match!"}}
Solde insuffisant
{"success":{"status":401,"message":"User doesn't have sufficient balance!"}}
URL: https://app.payremits.com/api/merchant/payment/cancel
Méthode: POST
La description: Cette URL est utilisée pour annuler le paiement. Pour annuler un paiement, après le point de terminaison #2, effectuez une requête au point #4. Fournissez « Authorization‑token » depuis https://app.payremits.com/api/login et le jeton du point de terminaison #2.
PARAMÈTRE DU CORPS (form-data)
{"grant_id":"55890128","token":" OfCErZrxuiDqxTjscQon "}
PARAMÈTRE DE L’EN‑TÊTE
{“ Authorization-token”:” eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6Ijg0OGU2NjhhZDdjMWRmYzhjODA1NGE0NjY5ZTM0OGYyND...”}
| Paramètre | La description | Statut | Taper | Exemple |
|---|---|---|---|---|
| grant_id | Obtenu depuis le point de terminaison 2 | Requis | Double | 78509912 |
| token | Obtenu depuis le point de terminaison 2 | Requis | Chaîne | VPJSyzRvTgzWGll3xjTI |
| Authorization-token | Doit être fourni dans l’en‑tête, le jeton généré après la réponse de connexion de l’utilisateur. | Requis | Chaîne | eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiO... |
Paiement annulé
{"success": {"status": 200, "message": "Payment cancelled successfully", "cancelUrl": "https://app.payremits.com/dashboard"}}
URL: https://app.payremits.com/api/mtn-payment-status
Méthode: POST
La description: To check the payment status this url is used. To check the payment status, after endpoint #3 make a request to endpoint #5.
PARAMÈTRE DU CORPS (form-data)
{"primary_key":"OfCErZrxuiDqxTjscQon","env":"mtncameroon","access_token":"OfCErZrxuiDqxTjscQondkhfgkdhkh","uuid":"55890128"}
PARAMÈTRE DE L’EN‑TÊTE
{“Accept”:”application/json”,“Content-Type”:”application/json”}
| Paramètre | La description | Statut | Taper | Exemple |
|---|---|---|---|---|
| primary_key | MTN Primary Key | Requis | Chaîne | OfCErZrxuiDqxTjscQon |
| env | MTN API Environment | Requis | Chaîne | mtncameroon |
| access_token | MTN Access Token | Requis | Chaîne | OfCErZrxuiDqxTjscQondkhfgkdhkh |
| uuid | MTN Transaction ID | Requis | Chaîne | 55890128 |
MTN Payment Status Check
{"externalId": "16306036-4b04-4106-8c9d-aecbeb3e5c70","amount": "98.5","currency": "XAF","payer": {"partyIdType": "MSISDN","partyId": "237677265707"},"payerMessage": "note","payeeNote": "note","status": "FAILED","reason": "VALIDATION_ERROR"}