Search Overlay

Mazooma

Mazooma est un mode de paiement en ligne aux États-Unis qui traite les paiements (dépôts) et les retraits via le réseau ACH (automated clearing house, chambre de compensation automatisée) basé aux États-Unis. L’API Paiements Paysafe prend en charge Mazooma en tant qu’instrument de paiement.

Exigences de configuration

Pour que Paysafe puisse créer un compte de test dans un environnement de bac à sable et de production, contactez Mazooma et obtenez les informations suivantes :

  • Identifiant du marchand
  • Identifiant du site du marchand

  • Clé secrète du marchand

Exigences en matière de certification

Chaque marchand doit passer par un processus de certification pour accepter Mazooma comme mode de paiement. Pour en savoir plus, voire le site des développeurs Mazooma.

Types de transaction

Paysafe prend en charge les types de transactions suivants :

  1. Paiements - pour 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.
  2. Retraits - pour transférer de l’argent du compte du marchand au compte bancaire du client.

Scénarios habituels

Paiements

Lorsque vous souhaitez traiter une requête de paiement, procédez comme suit :

Faites un appel de vérification

L’appel de vérification est utilisé pour récupérer les comptes bancaires sauvegardés de l’utilisateur du côté Mazooma.

  • Créez un Payment Handle avec le paramètre transactionType défini sur VERIFICATION et le paramètre paymentType défini sur MAZOOMA.
    • POST: paymenthub/v1/paymenthandles
  • Vous recevrez "paymentHandleToken" dans la réponse. La réponse doit comporter l’état PAYABLE.
  • Utilisez le « paymentHandleToken » pour traiter l’API Vérification.
    • POST: paymenthub/v1/verifications
  • Dans la réponse de l’API Vérification, vous verrez l’état COMPLETED et recevrez un bankToken (mazooma.achBankAccounts.paymentHandleToken) pour chaque compte.
    • Si aucun compte bancaire n’est ajouté dans Mazooma, vous verrez l’état FAILED.
  • Stockez le bankToken de votre côté

Le BankToken (mazooma.achBankAccounts.paymentHandleToken) est un identifiant unique pour chaque compte bancaire de l’utilisateur et reste le même. Le BankToken est ensuite utilisé pour créer un jeton de paiement à usage unique qui sert à effectuer le paiement pour chaque transaction unique. À Mazooma, les banques enregistrées sont appelées UPO (User Payment Option). Dans les API Paysafe, la banque ou l’UPO sauvegardée est appelée bankToken (mazooma.achBankAccounts.paymentHandleToken).

Effectuer un appel de paiement

Utilisateur avec un bankToken

  1. Créez un gestionnaire de paiement avec le paramètre transactionType défini sur PAYMENT et le paramètre paymentType défini sur MAZOOMA.
    1. POST: paymenthub/v1/paymenthandles
  2. Puisque le client a un bankToken :
    • Transmettez le consumerid et bankToken dans l’objet mazooma.
  3. Vous recevrez "paymentHandleToken" dans la réponse. La réponse doit comporter l’état PAYABLE.
  4. 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 :
    1. POST: paymenthub/v1/payments

Utilisateur sans bankToken

  1. Créez un gestionnaire de paiement avec le paramètre transactionType défini sur PAYMENT et le paramètre paymentType défini sur MAZOOMA.
    1. Post : paymenthub/v1/paymenthandles
  2. Comme le client doit effectuer le paiement en sélectionnant le compte bancaire sur la page Plaid, Paysafe renvoie une réponse contenant le message suivant :
    • Le paramètre action est défini sur REDIRECT
    • Un lien redirect_payment renvoie à l’URL de redirection de Plaid.
  3. Redirigez le client vers l’URL de redirection Plaid.
    1. 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.
      1. Sur la page de redirection, le client sélectionne la banque, fournit ses authentifiants et effectue la transaction.
  4. 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 :
    1. POST: paymenthub/v1/payments
  5. Vous recevrez un bankToken (mazooma.achBankAccounts.paymentHandleToken) dans la réponse. La réponse doit comporter l’état COMPLETED.
    1. Le bankToken peut être utilisé dans le flux "User with bankToken".

Retrait

Lorsque vous souhaitez traiter une requête de retrait, vous devez procéder comme suit :

Faites un appel de vérification

