À propos du virement Interac
L’API Paiements Paysafe prend en charge le virement Interac en tant qu’instrument de paiement. Le virement Interac est un service de transfert de fonds entre institutions personnelles et commerciales qui permet aux marchands de percevoir des fonds auprès des consommateurs canadiens pour payer des marchandises.
Types de transaction
Le virement Interac prend en charge les deux transactions suivantes :
- Paiements
Sert à transférer de l’argent du compte bancaire du client vers le compte du marchand. Après un paiement réussi, le marchand crédite le portefeuille du client. Un flux interac de demande d’argent est mis en place pour permettre aux clients de déposer de l’argent. Le marchand sera le demandeur d’argent, et le client sera l’approbateur.
- Retrait
Sert à transférer de l’argent du compte du client vers le compte bancaire du marchand. Le flux d’envoi d’argent Interac est mis en œuvre pour permettre aux clients de retirer de l’argent.
Paiement (flux de requête d’argent)
Lors du traitement d’une requête de paiement en argent Interac, procédez comme suit :
- Créez un "payment handle" avec le paramètre transactionType défini sur PAYMENT et le paramètre paymentType défini sur INTERAC_ETRANSFER
- Post : paymenthub/v1/paymenthandles
- Comme le client doit effectuer le paiement en sélectionnant le compte bancaire sur la page Interac, Paysafe renvoie la réponse suivante :
- Le paramètre action est défini sur REDIRECT
- Un lien redirect_payment renvoie à l’URL de redirection Interac.
- Redirigez le client vers l’URL de redirection Interac.
- Lorsque le client est redirigé vers le lien de redirection, l’état du "payment handle" devient PAYABLE et vous serez informé par un webhook de l’événement PAYMENT_HANDLE_PAYABLE.
- Sur la page de redirection, le client sélectionne la banque, fournit ses authentifiants et accepte la requête de virement d’argent.
- Utilisez le jeton paymentHandleToken pour traiter la requête de paiement via l’API Paiements à l’aide de la clé privée. Vous devez lancer une requête POST vers le point de terminaison :
- Post : paymenthub/v1/payments
- Une fois que le marchand a traité le paiement via l’API Paiements, le paiement est indiqué comme étant PENDING. Lorsque le client effectue le paiement dans le délai imparti, le marchand reçoit l’événement SETTLEMENT COMPLETED/ PAYMENT COMPLETED (comme il s’agit de settlewithauth= true, nous pouvons supposer que les deux sont identiques). Vous pouvez créditer l’argent de manière sécurisée sur le compte du client/expédier les marchandises une fois que vous avez reçu ces événements.
"Payment Handles", paiements
Paiement (envoyer un flux d’argent)
Pour traiter une requête de paiement Interac, procédez comme suit :
Créez un "payment handle" dont la mode est SEND_MONEY, le type de transaction est PAYMENT, le type de paiement est INTERAC_ETRANSFER et le délai d’expiration de la transaction est fixé à la durée pendant laquelle le marchand souhaite que la transaction soit ouverte (le minimum est de 120).
Post: paymenthub/v1/paymenthandles
Comme le client a besoin d’instructions sur la manière d’effectuer le paiement, Paysafe renvoie une réponse contenant ce qui suit :
Le paramètre d’action est défini sur PAYABLE
Une référence de paiement unique est renvoyée
Affichez les instructions de paiement sur votre page hébergée, y compris le nom et l’adresse électronique du marchand, le montant et la note reflétant la valeur de la référence de paiement.
Lorsque vous redirigez un client vers un lien de redirection, l’état du "payment handle" passe à PAYABLE, et vous en serez informé par le biais d’un webhook pour l’événement PAYMENT_HANDLE_PAYABLE.
Sur la page de redirection, le client choisit sa banque, entre ses authentifiants et accepte la requête de virement d’argent.
Traitez la requête de paiement via l’API Paiements en utilisant le paymentHandleToken fourni dans la réponse et la clé privée. Une requête POST doit être envoyée au point de terminaison :
Post: paymenthub/v1/payments
Une fois que le marchand a traité le paiement à l’aide de l’API Paiements, l’état du paiement devient PENDING. Le marchand reçoit un événement SETTLEMENT_COMPLETED/PAYMENT_COMPLETED lorsque le client effectue le paiement dans le délai imparti. Comme settlewithauth=true, nous pouvons supposer que les deux sont identiques. Vous pouvez expédier les marchandises ou créditer le compte du client de manière sécurisée une fois que vous avez reçu ces événements.
"Payment Handles", paiements
Retrait
Pour traiter une requête de retrait Interac, procédez comme suit :
Demandez au client l’identifiant d’adresse courriel pour initier un retrait.
Vérifiez si l’adresse courriel est enregistrée pour le dépôt automatique. Vous pouvez utiliser l’API Vérification pour faire la même chose. Vous recevez l’état de dépôt automatique et le montant maximum transférable en réponse.
En fonction de l’état de l’enregistrement du dépôt automatique, les étapes mentionnées ci-dessous doivent être mises en œuvre.
Inscription au flux de dépôt automatique
Créez un "payment handle" avec le paramètre transactionType défini sur STANDALONE_CREDIT et le paramètre paymentType défini sur INTERAC_ETRANSFER
Ce "payment handle" doit immédiatement avoir l’état PAYABLE.
Utilisez le paymentHandleToken renvoyé dans la réponse pour traiter la requête de retrait via l’API Crédit autonome à l’aide de la clé privée. Vous devez lancer une requête POST vers le point de terminaison :
- Post: /paymenthub/v1/standalonecredits
- Une fois la requête de retrait complétée avec succès, l’état du retrait (CREDIT STANDALONE_CREDIT) passe à PROCESSING. Les fonds sont transférés sur le compte du client et l’état passe alors à COMPLETED.
Sans inscription au flux de dépôt automatique
- Pour les retraits sans dépôt automatique, vous devez transmettre la question de sécurité et la réponse à l’API. Vous pouvez le faire soit en demandant au client de transmettre la question et la réponse, soit en préconfigurant la question et la réponse (et en les partageant avec le client).
- Créez un "payment handle" avec le paramètre transactionType défini sur STANDALONE_CREDIT, le paramètre paymentType défini sur INTERAC_ETRANSFER et transmettez l’ensemble de questions & réponse dans l’API.
- Ce "payment handle" doit immédiatement avoir l’état PAYABLE.
- Utilisez le paymentHandleToken renvoyé dans la réponse pour traiter la requête de retrait via l’API Crédit autonome à l’aide de la clé privée. Vous devez lancer une requête POST vers le point de terminaison :
- Post: /paymenthub/v1/standalonecredits
- Le client recevra le lien par courriel et devra répondre à la question sur la page Interac/banque.
- Vous recevrez un webhook pour l’événement "SA_CREDIT_COMPLETED" et une fois que les fonds crédités sur le compte du client.
API Contrats 
Paiements
Exemple de requête de "payment handle"
Vous devez transmettre l’objet virement Interac dans la requête de "payment handle" :
"interacEtransfer": {
"consumerId": "krissjames.12@gmail.com",
"type":"EMAIL"
}
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
consumerId | string | true | L’adresse courriel ou le numéro de téléphone du client ou de l’utilisateur final auprès duquel l’argent doit être perçu. |
true | string | false | Par défaut : EMAIL Pour transmettre le numéro de téléphone portable, il faut spécifier le type PHONE. |
Exemple de requête de "payment handle"
{
"merchantRefNum":"118a0bb7-7239-43ea-b6a8-1dd8b5b765ad",
"transactionType":"PAYMENT",
"paymentType":"INTERAC_ETRANSFER",
"amount":"544",
"currencyCode":"CAD",
"customerIp":"172.0.0.1",
"interacEtransfer":{
"consumerId":"madhubaddam@paysafe.com",
"type":"EMAIL"
},
"billingDetails":{
"street1":"100 Queen",
"street2":"Unit 201",
"city":"Melbourne",
"state":"Victoria",
"zip":"3000",
"country":"AU"
},
"profile":{
"firstName":"Madhu",
"lastName":"Baddam",
"email":"madhu@paysafe.com"
},
"returnLinks":[
{
"rel":"default",
"href":"http://www.amazon.in"
},
{
"rel":"on_failed",
"href":"http://www.costco.ca"
},
{
"rel":"on_cancelled",
"href":"http://www.bestbuy.ca"
}
]
}
Exemple de réponse du "payment handle"
{
"id": "514b4cf1-8891-445d-9b58-e50ae02d8c3c",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PHEkR6gInY2NM05X",
"merchantRefNum": "afca4603-a9d7-4010-866f-f5a7204f36fd",
"currencyCode": "CAD",
"txnTime": "2021-10-06T13:15:22Z",
"billingDetails": {
"street": "100 Queen",
"street2": "Unit 201",
"city": "Melbourne",
"zip": "3000",
"state": "Victoria",
"country": "AU"
},
"customerIp": "172.0.0.1",
"status": "INITIATED",
"links": [
{
"rel": "redirect_payment",
"href": "https://api.qa.paysafe.com/alternatepayments/v1/redirect?accountId=1018169820&paymentHandleId=514b4cf1-8891-445d-9b58-e50ae02d8c3c&token=eyJhbGciOiJIUzI1NiJ9.eyJhY2QiOiIxMDE4MTY5ODIwIiwicHlkIjoiNTE0YjRjZjEtODg5MS00NDVkLTliNTgtZTUwYWUwMmQ4YzNjIiwiZXhwIjoxNjMzNTI3OTIzfQ.DvMBbCsxckQhKwsUSpHEAh9IkpGuIyaPFsa4heWUxNE"
}
],
"liveMode": false,
"simulator": "EXTERNAL",
"usage": "SINGLE_USE",
"action": "REDIRECT",
"executionMode": "SYNCHRONOUS",
"amount": 544,
"timeToLiveSeconds": 899,
"gatewayResponse": {
"id": "Gs27oxf1xsoUJRrB",
"processor": "INTERAC",
"status": "AVAILABLE"
},
"returnLinks": [
{
"rel": "on_failed",
"href": "http://www.costco.ca"
},
{
"rel": "default",
"href": "http://www.amazon.in"
},
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
}
],
"transactionType": "PAYMENT",
"gatewayReconciliationId": "e17a0f2f-ab84-4fe0-a405-a6ef104120dc",
"updatedTime": "2021-10-06T13:15:23Z",
"statusTime": "2021-10-06T13:15:23Z",
"interacEtransfer": {
"consumerId": "madhu.baddam@paysafe.com",
"type": "EMAIL"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu@paysafe.com"
}
}
Exemple de requête de paiement
{
"merchantRefNum": "b9405251-5ede-4439-b844-73ff553144a5",
"amount": "546",
"currencyCode": "CAD",
"settleWithAuth": true,
"paymentHandleToken": "PHEkR6gInY2NM05X"
}
Exemple de réponse à un paiement
{
"id": "568530f0-262a-453f-b681-1088195d9439",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PHEkR6gInY2NM05X",
"merchantRefNum": "b9405251-5ede-4439-b844-73ff553144a5",
"currencyCode": "CAD",
"settleWithAuth": true,
"dupCheck": true,
"txnTime": "2021-10-06T13:18:58Z",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"city": "Melbourne",
"zip": "3000",
"state": "Victoria",
"country": "AU"
},
"status": "PROCESSING",
"gatewayReconciliationId": "Io27oxf1xsqOrDIe",
"amount": 546,
"availableToRefund": 0,
"consumerIp": "172.0.0.1",
"liveMode": false,
"simulator": "EXTERNAL",
"updatedTime": "2021-10-06T13:20:18Z",
"statusTime": "2021-10-06T13:20:18Z",
"gatewayResponse": {
"id": "Io27oxf1xsqOrDIe",
"processor": "INTERAC",
"status": "AVAILABLE"
},
"availableToSettle": 0,
"interacEtransfer": {
"consumerId": "madhu.baddam@paysafe.com",
"type": "EMAIL"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu@paysafe.com"
},
"settlements": {
"amount": 546,
"txnTime": "2021-10-06T13:18:58.000+0000",
"availableToRefund": 0,
"merchantRefNum": "b9405251-5ede-4439-b844-73ff553144a5",
"id": "568530f0-262a-453f-b681-1088195d9439",
"status": "PROCESSING"
}
}
Pour en savoir plus sur chaque paramètre, vous pouvez consulter la rubrique Paiements.
{
"merchantRefNum": "8e103c2d-891c-4b42-b3ba-28aaf371ad25",
"transactionType": "VERIFICATION",
"paymentType": "INTERAC_ETRANSFER",
"amount": 543,
"currencyCode": "CAD",
"dupCheck": true,
"liveMode": true,
"interacEtransfer": {
"consumerId": "madhu@paysafe.com"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com"
}
}
Exemple de réponse du "payment handle"
{
"id": "cbd5a3a4-fbba-4d09-a666-662ff13c1628",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PHd0GFCqwJqu9YkV",
"merchantRefNum": "0a8c7252-1ba6-4e89-b666-3f11ed3ffb20",
"currencyCode": "CAD",
"txnTime": "2021-10-06T13:43:18Z",
"status": "PAYABLE",
"liveMode": false,
"simulator": "EXTERNAL",
"action": "NONE",
"amount": 543,
"timeToLiveSeconds": 899,
"gatewayResponse": {
"processor": "INTERAC"
},
"transactionType": "VERIFICATION",
"updatedTime": "2021-10-06T13:43:18Z",
"statusTime": "2021-10-06T13:43:18Z",
"interacEtransfer": {
"consumerId": "madhu@paysafe.com"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com"
}
}
Pour en savoir plus sur chaque paramètre, vous pouvez consulter la rubrique "Payment Handles".
Exemple de requête de vérification
{
"paymentHandleToken": "PHd0GFCqwJqu9YkV",
"currencyCode": "CAD",
"merchantRefNum": "0a8c7252-1ba6-4e89-b666-3f11ed3ffb20",
"amount": "543"
}
Exemple de réponse à une vérification
{
"id": "d19ca286-6497-4dc5-bcd6-c1b80431800a",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PHd0GFCqwJqu9YkV",
"merchantRefNum": "ab428d69-1135-4db7-9305-999605b48814",
"currencyCode": "CAD",
"txnTime": "2021-10-06T09:40:52Z",
"billingDetails": {
"street1": "100 Queen Street West",
"street2": "stree 2",
"city": "Toronto",
"zip": "M5H 2N2",
"state": "CA",
"country": "NL"
},
"status": "COMPLETED",
"amount": 543,
"updatedTime": "2021-10-06T09:40:52Z",
"statusTime": "2021-10-06T09:40:52Z",
"liveMode": false,
"simulator": "EXTERNAL",
"gatewayResponse": {
"processor": "INTERAC"
},
"interacEtransfer": {
"consumerId": "madhu@paysafe.com",
"maxAmount": 500000,
"transferType": "ALIAS_REGULAR"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com"
}
}
{
"merchantRefNum": "0ec1bcb3-2994-4440-acd9-1d71dd0f0988",
"transactionType": "STANDALONE_CREDIT",
"paymentType": "INTERAC_ETRANSFER",
"amount": 500,
"currencyCode": "CAD",
"customerIp": "172.0.0.1",
"interacEtransfer": {
"consumerId": "madhu@paysafe.com",
"question": "what is your name",
"answer": "MadhuBaddam"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com",
"phone": "12345678"
},
"browserDetails": {
"userCookie": "testusercoockie"
}
}
Exemple de réponse du "payment handle"
{
"id": "9129cf41-c403-455f-b5b2-6cd76cbeaed7",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PH6grPCguAtRInwc",
"merchantRefNum": "4f55a9f1-f19d-4bc7-b52f-7ef7133995a1",
"currencyCode": "CAD",
"txnTime": "2021-10-06T13:37:58Z",
"customerIp": "172.0.0.1",
"status": "PAYABLE",
"liveMode": false,
"simulator": "EXTERNAL",
"action": "NONE",
"amount": 500,
"timeToLiveSeconds": 899,
"gatewayResponse": {
"id": "Yd27oxf1xt1HwRRi",
"processor": "INTERAC",
"status": "ACCEPTED"
},
"transactionType": "STANDALONE_CREDIT",
"gatewayReconciliationId": "14a92cf4-011a-4598-8cf0-3eb926b1abb8",
"updatedTime": "2021-10-06T13:37:59Z",
"statusTime": "2021-10-06T13:37:59Z",
"browserDetails": {
"userCookie": "testusercoockie"
},
"interacEtransfer": {
"consumerId": "madhu@paysafe.com",
"question": "what is your name",
"answer": "MadhuBaddam",
"maxAmount": 500000,
"transferType": "ALIAS_REGULAR"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com",
"phone": "12345678"
}
}
Pour en savoir plus sur chaque paramètre, vous pouvez consulter la rubrique "Payment Handles".
Dépôt automatique
{
"merchantRefNum": "mer_ref_1646289201",
"transactionType": "STANDALONE_CREDIT",
"paymentType": "INTERAC_ETRANSFER",
"amount": 500,
"currencyCode": "CAD",
"customerIp": "172.0.0.1",
"interacEtransfer": {
"consumerId": "paysafeauto@paysafe.com"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com",
"phone": "12345678"
},
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore"
},
"returnLinks": [
{
"rel": "default",
"href": "http://www.amazon.ca"
},
{
"rel": "on_failed",
"href": "http://www.costco.ca"
},
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
}
],
"browserDetails": {
"userCookie": "testusercoockie"
}
}
{
"id": "b1d312e0-91c2-4a64-be50-42f02c58b1c0",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PHC3sQw2EaDNrSFy",
"merchantRefNum": "mer_ref_1646288564",
"currencyCode": "CAD",
"txnTime": "2022-03-03T06:22:55Z",
"customerIp": "172.0.0.1",
"status": "PAYABLE",
"liveMode": false,
"action": "NONE",
"amount": 500,
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore"
},
"timeToLiveSeconds": 899,
"gatewayResponse": {
"id": "bpw3csW2cHypVNVF",
"processor": "PEOPLE_TRUST",
"status": "ACCEPTED",
"profile": {
"fullName": "customername"
}
},
"returnLinks": [
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
},
{
"rel": "default",
"href": "http://www.amazon.ca"
},
{
"rel": "on_failed",
"href": "http://www.costco.ca"
}
],
"transactionType": "STANDALONE_CREDIT",
"gatewayReconciliationId": "46fe2e4b-bbf8-4976-9d6f-216150edf17c",
"updatedTime": "2022-03-03T06:22:55Z",
"statusTime": "2022-03-03T06:22:55Z",
"browserDetails": {
"userCookie": "testusercoockie"
},
"interacEtransfer": {
"consumerId": "paysafeauto@paysafe.com",
"maxAmount": 390000,
"transferType": "ALIAS_AUTODEPOSIT"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com",
"phone": "12345678"
}
}
Exemple de requête de retrait
{
"merchantRefNum": "4f55a9f1-f19d-4bc7-b52f-7ef7133995a1",
"amount": "500",
"currencyCode": "CAD",
"paymentHandleToken": "PH6grPCguAtRInwc",
"customerIp": "172.0.0.1",
"description": "Magazine subscription"
}
Exemple de réponse pour retrait
{
"id": "b7759f69-b194-41ad-aab2-164432596c04",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PH6grPCguAtRInwc",
"merchantRefNum": "4f55a9f1-f19d-4bc7-b52f-7ef7133995a1",
"currencyCode": "CAD",
"dupCheck": true,
"txnTime": "2021-10-06T13:38:44Z",
"customerIp": "172.0.0.1",
"status": "PROCESSING",
"gatewayReconciliationId": "f58a0d95-0934-46dd-bcd3-96c4990be3f3",
"amount": 500,
"liveMode": false,
"simulator": "EXTERNAL",
"updatedTime": "2021-10-06T13:38:44Z",
"statusTime": "2021-10-06T13:38:44Z",
"gatewayResponse": {
"id": "Yd27oxf1xt1HwRRi",
"processor": "INTERAC",
"status": "AVAILABLE"
},
"interacEtransfer": {
"consumerId": "madhu@paysafe.com",
"question": "what is your name",
"answer": "MadhuBaddam",
"maxAmount": 500000,
"transferType": "ALIAS_REGULAR"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com",
"phone": "12345678"
}
}
Pour en savoir plus sur chaque paramètre, vous pouvez consulter la rubrique Crédits autonomes.
Annexe
"Payment Handle"
Un "payment handle" représente des informations segmentées sur le mode de paiement que vous avez défini pour votre client. Une fois le "payment handle" créé, vous pouvez inclure le paymentHandleToken renvoyé dans la réponse à la requête de "payment handle" dans une nouvelle requête de paiement.
Flux de paiement :
- Créer une requête API Paiements.
- Dans la réponse de l’API Paiements, vous verrez un lien de redirection et paymentHandleToken.
- Un "payment handle" peut être utilisé dans une requête de paiement seulement si l’état est PAYABLE.
- PaymentHandleToken expire dans 899 secondes
- Redirigez l’utilisateur vers le lien de redirection, fourni dans la réponse à la requête de paiement.
- Vous recevrez un webhook avec l’état paymentHandleToken "PAYABLE".
- Attendez 10 minutes et laissez l’utilisateur effectuer la transaction sur la page Interac.
Interac ne redirige pas le client vers la page du marchand une fois qu’il a effectué le paiement. Il est donc conseillé d’afficher un message au client lors de la redirection vers la page Interac. Vous pouvez afficher un message « Veuillez fermer l’onglet et revenir sur cette page après avoir effectué le paiement ». En outre, vous pouvez avoir des récepteurs sur la fermeture des onglets (sur la page Interac de redirection), et une fois que l’événement de fermeture d’onglet est reçu, vous pouvez effectuer un appel API GET pour confirmer l’état.
- Pour savoir ce que l’utilisateur a fait sur la page Interac (fermeture, annulation ou achèvement de la transaction), vous pouvez effectuer un appel API GET.
- L’appel à l’API POST "/payments" n’est possible que si l’état du paymentHandleToken est "PAYABLE".
- Le client a terminé la transaction :
- Si Interac a averti Paysafe, vous recevrez l’état COMPLETED en réponse de même que le webhook PAYMENT_COMPLETED.
- Si Interac n’a pas informé Paysafe, vous recevrez l’état "PROCESSING" en réponse.
- Interac prend au maximum 30 minutes pour informer Paysafe après que l’utilisateur a effectué la transaction sur la page de la banque.
Une fois l’appel API POST "/payments" effectué, l’état de paymentHandleToken passe de "PAYABLE" à "COMPLETED".
- Le client a refusé ou n’a pas terminé la transaction :
Si le marchand n’effectue pas d’appel /payments dans les 899 secondes pour obtenir un paymentHandleToken :
- Le client a effectué la transaction via la page de la banque, Paysafe effectue le paiement pour le compte du marchand. et ce dernier reçoit a) PAYMENT_COMPLETED ou b) PAYMENT_PROCESSING suivi de PAYMENT_COMPLETED.
Le client a refusé la transaction ou ne l’a pas terminée, la transaction échoue, et vous recevrez l’événement PAYMENT_HANDLE_FAILED.
- Le traitement de votre "payment handle" devient Completed et l’état du paiement est Processing.
Deux jours plus tard, nous marquerons l’échec de la transaction et vous recevrez la notification "PAYMENT_FAILED".
- Le client a terminé la transaction :

