Traiter les paiements fractionnés des achats par carte
POST /cardpayments/v1/accounts/account_id/auths
Le traitement d’un achat par paiement fractionné est une variante du traitement d’un achat par carte standard, dans laquelle une partie du montant total de la transaction est transférée sur un ou plusieurs comptes liés.
Pour traiter un achat, vous devez initier une requête POST au point de terminaison des autorisations, et la requête dont comporter un signalement settleWithAuth réglé sur « true », afin que le système de traitement des cartes débite la carte dans le cadre de la même requête.
Le paiement fractionné ne peut être utilisé dans les autorisations qui ont settleWithAuth = false, lorsque l’intention est de régler l’achat ultérieurement. Dans ces situations, le paiement fractionné doit être utilisé dans la requête de règlement.
curl -X POST https://api.test.paysafe.com/cardpayments/v1/accounts/89987201/auths \
-u devcentre322:B-qa2-0-53625f86-302c021476f52bdc9deab7aea876bb28762e62f92fc6712d0214736abf501e9675e55940e83ef77f5c304edc7968 \
-H ’Content-Type: application/json’ \
-d ’ {
"merchantRefNum" : "demo-1",
"amount" : 10098,
"settleWithAuth":true,
"card" : {
"cardNum" : "4111111111111111",
"cardExpiry":{
"month":2,
"year":2027"year":2027
},
"cvv": 123
},
"billingDetails":{
"street":"100 Queen Street West",
"city":"Toronto",
"state":"ON",
"country" : "CA","country":"CA",
"zip":"M5H 2N2"
}
"splitpay": [
{
"linkedAccount": "123124124",
"percent": 5
},
{
"linkedAccount": "767862873",
"amount": 500
}
]
} ’
L’objet splitpay est un ensemble de comptes liés, dont chacun possède les attributs suivants :
Valeur | Type | Requis? | Description | Exemple |
---|---|---|---|---|
linkedAccount | string | Oui | Il s’agit de l’identifiant du compte lié. Ce compte doit déjà être lié au compte du marchand. | 123124124 |
percent | number | Le pourcentage ou le montant est requis, mais pas les deux. | Le pourcentage du montant total de la transaction à transférer sur le compte lié, jusqu’à deux décimales. Le pourcentage total de tous les comptes liés ne peut dépasser 100 %. | 5,31 |
montant | integer | Il s’agit du montant à transférer sur le compte lié en unités monétaires mineures. Le montant total de tous les comptes liés ne peut dépasser le total de la transaction. | 500 |
Le montant est spécifié en unités monétaires mineures du compte marchand spécifié à l’aide du paramètre URL account_id. Par exemple, pour traiter 10,99 $ US, cette valeur doit être 1099. Pour traiter 1 000 yens japonais, cette valeur doit être 1 000. Pour traiter 10 139 dinars tunisiens, cette valeur doit être 10139.
Par défaut, le système de traitement des cartes vérifie qu’il n’y a pas de transactions en double.
Dans le cas des paiements fractionnés, les éléments suivants sont également vérifiés :
- Un pourcentage ou un montant, mais pas les deux, est spécifié pour chaque compte lié.
- Le paiement fractionné est activé pour le compte du partenaire ou du marchand identifié dans la requête API POST ou GET.
- Les comptes liés sont liés au compte du partenaire ou du marchand.
- Le compte du partenaire/marchand ne fait pas partie des comptes liés.
- La somme des montants alloués à tous les comptes liés ne dépasse pas le total de la transaction.
Avant d’essayer l’exemple ci-dessus, vous devez :
- Fournir un numéro de référence unique pour chaque transaction.
- Remplacer le numéro de compte (89987201) dans l’URL par le numéro de compte de test que vous avez reçu.
- Remplacer la clé API (après le -u) par la clé API que vous avez reçue.
- Remplacer tous les numéros de compte liés et les valeurs de pourcentage et de montant par des valeurs de test.
{
"links":[
{
"rel":"self",
"href":"https://api.test.paysafe.com/cardpayments/v1/accounts/89987201/auths/ebf6ae3d-88e1-40da-9b98-81044467345b"
},
{
"rel": "settlement",
"href":"https://api.test.paysafe.com/cardpayments/v1/accounts/89987201/settlements/ebf6ae3d-88e1-40da-9b98-81044467345b"
},
],
"id":"ebf6ae3d-88e1-40da-9b98-81044467345b",
"merchantRefNum":"demo-1",
"txnTime":"2017-05-01T14:52:35Z",
"status":"COMPLETED",
"amount":10098,
"settleWithAuth":true,
"availableToSettle":0,
"card":{
"type":"VI",
"lastDigits":"1111",
"cardExpiry":{
"month":2,
"year":2027"year":2027
}
},
"authCode":"114974",
"billingDetails":{
"street":"100 Queen Street West",
"city":"Toronto",
"state":"ON",
"country" : "CA","country":"CA",
"zip":"M5H2N2"
},
"merchantDescriptor":{
"dynamicDescriptor":"Test",
"phone":"123-1234123"
},
"currencyCode":"CAD",
"avsResponse":"MATCH",
"splitpay": [
{
"linkedAccount": "123124124",
"percent": 5
},
{
"linkedAccount": "767862873",
"amount": 500
}
],
"settlement" : {
"links": [
{
"rel": "self",
"href": "https://api.test.paysafe.com/cardpayments/v1/accounts/89987201/settlements/ebf6ae3d-88e1-40da-9b98-81044467345b"
}
],
"id": "ebf6ae3d-88e1-40da-9b98-81044467345b",
"merchantRefNum": "demo-1",
"txnTime": "2014-05-01T14:52:35Z",
"status": "PENDING",
"amount":10098,
"availableToRefund": 0,
"splitpay": [
{
"linkedAccount": "123124124",
"percent": 5,
"amount": 505
},
{
"linkedAccount": "767862873",
"amount": 500
}
]
}
}
L’état est défini à COMPLETED et la valeur de availableToSettle est 0 parce que la carte a été débitée automatiquement dans le cadre de la requête, étant donné que le signalement settleWithAuth a été défini sur « true ». Vous pouvez consulter la transaction à tout moment en utilisant la fonction merchantRefNum (demo-1) ou l’idrenvoyé dans la réponse (dans ce cas - ebf6ae3d-88e1-40da-9b98-81044467345b).
Les paramètres de réponse obligatoires qui diffèrent de ceux de la demande d’achat standard sont décrits ci-dessous :
Valeur | Type | Description |
---|---|---|
splitpay | ensemble d’objets « splitpay » | Les informations sur les paiements fractionnés de la requête. |
settlements | ensemble d’objets « settlement » | Contient un objet de règlement unique, qui contient un objet « splitpay ». |
L’objet « splitpay » de l’objet « settlement » est un ensemble contenant un ou plusieurs objets de compte lié :
Valeur | Type | Requis? | Description | Exemple |
---|---|---|---|---|
montant | integer | Oui | Il s’agit du montant à transférer sur le compte lié en unités monétaires mineures. Il s’agit soit du « montant » (s’il a été spécifié) dans la requête, soit – si « pourcentage » a été spécifié – du résultat du calcul du pourcentage. | 505 |
linkedAccount | string | Oui | Il s’agit de l’identifiant du compte lié. Ce compte doit déjà être lié au compte du marchand. | 123124124 |
percent | number | Non | Le « pourcentage » (s’il est spécifié) dans la requête pour le compte lié, qui est le pourcentage du montant total de la transaction à transférer vers ce compte. Il n’est pas renvoyé si un « montant » a été spécifié dans la requête. | 5,25 |
Voir notre section Référence API pour une liste de tous les attributs et types JSON disponibles pour le point de terminaison Autorisation.