L’appel de vérification est utilisé pour récupérer les comptes bancaires sauvegardés de l’utilisateur du côté Mazooma.

  • Créez un Payment Handle avec le paramètre transactionType défini sur VERIFICATION et le paramètre paymentType défini sur MAZOOMA.
    • POST: paymenthub/v1/paymenthandles
  • Vous recevrez "paymentHandleToken" dans la réponse. La réponse doit comporter l’état PAYABLE.
  • Utilisez le « paymentHandleToken » pour traiter l’API Vérification.
    • POST: paymenthub/v1/verifications
  • Dans la réponse de l’API Vérification, vous verrez l’état COMPLETED et recevrez un bankToken (mazooma.achBankAccounts.paymentHandleToken) pour chaque compte.
    • Si aucun compte bancaire n’est ajouté dans Mazooma, vous verrez l’état FAILED.
  • Stockez le bankToken de votre côté.

Le BankToken (mazooma.achBankAccounts.paymentHandleToken) est un identifiant unique pour chaque compte bancaire de l’utilisateur et reste le même. Le BankToken est ensuite utilisé pour créer un jeton de paiement à usage unique qui sert à effectuer le paiement pour chaque transaction unique. À Mazooma, les banques enregistrées sont appelées UPO (User Payment Option). Dans les API Paysafe, la banque ou l’UPO sauvegardée est appelée bankToken (mazooma.achBankAccounts.paymentHandleToken).

Effectuer un appel de retrait

Utilisateur avec un bankToken

  1. Créez un gestionnaire de paiement avec le paramètre transactionType défini sur STANDALOE_CREDIT et le paramètre paymentType défini sur MAZOOMA.
    1. POST: paymenthub/v1/paymenthandles
  2. Puisque le client a un bankToken :
    • Transmettez le consumerid et bankToken dans l’objet mazooma.
  3. Vous recevrez "paymentHandleToken" dans la réponse. La réponse doit comporter l’état PAYABLE.
  4. Utilisez le paymentHandleToken renvoyé dans la réponse pour traiter la requête de retrait via l’API Paiements à l’aide de la clé privée. Vous devez lancer une requête POST vers le point de terminaison :
    1. POST: paymenthub/v1/standalonecredits

Supprimer un compte bancaire

Effectuez une requête de suppression de compte bancaire en utilisant la méthode HTTP DELETE. 

https://{{host}}:{{port}}/paymenthub/v1/registrations/mazooma.registrationId/achbankaccounts/mazooma.achBankAccounts.id

Vous verrez "mazooma.registrationId" et "mazooma.achBankAccounts.id" dans la réponse de l’API Vérification.

Supprimez une réponse concernant un compte bancaire

{ "id": "e1915843-bc19-48e9-8ac5-3eed98da72", "paymentHandleToken": "BARmCEZM0j1ldnMY", "bankName": "CHASE" }

API Contrats

Vous devez transmettre l’objet Mazooma dans toutes les requêtes du gestionnaire de paiement.

consumerId: il s’agit d’un numéro d’identification unique pour chaque client. 

Vérification

Exemple de requête de vérification de gestion de paiement

{

"merchantRefNum": "SriTest-1644827808",
transactionType:"transactionType": "VERIFICATION",
"paymentType": "MAZOOMA",
"amount": 100,
"currencyCode": "USD",
"dupCheck": true,
"liveMode": true,
"mazooma": {
"consumerId": "PP_100222"
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": "23",
"month": "12",
"year": "1990"
},
"phone": 1234567891
},
"billingDetails": {
"street1": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"state": "NY",
"country": "US",
"zip": "14236"
},
"returnLinks": [
{
"rel": "default",
"href": "http://www.amazon.ca"
},
{
"rel": "on_failed",
"href": "http://www.costco.ca"
},
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
}
]

}

Exemple de réponse lors d’une vérification de gestion de paiement

{

"id": "826dc476-0feb-417f-9f26-0f1ffe4e6aef",
"paymentType": "MAZOOMA",
"paymentHandleToken": "PHfS2VUcFdlzUOLo",
"merchantRefNum": "SriTest-1644827349",
"currencyCode": "USD",
"txnTime": "2022-02-14T08:29:09Z",
"billingDetails": {
"street": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"zip": "14236",
"state": "NY",
"country": "US"
},
"customerIp": "10.152.253.42",
"status": "PAYABLE",
"liveMode": false,
"simulator": "EXTERNAL",
"action": "NONE",
"amount": 100,
"timeToLiveSeconds": 899,
"gatewayResponse": {
"processor": "MAZOOMA"
},
"returnLinks": [
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
},
{
"rel": "on_failed",
"href": "http://www.costco.ca"
},
{
"rel": "default",
"href": "http://www.amazon.ca"
}
],
transactionType:"transactionType": "VERIFICATION",
"updatedTime": "2022-02-14T08:29:09Z",
"statusTime": "2022-02-14T08:29:09Z",
"mazooma": {
"consumerId": "PP_100222"
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": 23,
"month": 12,
"year": 1990
},
"phone": "1234567890"
}

}