Flux de retrait
Le flux de retrait peut être mis en œuvre de deux manières :
- API Vérification + API Crédit autonome
- Ce modèle vous permet de connaître la limite de retrait maximale et de savoir si l’utilisateur s’est enregistré pour le dépôt automatique ou non, ce qui vous permet de décider de l’expérience utilisateur.
API Crédit autonome
API Vérification
- Créez une requête API Paiements avec le paramètre transactionType défini sur VERIFICATION et le paramètre paymentType défini sur INTERAC_ETRANSFER.
- Ce "payment handle" doit immédiatement avoir l’état PAYABLE.
- Effectuez un appel API POST "/verifications" avec paymentHandleToken "PAYABLE".
- Vous recevrez l’état du dépôt automatique et la limite maximale.
API Crédit autonome
Créez une requête API "Payment Handle" avec le paramètre transactionType défini sur STANDALONE_CREDIT et le paramètre paymentType défini sur INTERAC_ETRANSFER.
- L’état de ce "payment handle" sera soit PAYABLE ou FAILED.
- L’appel à l’API POST "/standalonecredits" n’est possible que si paymentHandleToken est "PAYABLE".
- Dans le flux de dépôt automatique, l’argent est directement crédité sur le compte de l’utilisateur. Vous recevrez SA_CREDIT_PROCESSING immédiatement et SA_CREDIT_COMPLETED à T+1.
- S’il s’agit d’un flux sans dépôt automatique, vous recevrez l’état "PROCESSING".
- Une fois que le client a terminé la transaction dans les 30 jours, vous recevrez le webhook SA_CREDIT_COMPLETED.
- PaymentHandleToken expire dans 899 secondes
- Si le marchand n’envoie pas l’appel /standalonecredits dans les 899 secondes pour un paymentHandleToken, le paymentHandleToken expirera et vous recevrez un webhook PAYMENT_HANDLE_EXPIRED.

