API REFERENCE
Initier un paiement ou une autorisation
Paramètres
| Parameter | Type | Description | Obligatoire |
|---|---|---|---|
| data.pay_method | string | offline | ✓ |
| data.sub_pay_method | string | point_of_sales | ✓ |
| data.operation | string | 1.Sales 2.Authorisation; | ✓ |
| data.tid | string | 设备的TID | ✓ |
| data.order_id | string | 订单号全部数字构成,并小于20个字符 | ✓ |
| data.amount | string | 金额数字。例如 € 24.99 应该写成24.99,CNY金额>=1,欧元金额>=0.1 | ✓ |
| data.tip_amount | string | 总金额中包含的小费,金额数字。例如 1.02 | — |
| data.currency | string | 货币代码,ISO 4217,例如EUR,CHF | ✓ |
| data.description | string | 订单描述64字符内 | ✓ |
| data.demo | string | 自定义字段 | — |
| data.notify_url | string | 支付完成后异步通知地址 | ✓ |
| data.request_id | string | 请求id需保持唯一,建议24以上位数字+字母 | ✓ |
S’applique aux paiements en personne sur terminal POS
Cette API envoie, via le cloud, des instructions de paiement ou d’autorisation à un appareil POS.
Avant d’appeler cette API, vérifiez que l’appareil POS est en ligne et disponible afin que les instructions puissent être transmises et traitées correctement.
URL de l’API (production) : https://mapi.yabandpay.com/Payments
URL de l’API (test) : https://acc-mapi.yabandpay.com/Payments
| Paramètre | Type | Description | Obligatoire |
|---|---|---|---|
| user | String | TID de l’appareil | Obligatoire |
| sign | String | Signature | Obligatoire |
| method | String | v3.POS | Obligatoire |
| time | Long | Timestamp | Obligatoire |
- Parameters | Paramètre | Type | Description | Obligatoire | |:--- |:--- |:--- |:--- | | pay_method | String | offline | Obligatoire | | sub_pay_method | String| point_of_sales | Obligatoire | | operation | String |1.Sales 2.Authorisation ;| Obligatoire | | tid | string | TID de l’appareil | Obligatoire | | order_id | string | Numéro de commande composé uniquement de chiffres et limité à 20 caractères | Obligatoire | | amount | String | Montant sous forme de chaîne numérique. Par exemple, indiquez 24.99 pour € 24.99. Montant minimum CNY >=1 ; montant minimum EUR >=0.1. | Obligatoire | | tip_amount| String | Pourboire inclus dans le montant total, sous forme de chaîne numérique ; par exemple 1.02 | Facultatif | | currency | String | Code devise ISO 4217, par exemple EUR ou CHF | Obligatoire | | description | String | Description de la commande, limitée à 64 caractères | Obligatoire | | demo | String | Champ personnalisé | Facultatif | | notify_url | String | URL de notification asynchrone après le paiement | Obligatoire | | request_id | String | ID de requête unique ; une combinaison de chiffres et de lettres d’au moins 24 caractères est recommandée | Obligatoire |
Exemple de signature :
Paramètres triés et concaténés dans une chaîne de requête au format URL
"amount=12.5¤cy=EUR&description=YabandPay test&method=v3.POS¬ify_url=https://www.yabandpay.com/notify&operation=1&order_id=202586556498441613&pay_method=offline&request_id=a7z1lox4l6z6mdx1udgn5gtezasze1x0&sub_pay_method=point_of_sales&tid=T125119061&time=1555498137&tip_amount=0.5&user=T125119061"
Signer stringA avec secret_key
La signature obtenue est :
"YOUR_SIGNATURE"
Exemple de requête :
{
"user": "T125119061",
"sign": "YOUR_SIGNATURE",
"method": "v3.POS",
"time": 1555498137,
"data": {
"operation": "1",
"tid": "T125119061",
"amount": "12.5",
"currency": "EUR",
"tip_amount": "0.5",
"description": "YabandPay test",
"notify_url": "https://www.yabandpay.com/notify",
"order_id": "YOUR_ORDER_ID",
"pay_method": "offline",
"sub_pay_method": "point_of_sales",
"request_id": "a7z1lox4l6z6mdx1udgn5gtezasze1x0"
}
}
Exemple de réponse :
{
"status": true,
"code": "200",
"data": {
"order_id": "YOUR_ORDER_ID",
"trade_id": "4552eeea-1ae8-1e40-3b4b-802dc2f56458",
"amount": "12",
"currency": "EUR",
"tip_amount": "0.5",
"state": "processing"
},
"message": ""}
Informations complémentaires :
Conseil
Important : lorsqu’une notification asynchrone renvoie "state": "paid", l’utilisateur a terminé le paiement. Vérifiez si les données renvoyées contiennent "cvmTypeList": ["SIGNATURE"].
Si la réponse contient "cvmTypeList": ["SIGNATURE"], le client doit signer le reçu ;
Demandez au caissier de solliciter la signature du client et d’imprimer un reçu avec un champ de signature ;
Après la signature du client, le caissier sélectionne « Confirmer la signature » ou « Signature invalide » selon le résultat ;
Si « Confirmer la signature » est sélectionné, la transaction se termine normalement ;
Si « Signature invalide » est sélectionné, appelez immédiatement l’API d’annulation de transaction pour annuler cette transaction ;
Pour les paiements sans surveillance ou en libre-service, la vérification de signature peut être omise car les montants sont généralement faibles, mais cela comporte un risque de rétrofacturation.
Résultat de la réponse :
-
Une requête réussie renvoie "status": true.
-
Une requête échouée renvoie "status": false.
Nous recommandons vivement d’utiliser à la fois les consultations de commande et les notifications asynchrones pour synchroniser et mettre à jour le statut de paiement, et ainsi garantir l’exactitude des informations de paiement en temps réel.
Codes de réponse :
| Status | Code | Message |
|---|---|---|
| true | 200 | Success |
| false | -1000 | Internal error |
| false | -3001 | Required field is missing |
| false | -3002 | duplicate request_id |
| false | -403 | The signature Error |
| false | -4011 | Not support the payment method |