Exemple de requête de vérification

{

"paymentHandleToken": "PH7qGLyvMxTbwyeY",
"merchantRefNum": "mer_ref_1644827397",
"amount": 100,
"customerIp": "172.10.12.64",
"dupCheck": false,
"description": "Winning payment from Loto 649"
}

Exemple de réponse à une vérification

{

"id": "dc04b025-796a-4538-a738-a2ff0b83a11e",
"paymentType": "MAZOOMA",
"merchantRefNum": "SriTest-1644827349",
"currencyCode": "USD",
"txnTime": "2022-02-14T08:29:27Z",
"billingDetails": {
"street1": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"zip": "14236",
"state": "NY",
"country": "US"
},
"status": "COMPLETED",
"amount": 100,
"updatedTime": "2022-02-14T08:29:28Z",
"statusTime": "2022-02-14T08:29:28Z",
"liveMode": false,
"simulator": "EXTERNAL",
"gatewayResponse": {
"processor": "MAZOOMA"
},
"mazooma": {
"consumerId": "PP_100222",
"achBankAccounts": [
{
"id": "4a641804-be44-41b9-966d-8075035fa531",
"lastDigits": "99",
"bankName": "CHASE",
"paymentToken": "BAUEQlIPBN4XDpzr",
"allowedTypes": [
"PAYMENT",
"STANDALONE_CREDIT"
]
},
{
"id": "8bc1f585-2e60-4d61-9330-a1b6bf9d0e6c",
"lastDigits": "99",
"bankName": "CHASE",
"paymentToken": "BA1v8EaBkkVOKIuE",
"allowedTypes": [
"PAYMENT",
"STANDALONE_CREDIT"
]
},
{
"id": "af92bcfb-c338-45e9-83ed-e4bf87858727",
"lastDigits": "99",
"bankName": "CHASE",
"paymentToken": "BARKbHKW2qOLdstG",
"allowedTypes": [
"PAYMENT",
"STANDALONE_CREDIT"
]
}
],
"registrationId": "b0a7ae1b-1ffc-41ae-89d4-b70be1087642"
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": 23,
"month": 12,
"year": 1990
},
"phone": "1234567890"
}

}

"allowedTypes": [ "PAYMENT", "STANDALONE_CREDIT" ] Cela signifie que le bankToken peut être utilisé à la fois pour PAYMENT/Deposit et STANDALONE_CREDIT/Withdrawal

Exemple de requête de gestion de paiement sans bankToken

{

"merchantRefNum": "66ba92be-630c-4762-a89f-7cceefb88b9d",
transactionType:"transactionType": "PAYMENT",
"paymentType": "MAZOOMA",
"amount": 100,
"currencyCode": "USD",
"customerIp": "172.0.0.1",
"mazooma": {
"consumerId": "PP_100222"
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": "23",
"month": "12",
"year": "1990"
},
"phone": 1234567891
},
"billingDetails": {
"street1": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"state": "NY",
"country": "US",
"zip": "14236"
},
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"returnLinks": [
{
"rel": "default",
"href": "http://www.amazon.ca"
},
{
"rel": "on_failed",
"href": "http://www.costco.ca"
},
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
}
]

}

Exemple de requête de gestion de paiement avec bankToken

