Virement électronique 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 des institutions personnelles et commerciales qui permet aux marchands de percevoir des fonds auprès des consommateurs canadiens pour payer des marchandises. Le virement Interac est une option de paiement populaire auprès des consommateurs canadiens.
Types de transaction
Le virement Interac prend en charge les deux transactions suivantes :
- Paiements
- Retraits autorisés
Exigences de configuration
Pour créer un compte de test dans l’environnement de bac à sable et de production, Paysafe a besoin des informations suivantes :
- Compte bancaire
- Adresse électronique du marchand
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 gestionnaire de paiement 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 gestionnaire de paiement 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.
API à utiliser
Paiement (envoyer un flux d’argent)
Pour traiter une requête de paiement Interac, procédez comme suit :
Créez un gestionnaire de paiement 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 gestionnaire de paiement 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.
API à utiliser
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 gestionnaire de paiement avec le paramètre transactionType défini sur STANDALONE_CREDIT et le paramètre paymentType défini sur INTERAC_ETRANSFER
Ce gestionnaire de paiement 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 gestionnaire de paiement 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 gestionnaire de paiement 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 à utiliser
API Contrats
Paiements
Exemple de requête de gestion de paiement
Vous devez transmettre l’objet virement Interac dans la requête de gestion du paiement :
"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 gestion de paiement
{
"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 gestionnaire de paiement
{
"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:"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:"transactionType": "VERIFICATION",
"paymentType": "INTERAC_ETRANSFER",
"amount":543,"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 gestionnaire de paiement
{
"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,"amount": 543,
"timeToLiveSeconds": 899,
"gatewayResponse": {
"processor": "INTERAC"
},
transactionType:"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 Gestionnaires de paiement.
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":"M5H2N2","zip": "M5H 2N2","zip": "M5H 2N2",
"state": "CA",
"country": "NL"
},
"status": "COMPLETED",
"amount":543,"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:"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 gestionnaire de paiement
{
"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:"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 Gestionnaires de paiement.
Dépôt automatique
{
"merchantRefNum": "mer_ref_1646289201",
transactionType:"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:"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
Gestion du paiement
Un gestionnaire de paiement représente des informations segmentées sur le mode de paiement que vous avez défini pour votre client. Une fois le gestionnaire de paiement créé, vous pouvez inclure le paymentHandleToken renvoyé dans la réponse à la requête de gestion de paiement 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 gestionnaire de paiement 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 gestionnaire de paiement 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 gestionnaire de paiement 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 Gestionnaire de paiement avec le paramètre transactionType défini sur STANDALONE_CREDIT et le paramètre paymentType défini sur INTERAC_ETRANSFER.
- L’état de ce gestionnaire de paiement 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 gestion du paiement 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.
Cas de simulation
Paiement
En mode production, People Trust nous rappellera pour compléter la transaction. Pour reproduire ces scénarios, nous avons donc ajouté des cas de simulation.
Les simulations basées sur les montants ci-dessous sont utilisées pour les transactions de paiement COMPLETE/FAIL avec le simulateur interne. Nous devons envoyer la valeur du montant dans la requête pour obtenir le résultat souhaité.
Montant (en dollars) | État | Limite de temps |
---|---|---|
5.19 ou 119 | COMPLETED | Après 20 secondes |
5,29 ou 129 | COMPLETED | Après 5 minutes |
5,39 ou 139 | COMPLETED | Après 15 minutes |
5,49 ou 149 | FAILED | Après 5 minutes |
- L’état changera après la limite de temps. Exemple : pour un montant de 5,29, le système attendra 5 minutes et mettra à jour l’état.
- Pour l’état COMPLETED, les webhooks seront déclenchés automatiquement après la limite de temps sans aucun appel de recherche
- Pour l’état FAILED, il faut faire un appel de recherche après la limite de temps pour obtenir les webhooks.
{
"merchantRefNum": "1387453849343947",
transactionType:"transactionType": "PAYMENT",
"paymentType": "INTERAC_ETRANSFER",
"amount": 519,
"currencyCode": "CAD",
"customerIp": "172.0.0.1",
"interacEtransfer": {
"consumerId": "madhu.baddam@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"
}
}
FullName:
Cette section explique comment renvoyer un nom complet différent dans l’objet gatewayresponse en réponse.
En général, pour toutes les transactions de paiement terminé, nous renvoyons le prénom et le nom de famille en tant que nom complet dans la réponse. Pour obtenir une valeur différente dans le nom complet, envoyez la valeur du montant 105 dans la requête, « JOHN SMITH » sera renvoyé comme nom complet dans la réponse à chaque fois.
Réponse normale
{
"id": "36c237e9-0973-4509-9231-998b25ddbdf0",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PHP1ouu8SVipCCjb",
"merchantRefNum": "2fcebe3d-63e1-4df9-aea5-4492ac5c0091",
"currencyCode": "CAD",
"settleWithAuth": true,
"txnTime": "2022-02-06T13:41:38Z",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"city": "Melbourne",
"zip": "3000",
"state": "Victoria",
"country": "AU"
},
"status": "COMPLETED",
"gatewayReconciliationId": "0928b6d2-0000-4f7f-ba77-9814dec5f643",
"amount": 519,
"availableToRefund": 519,
"consumerIp": "172.0.0.1",
"liveMode": false,
"updatedTime": "2022-02-06T13:41:58Z",
"statusTime": "2022-02-06T13:41:58Z",
"gatewayResponse": {
"profile": {
"fullName": "Madhu Baddam"
},
"id": "FRwDo5XNl8unDJk1",
"processor": "INTERAC",
"status": "DEPOSIT_COMPLETE"
},
"availableToSettle": 0,
"interacEtransfer": {
"consumerId": "madhu.baddam@paysafe.com",
"type": "EMAIL"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu@paysafe.com"
}
}
Réponse de la simulation pour le montant 105
{
"id": "2bcf8261-c7ac-40e4-8451-38670355cba1",
"paymentType": "INTERAC_ETRANSFER",
"paymentHandleToken": "PHQmoqj8i7NQb1TB",
"merchantRefNum": "4f258664-5a57-49f8-8835-2c801352e0ae",
"currencyCode": "CAD",
"settleWithAuth": true,
"txnTime": "2022-02-06T13:52:17Z",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"city": "Melbourne",
"zip": "3000",
"state": "Victoria",
"country": "AU"
},
"status": "COMPLETED",
"gatewayReconciliationId": "14ce6cb7-d5df-4d23-990f-2407fbfae957",
"amount": 105,
"availableToRefund": 105,
"consumerIp": "172.0.0.1",
"liveMode": false,
"updatedTime": "2022-02-06T13:52:28Z",
"statusTime": "2022-02-06T13:52:28Z",
"gatewayResponse": {
"profile": {
"fullName": "JOHN SMITH"
},
"id": "9BtHBjgSDlXPjqg0",
"processor": "INTERAC",
"status": "DEPOSIT_COMPLETE"
},
"availableToSettle": 0,
"interacEtransfer": {
"consumerId": "madhu.baddam@paysafe.com",
"type": "EMAIL"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu@paysafe.com"
}
}
Paiement (envoyer un flux d’argent)
Le paiement d’envoi d’argent sera créé dans la production en l’état PENDING. En outre, nous mettons à jour l’état des paiements dès que nous recevons un appel de Peoples Trust.
Pour reproduire cette situation avec le simulateur interne, nous devons toucher un point de terminaison afin de faire passer l’état du paiement à COMPLETED.
Les simulations basées sur le montant énumérées ci-dessous sont utilisées pour effectuer des opérations de paiement avec le simulateur interne. Pour obtenir le résultat souhaité, nous devons fournir une valeur de montant dans la requête.
Les paiements des montants autres que Crédit autonome et Vérifications seront effectués instantanément.
Montant (en dollars) | État | Limite de temps |
---|---|---|
5.19 ou 119 | COMPLETED | Après 20 secondes |
5,29 ou 129 | COMPLETED | Après 5 minutes |
5,39 ou 139 | COMPLETED | Après 15 minutes |
POST: /alternatepayments/interacetransfer/v1/autodeposit/payment
Champs du corps de la requête :
amount: montant utilisé pour le paiement
paymentReference: numéro de paymentReference généré lors du paiement
accountNumber: accountNumber utilisé lors de la création du compte
Requête :
{
“amount”: 129,
“paymentReference”: “369SBKQADW”
“accountNumber”: “629-16001-000000010000”
}
Réponse :
{
“amount”: 129,
“status”: “AVAILABLE”,
“paymentReference": "369SBKQADW ",
"account_number": "629-16001-000000010000"
}
Crédits autonomes
Les simulations basées sur les montants ci-dessous sont utilisées pour les transactions de paiement COMPLETE/FAIL/ERROR avec le simulateur interne.
Montant (en dollars) | État | Limite de temps |
---|---|---|
7,19 ou 719 | COMPLETED | Après 60 minutes |
7,29 ou 729 | FAILED | Après 60 minutes |
7,39 ou 739 | COMPLETED | Immédiatement |
- Pour les crédits autonomes il faut toujours faire un appel de recherche pour les webhooks.
{
"merchantRefNum": "13982837948732984732",
transactionType:"transactionType": "STANDALONE_CREDIT",
"paymentType": "INTERAC_ETRANSFER",
"amount": 719,
"currencyCode": "CAD",
"customerIp": "172.0.0.1",
"interacEtransfer": {
"consumerId": "madhutest@paysafe.com",
"question": "what is your name",
"answer": "MadhuBaddam"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com",
"phone": "12345678"
},
"browserDetails": {
"userCookie": "testusercoockie"
},
"deviceDetails": {
"deviceId": "testdeviceid"
}
}
Vérifications
Il existe deux types de clients pour PEOPLE TRUST.
- ALIAS_AUTODEPOSIT
- ALIAS_REGULAR
Pour simuler les types ci-dessus, nous devons ajouter les chaînes suivantes dans le champ consumerId.
pour ALIAS_AUTODEPOSIT → envoyer « auto » dans consumerId
exemple : testauto@paysafe.com
pour ALIAS_REGULAR → envoyer « reg » dans consumerId
Exemple : testreg@paysafe.com
Remarque : Si nous n’envoyons pas les simulations ci-dessus dans le consumerId, la réponse sera aléatoire.
{
"merchantRefNum": "f8203e56-1920-40df-93f0-56c10bd48064",
transactionType:"transactionType": "VERIFICATION",
"paymentType": "INTERAC_ETRANSFER",
"amount":543,"amount": 543,
"currencyCode": "CAD",
"dupCheck": true,
"liveMode": true,
"interacEtransfer": {
"consumerId": "autoemail@paysafe.com"
},
"profile": {
"firstName": "Madhu",
"lastName": "Baddam",
"email": "madhu.baddam@paysafe.com"
},
"billingDetails": {
"street1": "100 Queen Street West",
"street2": "stree 2",
"city": "Toronto",
"state": "CA",
"country": "NL",
"zip": "M5H 2N2"
}
}
FullName:
Pour obtenir une valeur différente dans le champ fullName, nous devons ajouter la valeur « nmchk » dans consumerId.
Exemple : testnmchkauto@paysafecom -→ renverra "JOHN SMITH" dans la réponse pour fullName.
Remarque : fullName n’est renvoyé que pour les transactions ALIAS_AUTODEPOSIT. Il faut donc ajouter auto dans le consumerId