Webhooks
- PAYMENT_HANDLE_PAYABLE : à la réception de ce webhook, le marchand doit lancer l’appel paymenthub/v1/payments.
- PAYMENT_COMPLETED/SETTLEMENT_COMPLETED : le paiement a été effectué avec succès.
- PAYMENT_PROCESSING : le paiement est en cours. Dans certains cas, il peut s’agir d’attendre une action du client ou du marchand.
- Et les webhooks facultatifs ci-dessous
- PAYMENT_HANDLE_EXPIRED : ce webhook est envoyé lorsque le client n’a pas effectué le paiement sur la page de la banque dans le délai TTL du jeton paymentHandle. Le marchand peut donc clore la transaction comme n’ayant pas été effectuée.
- PAYMENT_HANDLE_COMPLETED : le jeton de "payment handle" est utilisé avant l’expiration.
- PAYMENT_FAILED : le paiement a échoué et le PSP en aval a renvoyé une erreur (état http 402).
- PAYMENT_ERRORED : le paiement comporte une erreur (erreur non liée à un état http 402).
- SETTLEMENT_FAILED : à utiliser pour savoir quand l’état du règlement devient FAILED.
- SETTLEMENT_FAILED : à utiliser pour savoir quand l’état du règlement devient ERRORED.
Cette page a-t-elle été utile ?
- Types de transaction
- Scénarios habituels
- Paiement (flux de requête d’argent)
- Paiement (envoyer un flux d’argent)
- Retrait
- API Contrats
- Exemple de réponse du "payment handle"
- Exemple de requête de paiement
- Exemple de réponse à un paiement
- Vérification
- Retrait ou crédits autonomes
- Dépôt automatique
- Annexe