{

"merchantRefNum": "ba7dd492-aac3-4147-9857-d98aa062a4ab",
transactionType:"transactionType": "PAYMENT",
"paymentType": "MAZOOMA",
"amount": 100,
"currencyCode": "USD",
"customerIp": "172.0.0.1",
"mazooma": {
"consumerId": "KK_213",
"ach": {
"paymentHandleToken": "BAru0JIKuktMcLsy"
}
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": "23",
"month": "12",
"year": "1990"
},
"phone": 1234567891
},
"billingDetails": {
"nickName": "Home",
"street": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"state": "NY",
"country": "US",
"zip": "14236"
},
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore",
"phone": "12345678"
},
"returnLinks": [
{
"rel": "default",
"href": "http://www.amazon.ca"
},
{
"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": "cf005f03-8c31-4afb-884b-20ce9cb10190",
"paymentType": "PAYSAFECASH",
"paymentHandleToken": "PHtxnH0z99GXgc0Z",
"merchantRefNum": "ba4d021c-af45-4a64-b38a-c08f231e3825",
"currencyCode": "USD",
"txnTime": "2022-05-27T11:49:01Z",
"billingDetails": {
"street": "100 Queen",
"street2": "Unit 201",
"city": "New York",
"zip":"M5H2N2","zip": "M5H 2N2","zip": "M5H 2N2",
"country": "US"
},
"customerIp": "172.0.0.1",
"status": "INITIATED",
"links": [
{
"rel": "redirect_payment",
"href": "https://api.test.paysafe.com/alternatepayments/v1/redirect?accountId=1002453740&paymentHandleId=cf005f03-8c31-4afb-884b-20ce9cb10190&token=eyJhbGciOiJIUzI1NiJ9.eyJhY2QiOiIxMDAyNDUzNzQwIiwicHlkIjoiY2YwMDVmMDMtOGMzMS00YWZiLTg4NGItMjBjZTljYjEwMTkwIiwiZXhwIjoxNjUzNjUzOTQxfQ.NO-FSBVgbI8L5fGR5o9RI-Z5DhckyRmEFOGJMsRZuiU"
}
],
"liveMode": false,
"simulator": "EXTERNAL",
"usage": "SINGLE_USE",
"action": "REDIRECT",
"executionMode": "SYNCHRONOUS",
"amount": 1000,
"merchantDescriptor": {
"dynamicDescriptor": "Test Paysafe",
"phone": "12345678"
},
"timeToLiveSeconds": 899,
"gatewayResponse": {
"processor": "SKRILL_QCO",
"sid": "a7f3fbc00a31bf85f82a0fd10df7979c"
},
"returnLinks": [
{
"rel": "default",
"href": "https://usgaminggamblig.com/payment/default"
},
{
"rel": "on_completed",
"href": "https://codepen.io/warrendunlop/full/YmVKzm"
},
{
"rel": "on_cancelled",
"href": "https://usgaminggamblig.com/payment/return/failed"
}
],
transactionType:"transactionType": "PAYMENT",
"gatewayReconciliationId": "a5dbbd41-56da-4770-9e61-d2c1cda514eb",
"updatedTime": "2022-05-27T11:49:01Z",
"statusTime": "2022-05-27T11:49:01Z",
"paysafecash": {
"consumerId": "parag.p@test.com"
},
"profile": {
"firstName": "Parag",
"lastName": "P"
}

}

Exemple de requête de paiement

{

"merchantRefNum": "1644905922",
"amount": "100",
"currencyCode": "USD",
"dupCheck": true,
"settleWithAuth": true,
"paymentHandleToken": "PHD7rsXBgzRbllak",
"customerIp": "172.0.0.1",
"description": "Magazine subscription"

}

Exemple de réponse à un paiement

{

"id": "42da1422-1575-4c35-a36e-b9afd9c6abbe",
"paymentType": "MAZOOMA",
"paymentHandleToken": "PHD7rsXBgzRbllak",
"merchantRefNum": "1644905916",
"currencyCode": "USD",
"settleWithAuth": true,
"dupCheck": true,
"txnTime": "2022-02-15T06:17:38Z",
"billingDetails": {
"street1": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"zip": "14236",
"state": "NY",
"country": "US"
},
"status": "COMPLETED",
"gatewayReconciliationId": "d4474b2c-3ad5-4d2c-bf28-79d0259e6055",
"amount": 100,
"consumerIp": "172.0.0.1",
"liveMode": false,
"simulator": "EXTERNAL",
"updatedTime": "2022-02-15T06:18:37Z",
"statusTime": "2022-02-15T06:18:37Z",
"gatewayResponse": {
"orderId": "305887918",
"errCode": "0",
"id": "d4474b2c-3ad5-4d2c-bf28-79d0259e6055",
"internalRequestId": "394715428",
"processor": "MAZOOMA",
"status": "SUCCESS"
},
"availableToSettle": 0,
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": 23,
"month": 12,
"year": 1990
},
"phone": "1234567890"
},
"settlements": {
"amount": 100,
"txnTime": "2022-02-15T06:17:38.000+0000",
"merchantRefNum": "1644905916",
"id": "42da1422-1575-4c35-a36e-b9afd9c6abbe",
"status": "COMPLETED"
}

}

Retrait

Exemple de requête de gestion de paiement avec bankToken


{
"merchantRefNum": "mer_ref_1644906040",
transactionType:"transactionType": "STANDALONE_CREDIT",
"paymentType": "MAZOOMA",
"amount": 100,
"currencyCode": "USD",
"customerIp": "172.0.0.1",
"mazooma": {
"consumerId": "PP_100222",
"ach": {
"paymentHandleToken": "BAFtcP4i8r0udbEK"
}
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": "23",
"month": "12",
"year": "1990"
},
"phone": 1234567891
},
"billingDetails": {
"street1": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"state": "NY",
"country": "US",
"zip": "14236"
},
"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"
}
]

}

Exemple de réponse du gestionnaire de paiement

{

"id": "5c71dce8-61ed-4672-83ae-878293a17c71",
"paymentType": "MAZOOMA",
"paymentHandleToken": "PHWKPdpJr8g7lMwi",
"merchantRefNum": "mer_ref_1644906067",
"currencyCode": "USD",
"txnTime": "2022-02-15T06:21:07Z",
"billingDetails": {
"street": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"zip": "14236",
"state": "NY",
"country": "US"
},
"customerIp": "172.0.0.1",
"status": "PAYABLE",
"liveMode": false,
"simulator": "EXTERNAL",
"action": "NONE",
"amount": 100,
"merchantDescriptor": {
"dynamicDescriptor": "OnlineStore"
},
"timeToLiveSeconds": 899,
"gatewayResponse": {
"processor": "MAZOOMA"
},
"returnLinks": [
{
"rel": "on_failed",
"href": "http://www.costco.ca"
},
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
},
{
"rel": "default",
"href": "http://www.amazon.ca"
}
],
transactionType:"transactionType": "STANDALONE_CREDIT",
"updatedTime": "2022-02-15T06:21:08Z",
"statusTime": "2022-02-15T06:21:08Z",
"mazooma": {
"consumerId": "PP_100222",
"ach": {
"paymentHandleToken": "BAFtcP4i8r0udbEK"
}
},
"_links": {
"self": {
"href": "http://paysafe-psp-alternatepayments-mazooma.mtl-qa.svc.cluster.local/v1/accounts/9becfecc-e69a-4e38-87dc-36e1d5efbcd1/paymenttypes/mazooma/paymenthandles/b61baa59-0127-4baf-9183-ecf66f150e9b"
}
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": 23,
"month": 12,
"year": 1990
},
"phone": "1234567890"
}

}

Exemple de requête de retrait

{

"merchantRefNum": "mer_ref_1644906067",
"amount": "100",
"currencyCode": "USD",
"dupCheck": true,
"settleWithAuth": true,
"paymentHandleToken": "PHWKPdpJr8g7lMwi",
"customerIp": "172.0.0.1",
"description": "Magazine subscription"

}

Exemple de réponse pour retrait

{

"id": "fa19cd7c-2a41-4d42-adc2-5c9115d7d191",
"paymentType": "MAZOOMA",
"paymentHandleToken": "PHWKPdpJr8g7lMwi",
"merchantRefNum": "mer_ref_1644906067",
"currencyCode": "USD",
"dupCheck": true,
"txnTime": "2022-02-15T06:21:54Z",
"billingDetails": {
"street1": "Queen Street West",
"street2": "Queen Street",
"city": "Imphal",
"zip": "14236",
"state": "NY",
"country": "US"
},
"customerIp": "172.0.0.1",
"status": "COMPLETED",
"gatewayReconciliationId": "49514d38-3741-43f2-94d9-24bfb7b57170",
"amount": 100,
"returnLinks": [
{
"rel": "default",
"href": "http://www.amazon.ca"
},
{
"rel": "on_failed",
"href": "http://www.costco.ca"
},
{
"rel": "on_cancelled",
"href": "http://www.bestbuy.ca"
}
],
"liveMode": false,
"simulator": "EXTERNAL",
"updatedTime": "2022-02-15T06:21:58Z",
"statusTime": "2022-02-15T06:21:58Z",
"gatewayResponse": {
"transactionStatus": "APPROVED",
"errCode": "0",
"id": "49514d38-3741-43f2-94d9-24bfb7b57170",
"externalTransactionId": "7110000000148650",
"processor": "MAZOOMA",
"transactionId": "711000000008001548",
"status": "SUCCESS"
},
"mazooma": {
"consumerId": "PP_100222",
"ach": {
"paymentHandleToken": "BAFtcP4i8r0udbEK"
}
},
"profile": {
"firstName": "ALBERTA",
"lastName": "BOBBETHCHARLESON",
"email": "accountholder0@example.com",
"dateOfBirth": {
"day": 23,
"month": 12,
"year": 1990
},
"phone": "1234567890"
}

}

Annexe

Paiement

Une fois l’appel /paymenthandles effectué, Mazooma vérifie le solde disponible sur le compte de l’utilisateur. Si les fonds sont disponibles, le marchand reçoit le webhook "PAYABLE"; si les fonds ne sont pas disponibles, le marchand reçoit le webhook "FAILED".

À Mazooma, les banques enregistrées sont appelées UPO (User Payment Option). Dans les API Paysafe, la banque ou l’UPO sauvegardée est appelée bankToken (mazooma.achBankAccounts.paymentHandleToken).

Le débit réel sur le compte du client intervient à un stade ultérieur. 

Débit sur le compte du client

Mazooma tente de débiter le compte du client le jour T+1.

Si les fonds sont disponibles sur le compte de l’utilisateur, Mazooma débitera le compte de l’utilisateur. Le marchand ne recevra pas de webhook.

Si cette tentative échoue en raison d’une insuffisance de fonds, vous recevrez deux webhooks; webhook "Return" (retour) suivi du webhook "Representment" (représentation)

Si cette tentative échoue en raison d’une erreur ou d’un problème autre que "Insufficient Funds" (insuffisance de fonds) vous recevrez alors 1 Webhooks; webhook "Return" (retour)

Représentation

La représentation est une tentative de débiter le compte bancaire du client si Mazooma n’est pas en mesure de débiter le compte du client le jour T+1.

Il y aura au maximum deux tentatives de représentation.

Représentation 1 : Mazooma tentera de débiter le compte de l’utilisateur le jour T+3 à partir de la date de la transaction.

Si les fonds sont disponibles sur le compte de l’utilisateur, Mazooma débitera le compte de l’utilisateur. Le marchand ne recevra pas de webhook.

Si cette tentative échoue, vous recevrez 2 webhooks; webhook "Return" (retour) suivi du webhook "Representment" (représentation)

Représentation 2 : Tentative de débit du compte bancaire du client en cas d’échec de la première représentation. Mazooma tentera à nouveau de débiter le compte de l’utilisateur soit le 15 du mois ou le dernier jour du mois, selon la date la plus proche.

  • Si les fonds sont disponibles sur le compte de l’utilisateur, Mazooma débitera le compte de l’utilisateur. Le marchand ne recevra pas de webhook.
  • Si cette tentative échoue, alors le webhook "Return" sera envoyé. Il n’y aura pas de webhook "Representment"

Si la transaction est refusée par Mazooma (puisque la représentation a échoué), vous recevrez un webhook "Return". 

Webhooks

À Mazooma, les banques enregistrées sont appelées UPO (User Payment Option).

Paiement sans UPO

1. L’utilisateur a créé un PaymentHandle et a été redirigé vers Mazooma et a effectué le paiement.

  • Paymenthandle= PAYABLE

2. L’utilisateur a créé un PaymentHandle et a été redirigé vers Mazooma et a effectué le paiement, puis le marchand a lancé un appel de paiement; la transaction est réussie.

  • Paymenthandle=COMPLETED, Payment=COMPLETED

3. L’utilisateur a créé PaymentHandle et n’a pas été redirigé vers Mazooma.

  • Paymenthandle=INITIATED

4. L’utilisateur a créé un PaymentHandle et a été redirigé vers Mazooma

  • Paymenthandle=PROCESSING

5. L’utilisateur a créé un PaymentHandle et a été redirigé vers Mazooma, mais l’autorisation de la transaction a échoué.

  • Paymenthandle=FAILED

6. L’utilisateur a créé un PaymentHandle a été redirigé vers Mazooma, mais une erreur s’est produite lors de la redirection vers le lien PSP.

  • Paymenthandle=FAILED

Paiement avec UPO

  1. L’utilisateur a créé un PaymentHandle avec des détails UPO valides et a été redirigé vers Mazooma pour effectuer le paiement.
    • Paymenthandle= PAYABLE
  2. L’utilisateur a créé un PaymentHandle avec des détails UPO valides et a été redirigé vers Mazooma pour effectuer le paiement, puis le marchand a lancé un appel de paiement; la transaction est réussie.
    • Paymenthandle=COMPLETED, Payment=COMPLETED

Retrait (crédit autonome)

  1. L’utilisateur a créé le SCT_Paymenthandle, et le marchand n’a pas initié l’appel Standalonecredits.
    • Paymenthandle=PAYABLE
  2. L’utilisateur a créé un PaymentHandle, et le marchand a complété l’appel Standalonecredits.
    • Paymenthandle=COMPLETED, Standalonecredits=COMPLETED
  3. L’utilisateur a créé un PaymentHandle, et le marchand a initié un appel Standalonecredits; la transaction est passée à "PROCESSING"
    • Paymenthandle=COMPLETED, Standalonecredits=COMPLETED
    • Le marchand recevra le webhook Standalonecredit=COMPLETED une fois que l’état passe de PROCESSING à COMPLETED
  4. L’utilisateur a créé un Paymenthandle, et le marchand a initié un appel Standalonecredits avec des données de transaction non valides.
    • Paymenthandle=COMPLETED, Standalonecredits=ERROR)

Instructions de test

Cette section explique comment tester les scénarios pour obtenir les résultats escomptés avec le simulateur interne.

Paiement

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é. 

  • L’état changera après la limite de temps. Exemple : pour le montant 101, il attendra 1 minute pour passer à APPROUVED, puis mettra à jour l’état à DECLINED dans 3 minutes.
Montant (en dollars)Scénario réelCas de simulationWebhooks
101

Le compte de l’utilisateur présente un solde suffisant au moment où la transaction est initiée. Mazooma a approuvé la transaction.

  • Vous recevrez le webhook "PAYABLE" pour la gestion du paiement.

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+1, mais la transaction a échoué pour une raison autre que "Insufficient Balance" (solde insuffisant).

  • Vous recevrez un webhook "RETURN"
  • Vous recevrez le webhook "PAYABLE" dans les 60 secondes.
  • Vous recevrez le webhook "RETURN" après 180 secondes.
Gestionnaire de paiement "PAYABLE" dans les 60 secondes -> Webhook "RETURN" après 180 secondes
102

Le compte de l’utilisateur présente un solde suffisant au moment où la transaction est initiée. Mazooma a approuvé la transaction.

  • Vous recevrez le webhook "PAYABLE" pour la gestion du paiement.

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+1, mais la transaction a échoué pour une raison autre que "Insufficient Balance". Admissible pour REPRESENTMENT.

  • Vous recevrez un webhook "RETURN" et un webhook "REPRESENTMENT".
  • Vous recevrez le webhook de gestion de paiement "PAYABLE" après 60 secondes.
  • Vous recevrez le webhook "RETURN" et le webhook "REPRESENTMENT" après 120 secondes.
Gestionnaire de paiement "PAYABLE" dans les 60 secondes -> Webhook "RETURN" & Webhook "REPRESENTMENT" après 120 secondes
103

Le compte de l’utilisateur présente un solde suffisant au moment où la transaction est initiée. Mazooma a approuvé la transaction.

  • Vous recevrez le webhook "PAYABLE" pour la gestion du paiement.

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+1, mais la transaction a échoué pour une raison autre que "Insufficient Balance". Admissible pour REPRESENTMENT.

  • Vous recevrez un webhook "RETURN" et un webhook "REPRESENTMENT".

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+3, mais la transaction a échoué pour une raison autre que "Insufficient Balance". Non admissible pour REPRESENTMENT.

  • Vous recevrez un webhook "RETURN"
  • Vous recevrez le webhook "PAYABLE" dans les 60 secondes.
  • Vous recevrez le webhook "RETURN" et le webhook "REPRESENTMENT" après 120 secondes.
  • Vous recevrez le webhook "RETURN" après 180 secondes.
Gestionnaire de paiement "PAYABLE" dans les 60 secondes -> Webhook "RETURN" & Webhook "REPRESENTMENT" après 120 secondes -> webhook "RETURN" après 180 secondes
104

Le compte de l’utilisateur présente un solde suffisant au moment où la transaction est initiée. Mazooma a approuvé la transaction.

  • Vous recevrez le webhook "PAYABLE" pour la gestion du paiement.

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+1, mais la transaction a échoué pour une raison autre que "Insufficient Balance". Admissible pour REPRESENTMENT

  • Vous recevrez un webhook "RETURN" et un webhook "REPRESENTMENT".

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+3, mais la transaction a échoué pour une raison autre que "Insufficient Balance". Admissible pour REPRESENTMENT

  • Vous recevrez un webhook "RETURN" et un webhook "REPRESENTMENT".
  • Vous recevrez le webhook "PAYABLE" dans les 60 secondes.
  • Vous recevrez le webhook "RETURN" et le webhook "REPRESENTMENT" après 120 secondes.
  • Vous recevrez le webhook "RETURN" et le webhook "REPRESENTMENT" après 3 minutes.
Gestionnaire de paiement "PAYABLE" dans les 60 secondes -> Webhook "RETURN" & Webhook "REPRESENTEMENT" après 120 secondes -> webhook "RETURN" & Webhook "REPRESENTMENT" après 180 secondes
105

Le compte de l’utilisateur présente un solde suffisant au moment où la transaction est initiée. Mazooma a approuvé la transaction.

  • Vous recevrez le webhook "PAYABLE" pour la gestion du paiement.

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+1, mais la transaction a échoué pour une raison autre que "Insufficient Balance". Admissible pour REPRESENTMENT

  • Vous recevrez un webhook "RETURN" et un webhook "REPRESENTMENT".

Mazooma a essayé de débiter le compte de l’utilisateur le jour T+3, mais la transaction a échoué pour une raison autre que "Insufficient Balance". Admissible pour REPRESENTMENT

  • Vous recevrez un webhook "RETURN" et un webhook "REPRESENTMENT".

Mazooma a essayé de débiter le compte de l’utilisateur le 15 du mois ou le dernier jour du mois, mais le débit a échoué.

  • Vous recevrez un webhook "RETURN"
  • Vous recevrez le webhook "PAYABLE" dans les 60 secondes.
  • Vous recevrez le webhook "RETURN" et le webhook "REPRESENTMENT" après 120 secondes.
  • Vous recevrez le webhook "RETURN" et le webhook "REPRESENTMENT" après 3 minutes.
  • Vous recevrez un webhook "RETURN"
Gestionnaire de paiement "PAYABLE" dans les 60 secondes -> Webhook "RETURN" & Webhook "REPRESENTEMENT" après 120 secondes -> webhook "RETURN" & Webhook "REPRESENTMENT" après 120 secondes -> webhook "RETURN" après 180 secondes

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)ÉtatNotification DMNLimite de temps
101COMPLETEDAPPROUVÉ -> REFUSÉAPPROUVÉ après 60 secondes – REFUSÉ après 3 minutes

Codes d’erreur

Codes de réponse API

Code d’erreur MazoomaRaisonÉtat HTTP PaysafeCode d’erreur PaysafeMessage d’erreur PaysafeDétails d’erreur PaysafeÉtat PaysafeRaison de l’étatRemarques
1000Erreur générale5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1010Jeton d’utilisateur non valide4005068INVALID_FIELDSoit vous avez soumis une requête pour laquelle il manque un champ obligatoire, soit la valeur d’un champ ne correspond pas au format attendu.ERRORs.o. 
1011Données UserPaymentOption manquantes ou non valides4005068INVALID_FIELDSoit vous avez soumis une requête pour laquelle il manque un champ obligatoire, soit la valeur d’un champ ne correspond pas au format attendu.ERRORs.o. 
1021Horodatage non valide5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1023Option de paiement par l’utilisateur non activée4005068INVALID_FIELDSoit vous avez soumis une requête pour laquelle il manque un champ obligatoire, soit la valeur d’un champ ne correspond pas au format attendu.ERRORs.o.mazooma.ach.paymentHandleToken non valide
1024Dépassement de la limite UPO par utilisateur5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1038Erreur de communication5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1040Montant non valide ou manquant4005068INVALID_FIELDSoit vous avez soumis une requête pour laquelle il manque un champ obligatoire, soit la valeur d’un champ ne correspond pas au format attendu.ERRORs.o. 
1041Devise du montant non valide ou manquante4005068INVALID_FIELDSoit vous avez soumis une requête pour laquelle il manque un champ obligatoire, soit la valeur d’un champ ne correspond pas au format attendu.ERRORs.o. 
1064Jeton de session non valide Il ne peut y avoir qu’une seule commande par jeton de session.5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1065Jeton non valide5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1066Requête non valide5021001 Une erreur de passerelle externe s’est produite.ERRORs.o. 
1067Type de transaction non valide ou manquant5021001 Une erreur de passerelle externe s’est produite.ERRORs.o. 
1068Mode de paiement non activé  ACCOUNT_NOT_ACTIVATED    
1069Session expirée5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1074L’option de paiement de l’utilisateur a expiré.5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1090L’UPO n’a pas un état valide. Les états valides sont ENABLED, SUSPENDED et FROZEN.5011001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
1109Adresse courriel non valide4005068INVALID_FIELDSoit vous avez soumis une requête pour laquelle il manque un champ obligatoire, soit la valeur d’un champ ne correspond pas au format attendu.ERRORs.o. 
1113{0}L’État ne fait pas partie du pays4005068INVALID_FIELDSoit vous avez soumis une requête pour laquelle il manque un champ obligatoire, soit la valeur d’un champ ne correspond pas au format attendu.ERRORs.o. 
1121Marchand non vérifié4005017Compte désactivéLe compte fourni est désactivé.ERRORs.o. 
1122Site du marchand désactivé4005017Compte désactivéLe compte fourni est désactivé.ERRORs.o. 
1125Mode de paiement UPO non pris en charge par cette méthode.5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
2006Conversion de devise non prise en charge5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9065La devise n’est pas prise en charge par le mode de paiement5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9066Taux de change non disponible5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9072Paiement toujours en cours5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9073Pays et devise non valides ou manquants5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9083clientRequestId non valide ou manquant5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9084Le clientRequestId fourni n’est pas associé à une transaction de paiement.5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
90939093Compte introuvable5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9095L’ajout de compte bancaire a échoué.5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
9096Impossible de provisionner le compte de l’utilisateur pour l’instant.5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o. 
Pour tous les autres codes d’erreur 5021001Erreur de la passerelle externeUne erreur de passerelle externe s’est produite.ERRORs.o.