Transactions par prélèvement automatique
Cette page décrit comment traiter les transactions par prélèvement automatique via le service Web de Paysafe. Les opérations suivantes sont prises en charge :
Opération | Description | Pour | Type de requête |
---|---|---|---|
Débit | Permet de transférer de l’argent du compte bancaire d’un client vers votre compte marchand. Cette transaction est effectuée en temps réel, mais le réseau bancaire prend 2 à 5 jours pour transférer les fonds, en fonction du système bancaire. | TEF | |
Crédit | Vous permet de transférer de l’argent de votre compte marchand directement sur le compte bancaire d’un client. Cette transaction est effectuée en temps réel, mais le réseau bancaire prend 2 à 5 jours pour transférer les fonds, en fonction du système bancaire. | TEF | |
Mettre à jour les renseignements d’expédition | Permet d’envoyer des renseignements sur l’expédition, y compris un numéro de suivi, une fois que vous avez expédié des marchandises pour lesquelles vous avez précédemment traité une transaction de type « débit ». | TEF | |
Recherche d’informations | Vous permet d’exécuter un rapport par l’intermédiaire de l’API sur une plage de dates que vous spécifiez pour obtenir des données sur les transactions de prélèvement automatique et de crédit traitées par l’intermédiaire de votre compte marchand. | TEF | |
Requête de mandat | Permet de créer un mandat pour le compte bancaire d’un client et de le déposer auprès de sa banque, ce qui vous permet de transférer de l’argent du compte bancaire du client vers votre compte marchand. Le réseau bancaire prend généralement 5 jours pour traiter le mandat. | BACS | Voir Créer des requêtes de mandat BACS (Royaume-Uni). |
Modifier un état | Permet de modifier l’état d’une opération de débit, de crédit ou de mandat. | TEF | |
Mettre à jour un mandat | Permet de mettre à jour les informations contenues dans un mandat existant. | SEPA |
La disponibilité des types d’opérations de prélèvement automatique est attribuée en fonction du marchand, étant donné que toutes les banques des marchands ne prennent pas en charge toutes les opérations. Si vous avez des questions, veuillez communiquer avec votre gestionnaire de compte.
- Les opérations de débit et de crédit acceptent un objet de document ddCheckRequestV1.
- L’opération updateShippingInfo accepte un objet de document ddShippingRequestV1.
- L’opération de recherche accepte un objet de document ddLookupRequestV1.
- L’opération de requête de mandat accepte un objet de document ddMandateRequest.
- L’opération de modification d’état accepte un objet de document ddChangeStatusRequest.
- L’opération de mise à jour du mandat accepte un objet de document ddUpdateMandateRequest.
- Toutes les opérations renvoient une réponse ddCheckResponseV1.
-
Créez un nouveau projet.
-
Ajoutez une référence Web.
-
Saisissez l’URL du WSDL et cliquez sur le bouton Ajouter une référence.
-
Le client Web est maintenant créé.
Créer des requêtes de débit ou de crédit
Les requêtes de débit et de crédit nécessitent l’objet de document ddCheckRequestV1. Cette section décrit la structure d’une ddCheckRequestV1 et comment en créer une. Voir Éléments ddCheckRequestV1 pour connaître les éléments requis.
exemple de débit – C#
Voici un exemple de débit en C#.
Pour en faire une requête de crédit, modifiez la valeur “charge” – dans la ligne “DDCheckResponseV1 ddTxnResponse = ddService.charge(ddCheckRequest)” ci-dessous – en “credit”.
// Prepare the call to the Direct Debit Web Service
DDCheckRequestV1 ddCheckRequest = new DDCheckRequestV1();
ddCheckRequest.amount = "10.00";
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ddCheckRequest.merchantAccount = merchantAccount;
CheckV1 check = new CheckV1();
check.routingNum = "123456789";
check.accountNum = "987654321";
check.accountType = BankAccountTypeV1.PC;
check.bankName = "Chase";
check.checkNum = 12;
check.payee = "ACME Inc.";
ddCheckRequest.check = check;
BillingDetailsV1 billingDetails = new BillingDetailsV1();
billingDetails.firstName = "Jane";
billingDetails.lastName = "Jones";
billingDetails.street = "123 Main Street";
billingDetails.city = "LA";
billingDetails.country = CountryV1.US;
billingDetails.zip = "90210";
billingDetails.phone = "555-555-5555";
billingDetails.checkPayMethod = CheckPayMethodV1.WEB;
ddCheckRequest.billingDetails = billingDetails;
//Perform the Web Services call to process the request
DirectDebitServiceV1 ddService = new DirectDebitServiceV1();
DDCheckResponseV1 ddTxnResponse = ddService.charge(ddCheckRequest);
// Print out the result
String responseTxt = ddTxnResponse.code + " - " + ddTxnResponse.decision +
" - " + ddTxnResponse.description;
responseTxt += "Details:" + Environment.NewLine;
if (ddTxnResponse.detail != null)if (ddTxnResponse.detail != null)
{
for (int i = 0; i < ddTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ddTxnResponse.detail[i].tag + " - " +
ddTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ddTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ddTxnResponse.decision);
}
schéma ddCheckRequestV1
Un objet de document ddCheckRequestV1 a la structure suivante :
Éléments ddCheckRequestV1
Cette requête est utilisée pour les transactions de prélèvement automatique dans le cadre de divers programmes. Voir ci-dessous les exigences supplémentaires relatives aux éléments de prélèvement automatique pour les variations de certains éléments requis.
L’objet de document ddCheckRequestV1 peut contenir les éléments suivants :
Élément | Élément enfant | Requis | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Oui | string Max = 10 | Il s’agit du numéro de compte marchand. |
storeID | Oui | string Max = 80 | Il s’agit de l’identifiant du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
storePwd | Oui | string Max = 20 | Il s’agit du mot de passe du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
merchantRefNum | Conditional | string Max = 40 | Il s’agit du numéro d’identification unique associé à la requête initiale. La valeur est créée par le marchand et soumise dans le cadre de la requête initiale. Elle n’est renvoyée qu’en réponse à une requête de recherche. | |
montant | Oui | string Max = | Il s’agit du montant de la requête de transaction. REMARQUE : Ce champ nécessite un premier chiffre non nul et deux chiffres après la décimale. Une exception est faite dans les cas où un zéro initial est seul (p. ex. 0,99). | |
check | accountType | Facultatif | enumeration | Il s’agit du type de compte de chèques utilisé pour la transaction. Les valeurs éventuelles sont : • PC - Personal Checking (compte de chèques personnel) • PS - Personal Savings (compte d’épargne personnel) • PL - Personal Loan (prêt personnel) • BC - Business Checking (compte de chèques commercial) • BS - Business Savings (compte d’épargne commercial) • BL - Business Loan (prêt à l’entreprise) REMARQUE : Si cet élément n’est pas spécifié, la valeur par défaut est PC. |
bankName | Facultatif | string Max = 40 | Il s’agit du nom de la banque du client auprès de laquelle cette opération est comptabilisée. | |
checkNum | Oui | Long Max = 8 | Il s’agit du numéro de série du chèque, fourni au moment de la requête de transaction. | |
accountNum | Oui | string Max = 17 Si IBAN, | Il s’agit du numéro de compte bancaire du client. Pour les transactions SEPA, il s’agit de l’IBAN (International Bank Account Number) du compte bancaire du client. REMARQUE : Il ne peut pas être égal à zéro (0) et ne peut contenir que des caractères alphanumériques. | |
routingNum | Oui | string Min = 6 Max = 9 Si BIC, Min = 8 Max = 11 | Pour les comptes en USD, il s’agit du numéro d’acheminement à 9 chiffres de la banque du client. Pour les comptes en livres sterling, il s’agit du code de tri à 6 chiffres de la banque du client. Pour les comptes en dollars canadiens, il s’agit d’une combinaison de l’identifiant de l’institution à 3 chiffres suivi du numéro de transit à 5 chiffres de la succursale bancaire du client. Ils doivent être saisis dans cet ordre. Ne pas inclure d’espaces ni de tirets. Pour les transactions SEPA, il s’agit du BIC (Bank Identifier Code) du compte bancaire du client. Si vous n’avez pas le BIC, vous pouvez soumettre la valeur suivante, sensible à la casse : EMPTYBIC REMARQUE : Il ne peut pas être égal à zéro (0) et ne peut contenir que des caractères alphanumériques. | |
payee | Conditional | string Max = 81 | Il s’agit du descripteur qui apparaîtra sur le compte bancaire du client. Il n’est requis que pour les transactions de crédit. Si vous indiquez une valeur pour ce champ, cette valeur sera utilisée comme descripteur de l’énoncé. Si vous ne fournissez pas de valeur pour ce champ, la valeur par défaut configurée pour le compte marchand sera utilisée. | |
bankCountry | Conditional | enumeration | Il s’agit du pays dans lequel la banque est située. Voir Codes de pays pour les bons codes à utiliser. Cet élément n’est obligatoire que pour certains pays. | |
bankCity | Conditional | string Max = 40 | Il s’agit de la ville dans laquelle la banque est située. Cet élément n’est obligatoire que pour certains pays. | |
mandateReference | Conditional | string Max = 10 Pour SEPA, Max = 35 Pour BACS, Max = 10 | Il s’agit de la référence du mandat qui permet de débiter le compte. Il s’agit de la valeur attribuée au paramètre mandateReference dans la réponse à ddMandateRequestV1. REMARQUE : Cet élément est obligatoire pour les débits BACS et SEPA uniquement. | |
billingDetails | checkPayMethod | Facultatif | enumeration | Il s’agit du type de paiement. • WEB (compte de chèques personnel seulement) • TEL (compte de chèques personnel seulement) • PPD (compte de chèques personnel seulement) • CCD (compte de chèques commercial seulement) REMARQUE : Si cet élément n’est pas spécifié, la valeur par défaut est WEB. Il ne peut pas être défini sur WEB ou TEL pour les requêtes de crédit. |
firstName | Conditional | string Max = 40 | Il s’agit du prénom du client. Requis si checkPayMethod est défini sur WEB ou TEL. | |
lastName | Conditional | string Max = 40 | Il s’agit du nom de famille du client. Requis si accountType est défini sur PC, PS ou PL. | |
companyName | Conditional | string Max = 50 | Il s’agit du nom de l’entreprise. Requis si accountType est défini sur BC, BS ou BL. | |
street | Oui | string Max = 50 | Il s’agit de la première ligne de l’adresse du client. | |
street2 | Facultatif | string Max = 50 | Il s’agit de la deuxième ligne de l’adresse du client. | |
city | Oui | string Max = 40 | Il s’agit de la ville de résidence du client. | |
state/region | Conditional | Si État, alors énumération Si région, alors chaîne | Il s’agit de l’État, de la province ou de la région de résidence du client. Indiquez l’État/la province pour les États-Unis ou le Canada. Indiquez la région pour ailleurs qu’aux États-Unis ou au Canada. Voir Codes pour les bons codes à utiliser. | |
country | Oui | enumeration | Il s’agit du pays de résidence du client. Voir Codes de pays pour les bons codes à utiliser. | |
zip | Facultatif | string Max = 10 | Il s’agit du code ZIP du client s’il se trouve aux États-Unis; sinon, il s’agit du code postal du client. | |
phone | Facultatif | string Max = 40 | Il s’agit du numéro de téléphone du client. | |
adresse courriel | Facultatif | string Max = 100 | Il s’agit de l’adresse courriel du client. | |
personalID | idNumber | Facultatif | string Max = 20 | Il s’agit du numéro de l’identifiant fourni pour l’élément idType. |
idType | Facultatif | enumeration | Il s’agit du type d’identifiant utilisé pour identifier le titulaire du compte bancaire. • DL - Driver’s Licence (permis de conduire) • SS - Government ID (pièce d’identité émise par le gouvernement) • MI - Military ID (pièce d’identité militaire) • GN - Generic ID (pièce d’identité générique) | |
state/region | Facultatif | Si État, alors énumération Si région, alors chaîne | Il s’agit de l’État, de la province ou de la région où la pièce d’identité a été délivrée. Indiquez l’État/la province pour les États-Unis ou le Canada. Indiquez la région pour ailleurs qu’aux États-Unis ou au Canada. Voir Codes pour les bons codes à utiliser. | |
country | Facultatif | string Longueur = 2 | Il s’agit du pays dans lequel la pièce d’identité a été délivrée. Les valeurs éventuelles sont : • CA (Canada) • US (États-Unis) | |
expiry | Facultatif | L’élément enfant expiry a trois autres éléments enfants. | ||
Élément enfant du paramètre expiry | ||||
day | Facultatif | Int Longueur = 2 | Il s’agit de la date d’expiration de la pièce d’identité. | |
month | Facultatif | Int Longueur = 2 | Il s’agit du mois d’expiration de la pièce d’identité. | |
year | Conditional | Int Longueur = 4 | Il s’agit de l’année d’expiration de la pièce d’identité. Cet élément est requis si l’élément expiry est inclus. | |
socialSecurityNumber | Facultatif | string Max = 12 | Il s’agit du numéro d’assurance sociale du client. | |
dateOfBirth | Facultatif | Il s’agit de la date de naissance du client. | ||
year | Conditional | string Max = 4 1900–9999 | Il s’agit de l’année de naissance du client. | |
month | Conditional | string Max = 12 | Il s’agit du mois de naissance du client. | |
day | Conditional | string Max = 31 | Il s’agit du jour de naissance du client. | |
shippingDetails | carrier | Facultatif | enumeration | Il s’agit du transporteur. • APC = APC le lendemain • APS = AnPost • CAD = Service postal du Canada • DHL • FEX = Fedex • RML = Royal Mail • UPS = United Parcel Service • USPS = United States Postal Service • AUTRE |
trackingNumber | Facultatif | string Max = 50 | Il s’agit du numéro de suivi de l’expédition fourni par le transporteur. | |
shipMethod | Facultatif | enumeration | Il s’agit du mode d’expédition. • N = Next Day/Overnight (Le lendemain) • T = Two-Day Service (Service en deux jours) • C = Lowest Cost (Coût le plus bas) • O = Other (Autre) | |
firstName | Facultatif | string Max = 40 | Il s’agit du prénom du destinataire. | |
lastName | Facultatif | string Max = 40 | Il s’agit du nom de famille du destinataire. | |
street | Facultatif | string Max = 50 | Il s’agit de la première ligne de l’adresse du destinataire. | |
street2 | Facultatif | string Max = 50 | Il s’agit de la deuxième ligne de l’adresse du destinataire. | |
city | Facultatif | string Max = 40 | Il s’agit de la ville de résidence du destinataire. | |
state/region | Facultatif | Si État, Si région, alors chaîne | Il s’agit de l’État, de la province ou de la région de résidence du destinataire. Indiquez l’État/la province pour les États-Unis ou le Canada. Indiquez la région pour ailleurs qu’aux États-Unis ou au Canada. | |
country | Facultatif | enumeration | Il s’agit du pays de résidence du destinataire. | |
zip | Facultatif | string Max = 10 | Il s’agit du code ZIP du destinataire s’il se trouve aux États-Unis; sinon, il s’agit du code postal du destinataire. | |
phone | Facultatif | string Max = 40 | Il s’agit du numéro de téléphone du destinataire. | |
adresse courriel | Facultatif | string Max = 100 | Il s’agit de l’adresse courriel du destinataire. | |
customerIp | Facultatif | string Max = 50 | Il s’agit de l’adresse IP du client. | |
productType | Facultatif | enumeration | Il s’agit du type de produit vendu. • P - Physical Goods (Biens matériels) • D - Digital Goods (Biens numériques) • C - Digital Content (Contenu numérique) • G - Gift Certificate/Digital Cash (Certificat-cadeau/monnaie numérique) • S - Shareware (Partagiciel) • M - Both Digital and Physical (Numérique et Matériel) • R - Account Replenish (Réapprovisionnement de compte) | |
txnAppliedTo | No | Cet élément ne s’applique pas aux transactions par prélèvement automatique. | ||
confirmationNumber | Conditional | string Max = 15 | Il s’agit du numéro de confirmation renvoyé par Paysafe en réponse à la requête initiale. N’incluez cet élément que si vous utilisez ddCheckRequestV1 pour traiter une requête de crédit. | |
targetVirtualAccount | No | Cet élément ne s’applique pas aux transactions par prélèvement automatique. | ||
checkRiskService | No | Cet élément ne s’applique pas aux transactions par prélèvement automatique. | ||
txnDate | Facultatif | dateTime | Il s’agit de la date et de l’heure auxquelles la transaction a eu lieu. Pour un débit ou un crédit, ou pour ddMandateRequestV1, il peut s’agir de la date et de l’heure futures auxquelles la transaction aura lieu. Pour le SEPA, il s’agit de la future date de prélèvement. Le délai doit être d’au moins deux jours ouvrables pour toutes les requêtes de transactions SEPA. REMARQUE : La date de prélèvement qui en résulte sera renvoyée dans la paire balise/valeur de l’élément detail dans la réponse. | |
sdk | version | Conditional | string Max = 20 | Il s’agit de la version de la SDK utilisée, le cas échéant. Requis si l’élément sdk est fourni. |
platform | Conditional | string Max = 10 | Il s’agit du langage d’intégration de la SDK utilisée (p. ex. Java, .NET). Requis si l’élément sdk est fourni. | |
provider | Conditional | string Max = 20 | Il s’agit de l’auteur de la SDK utilisée. La valeur “op” est attribuée lorsque la SDK est fournie par Paysafe. Requis si l’élément sdk est fourni. | |
origin | Facultatif | enumeration | Il s’agit de l’origine de la requête. • Sans fil • Ligne filaire | |
addendumData | tag | Facultatif | string Max = 30 | Il s’agit de données supplémentaires que le marchand peut inclure dans la requête de transaction. |
value | Facultatif | string Max = 1024 | Il s’agit de données supplémentaires que le marchand peut inclure dans la requête de transaction. |
Considérations particulières pour les éléments de prélèvement automatique
Certains marchands sont intégrés à des processeurs en aval qui ont des exigences différentes en ce qui concerne les éléments obligatoires du prélèvement automatique. Dans ce cas, la règle suivante s’applique.
Exigences supplémentaires relatives aux éléments de prélèvement automatique
Élément | Transactions ordinaires | Transactions garanties | Transactions SEPA |
---|---|---|---|
check.accountType | Facultatif | Requis | Facultatif |
check.bankName | Facultatif | Requis | Facultatif |
check.checkNum | Requis | Requis | Facultatif |
check.payee | Facultatif | Facultatif | Requis |
check.bankCountry | Conditional | Conditional | Facultatif |
check.bankCity | Conditional | Conditional | Facultatif |
check.mandateReference | Conditional | Conditional | Requis pour les débits seulement. |
billingDetails.firstName | Conditional | Requis | Requis |
billingDetails.lastName | Conditional | Requis | Requis |
billingDetails.companyName | Conditional | Conditional | Facultatif |
billingDetails.state | Conditional | Requis | Facultatif |
billingDetails.zip | Facultatif | Requis | Requis |
billingDetails.phone | Facultatif | Requis | Facultatif |
billingDetails.email | Facultatif | Requis | Requis |
customerIp | Facultatif | Requis | Facultatif |
dateOfBirth.year | Facultatif | Requis | Facultatif |
dateOfBirth.month | Facultatif | Requis | Facultatif |
dateOfBirth.day | Facultatif | Requis | Facultatif |
personalID.idNumber | Facultatif | Requis | Facultatif |
personalID.state | Facultatif | Requis | Facultatif |
socialSecurityNumber | Facultatif | Requis | Facultatif |
Votre gestionnaire de compte vous informera :
- Si vous êtes intégré à ce type de processeur en aval et
- Si vous pouvez bénéficier d’un traitement garanti de prélèvement automatique.
Créer des requêtes updateShippingInfo
Tous les éléments facultatifs qui prennent des types de données non annulables (p. ex. int ou enum) doivent avoir leur attribut spécifié fixé à « true » lors de la définition des valeurs pour ces éléments. Voir l’élément shipMethod dans l’exemple ci-dessous.
La requête updateShippingInfo nécessite l’objet de document ddShippingRequestV1. Cette section décrit la structure d’une ddShippingRequestV1 et comment en créer une.
Exemple dé updateShippingInfo – C#
Voici un exemple de updateShippingInfo en C#.
// Prepare the call to the Direct Debit Web Service
DDShippingRequestV1 ddShippingRequest = new DDShippingRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePwd";
ddShippingRequest.merchantAccount = merchantAccount;
ddShippingRequest.confirmationNumber = "123456"; // A valid confirmation number from a previous settle auth or purchase
ddShippingRequest.carrier = CarrierV1.FEX; // Fedex
ddShippingRequest.shipMethod = ShipMethodV1.T;
ddShippingRequest.shipMethodSpecified = true;
ddShippingRequest.trackingNumber = "555666888999";
ddShippingRequest.firstName = "Jane";
ddShippingRequest.lastName = "Jones";
ddShippingRequest.street = "123 Main Street";
ddShippingRequest.city = "LA";
ddShippingRequest.country = CountryV1.US;
ddShippingRequest.countrySpecified = true;
ddShippingRequest.zip = "90210";
ddShippingRequest.email = "janejones@emailserver.com"; // optional email address
//Perform the Web Services call to update the shipping info
DirectDebitServiceV1 ddService = new DirectDebitServiceV1();
DDCheckResponseV1 ddTxnResponse =
ddService.updateShippingInfo(ddShippingRequest);
// Print out the result
String responseTxt = ddTxnResponse.code + " - " + ddTxnResponse.decision + " - " +
ddTxnResponse.description;
responseTxt += "Details:" + Environment.NewLine;
if (ddTxnResponse.detail != null)if (ddTxnResponse.detail != null)
{
for (int i = 0; i < ddTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ddTxnResponse.detail[i].tag + " - " +
ddTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ddTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ddTxnResponse.decision);
}
Schéma ddShippingRequestV1
Un objet de document ddShippingRequestV1 a la structure suivante :
Éléments ddShippingRequestV1
L’objet de document ddShippingRequestV1 peut contenir les éléments suivants :
Élément | Élément enfant | Requis | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Oui | string Max = 10 | Il s’agit du numéro de compte marchand. |
storeID | Oui | string Max = 80 | Il s’agit de l’identifiant du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
storePwd | Oui | string Max = 20 | Il s’agit du mot de passe du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
carrier | Oui | enumeration | Il s’agit du transporteur. • APC = APC le lendemain • APS = AnPost • CAD = Service postal du Canada • DHL • FEX = Fedex • RML = Royal Mail • UPS = United Parcel Service • USPS = United States Postal Service • AUTRE | |
trackingNumber | Oui | string Max = 50 | Il s’agit du numéro de suivi de l’expédition fourni par le transporteur. | |
confirmationNumber | Oui | string Max = 15 | Il s’agit du numéro de confirmation renvoyé par Paysafe. | |
shipMethod | Facultatif | enumeration | Il s’agit du mode d’expédition. • N = Next Day/Overnight (Le lendemain) • T = Two-Day Service (Service en deux jours) • C = Lowest Cost (Coût le plus bas) • O = Other (Autre) | |
firstName | Facultatif | string Max = 40 | Il s’agit du prénom du client. | |
lastName | Facultatif | string Max = 40 | Il s’agit du nom de famille du client. | |
street | Facultatif | string Max = 50 | Il s’agit de la première ligne de l’adresse du client. | |
street2 | Facultatif | string Max = 50 | Il s’agit de la deuxième ligne de l’adresse du client. | |
city | Facultatif | string Max = 40 | Il s’agit de la ville de résidence du client. | |
state/region | Facultatif | Si État, alors énumération Si région, alors chaîne | Il s’agit de l’État, de la province ou de la région de résidence du client. Indiquez l’État/la province pour les États-Unis ou le Canada. Indiquez la région pour ailleurs qu’aux États-Unis ou au Canada. | |
country | Facultatif | enumeration | Il s’agit du pays de résidence du client. | |
zip | Facultatif | string Max = 10 | Il s’agit du code ZIP du client s’il se trouve aux États-Unis; sinon, il s’agit du code postal du client. | |
phone | Facultatif | string Max = 40 | Il s’agit du numéro de téléphone du client. | |
adresse courriel | Facultatif | string Max = 100 | Il s’agit de l’adresse courriel du client. |
Créer des requêtes de recherche
La requête de recherche de prélèvement automatique vous permet d’exécuter un rapport, sur une plage de dates que vous spécifiez, afin d’obtenir des données sur les transactions de prélèvement automatique traitées par votre compte marchand.
Exemple de recherche – C#
Voici un exemple de ddLookupRequest en C#.
// Prepare the call to the Direct Debit Web Service
DDLookupRequestV1 ddLookupRequest = new DDLookupRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ddLookupRequest.merchantAccount = merchantAccount;
ddLookupRequest.confirmationNumber = "123456789";
DateV1 startDate = new DateV1();
startDate.year = "2012";
startDate.month = "08";
startDate.day = "15";
startDate.hour = "11";
startDate.minute = "00";
startDate.second = "00";
ddLookupRequest.startDate = startDate;
ddLookupRequest.startDateSpecified = true;
DateV1 endDate = new DateV1();
endDate.year = "2012";
endDate.month = "08";
endDate.day = "15";
endDate.hour = "14";
endDate.minute = "00";
endDate.second = 00;endDate.second = "00";
ddLookupRequest.endDate = endDate;
ddLookupRequest.endDateSpecified = true;
//Perform the Web Services call to process the request
DirectDebitServiceV1 ddService = new DirectDebitServiceV1();
DDCheckResponseV1 ddCheckResponse = ddService.lookup(ddLookupRequest);
// Print out the result
String responseTxt = ddCheckResponse.code + " - " + ddCheckResponse.decision;
responseTxt += "Transactions:" + Environment.NewLine;
if (ddCheckResponse.transaction != null)
{
for (int i = 0; i < ddCheckResponse.transaction.Length; i++)
{
responseTxt += " - confirmationNumber: " +
ddCheckResponse.transaction[i].confirmationNumber + Environment.NewLine;
responseTxt += " - merchantRefNum: " +
ddCheckResponse.transaction[i].merchantRefNum + Environment.NewLine;
responseTxt += " - txnTime: " +
ddCheckResponse.transaction[i].txnTime + Environment.NewLine;
responseTxt += " - amount: " +
ddCheckResponse.transaction[i].amount + Environment.NewLine;
StatusV1 status = ddCheckResponse.transaction[i].status;
if (status != null){
responseTxt += " - status: " +
status.code + Environment.NewLine;
responseTxt += " - status effective date:" +
status.effectiveDate + Environment.NewLine;
}
responseTxt += Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ddCheckResponse.decision))
{
System.Console.WriteLine("Transaction Found.");
}
else
{
System.Console.WriteLine("Transaction Failed or Not Found with decision: " +
ddCheckResponse.decision);
}
Schéma ddLookupRequestV1
Un objet de document ddLookupRequestV1 a la structure suivante :
Éléments ddLookupRequestV1
L’objet de document ddLookupRequestV1 peut contenir les éléments suivants :
Élément | Élément enfant | Requis | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Oui | string Max = 10 | Il s’agit du numéro de compte marchand. |
storeID | Oui | string Max = 80 | Il s’agit de l’identifiant du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
storePwd | Oui | string Max = 20 | Il s’agit du mot de passe du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
confirmationNumber | Facultatif | string Max = 15 | Il s’agit du numéro de confirmation renvoyé par Paysafe en réponse à la requête initiale. N’incluez cet élément que si vous souhaitez effectuer une recherche à l’aide de ce champ. Ce champ a priorité sur le champ merchantRefNum. | |
merchantRefNum | Conditional | string Max = 40 | Il s’agit du numéro d’identification unique associé à la requête initiale. La valeur est créée par le marchand et soumise dans le cadre de la requête. | |
startDate | year | Requis | Int Max = 9999 | Il s’agit de l’année définie pour le début de la recherche. |
month | Requis | Int Min = 1 Max = 12 | Il s’agit du mois défini pour le début de la recherche. | |
day | Requis | Int Min = 1 Max = 31 | Il s’agit du jour défini pour le début de la recherche. | |
hour | Requis | Int Min = 0 Max = 23 | Il s’agit de l’heure définie pour le début de la recherche. | |
minute | Requis | Int Min = 0 Max = 59 | Il s’agit de la minute définie pour le début de la recherche. | |
second | Requis | Int Min = 0 Max = 59 | Il s’agit de la seconde définie pour le début de la recherche. | |
endDate | year | Requis | Int Max = 9999 | Il s’agit de l’année définie pour la fin de la recherche. |
month | Requis | Int Min = 1 Max = 12 | Il s’agit du mois défini pour la fin de la recherche. | |
day | Requis | Int Min = 1 Max = 31 | Il s’agit du jour défini pour la fin de la recherche. | |
hour | Requis | Int Min = 0 Max = 23 | Il s’agit de l’heure définie pour la fin de la recherche. | |
minute | Requis | Int Min = 0 Max = 59 | Il s’agit de la minute définie pour la fin de la recherche. | |
second | Requis | Int Min = 0 Max = 59 | Il s’agit de la seconde définie pour la fin de la recherche. |
Créer des requêtes de mandat BACS (Royaume-Uni).
Le mandat de prélèvement automatique vous permet de créer un mandat pour le compte bancaire d’un client et de le déposer auprès de sa banque, ce qui est nécessaire pour que vous puissiez effectuer une opération de prélèvement afin de transférer de l’argent du compte bancaire de ce client vers votre compte marchand.
Lorsque vous soumettez une ddMandateRequestV1, Paysafe renverra une valeur pour l’élément mandateReference dans la réponse. Cette valeur est soit basée sur la valeur que vous envoyez dans la requête, soit générée automatiquement par le système Paysafe. Vous utiliserez cette valeur dans l’élément mandateReference (qui est un élément enfant de l’élément check) lorsque vous traiterez les futures requêtes de prélèvement sur le compte bancaire du client à l’aide de ddCheckRequestV1.
L’élément mandateReference comporte 10 caractères. Si vous envoyez une requête avec une valeur de moins de 10 caractères, Paysafe préremplit la référence avec des 0 pour compléter les 10 caractères. Par exemple, une valeur demandée “ABCDEFG” renverra une valeur “000ABCDEFG”. Si aucune valeur n’est transmise, Paysafe créera la valeur pour vous et la renverra dans la réponse.
Au départ, l’état du mandat est W (Pending), puis C (Completed) lorsqu’il a été mis en lot – à ce stade, le mandat ne peut pas encore être utilisé pour les opérations de prélèvement automatique. Le réseau bancaire prend généralement 5 jours pour traiter le mandat, de sorte que 5 jours après que le mandat a été mis en lot, Paysafe change l’état du mandat à AP (actif). Il peut alors être utilisé pour autoriser des opérations de prélèvement automatique sur le compte bancaire pour lequel il a été créé. Il est à noter que si le prélèvement est postdaté par le biais du paramètre txnDate dans la requête ddCheckRequestV1, le mandat peut être utilisé alors qu’il n’est pas encore actif, à condition que la txnDate soit définie sur un minimum de 5 jours ouvrables dans le futur afin de laisser au mandat le temps de devenir actif. Pour faciliter ce processus, la date à laquelle un mandat deviendra actif est renvoyée dans l’élément effectiveDate de la réponse à ddMandateRequestV1.
Les mandats sont automatiquement mis en lot le jour ouvrable suivant, sauf si la valeur de l’option autoSend n’est pas définie sur Y, auquel cas le mandat restera dans l’état PCA (Pending Customer Approval – en attente d’approbation par le client). Cet état intermédiaire facultatif avant W vous permet d’effectuer des vérifications supplémentaires sur le client, ou permet au client d’examiner les informations ayant reçu mandateReference, avant de poursuivre. Le mandat peut alors passer d’un état PCA à un état W en utilisant soit la requête changeStatus, soit l’arrière-guichet marchand Paysafe.
Créer des requêtes de mandat SEPA
Pour traiter une transaction de prélèvement automatique SEPA, vous devez préalablement établir un accord de mandat avec votre client et envoyer votre identifiant de référence de mandat dans l’élément mandateReference. Veuillez noter que l’identifiant de référence de votre mandat peut comporter jusqu’à 35 caractères.
Les mandats ne sont pas nécessaires pour les crédits SEPA.
Les mandats de prélèvement automatique SEPA sont actifs dès qu’ils sont créés par le marchand, de sorte que vous pouvez immédiatement faire suivre la requête ddMandateRequest par une ddCheckRequest.
exemple de mandat – C#
Voici un exemple deddMandateRequest en C#.
// Prepare the call to the Direct Debit Web Service
DDMandateRequestV1 ddMandateRequest = new DDMandateRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ddCheckRequest.merchantAccount = merchantAccount;
CheckV1 check = new CheckV1();
check.routingNum = "123456789";
check.accountNum = "987654321";
check.bankName = "Chase";
check.payee = "ACME Inc.";
ddMandateRequest.check = check;
BillingDetailsV1 billingDetails = new BillingDetailsV1();
billingDetails.firstName = "Jane";
billingDetails.lastName = "Jones";
billingDetails.street = "123 Main Street";
billingDetails.city = "Cambridge";
billingDetails.country = CountryV1.UK;
billingDetails.zip = "CB12345";
billingDetails.phone = "1222 444000";
billingDetails.checkPayMethod = CheckPayMethodV1.WEB;
ddMandateRequest.billingDetails = billingDetails;
ddMandateRequest.autoSend = "Y";
//Perform the Web Services call to process the request
DirectDebitServiceV1 ddService = new DirectDebitServiceV1();
DDCheckResponseV1 ddTxnResponse = ddService.mandate(ddCheckRequest);
// Print out the result
String responseTxt = ddTxnResponse.code + " - " + ddTxnResponse.decision +
" - " + ddTxnResponse.description;
responseTxt += "Details:" + Environment.NewLine;
if (ddTxnResponse.detail != null)if (ddTxnResponse.detail != null)
{
for (int i = 0; i < ddTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ddTxnResponse.detail[i].tag + " - " +
ddTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ddTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ddTxnResponse.decision);
}
Schéma ddMandateRequestV1
Un objet de document ddMandateRequestV1 a la structure suivante :
Éléments ddMandateRequestV1
L’objet de document ddMandateRequestV1 peut contenir les éléments suivants :
Élément | Élément enfant | Requis | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Oui | string Max = 10 | Il s’agit du numéro de compte marchand. |
storeID | Oui | string Max = 80 | Il s’agit de l’identifiant du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
storePwd | Oui | string Max = 20 | Il s’agit du mot de passe du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
merchantRefNum | Conditional | string Max = 40 | Il s’agit du numéro d’identification unique associé à la requête initiale. La valeur est créée par le marchand et soumise dans le cadre de la requête initiale. | |
check | accountType | Facultatif | enumeration | Il s’agit du type de compte de chèques utilisé pour la transaction. Les valeurs éventuelles sont : • PC - Personal Checking (compte de chèques personnel) • PS - Personal Savings (compte d’épargne personnel) • PL - Personal Loan (prêt personnel) • BC - Business Checking (compte de chèques commercial) • BS - Business Savings (compte d’épargne commercial) • BL - Business Loan (prêt à l’entreprise) REMARQUE : Si cet élément n’est pas spécifié, la valeur par défaut est PC. |
bankName | Facultatif | string Max = 40 | Il s’agit du nom de la banque du client auprès de laquelle cette opération est comptabilisée. | |
checkNum | Facultatif | Long Max = 8 | Il s’agit du numéro de série du chèque, fourni au moment de la requête de transaction. | |
accountNum | Oui | string Max = 17 | Il s’agit du numéro de compte bancaire du client. Pour les transactions SEPA, il s’agit de l’IBAN (International Bank Account Number) du compte bancaire du client. | |
routingNum | Oui | string Min = 6 Max = 9 Si BIC, Min = 8 Max = 11 | Pour les comptes en livres sterling, il s’agit du code de tri à 6 chiffres de la banque du client. Pour les transactions SEPA, il s’agit du BIC (Bank Identifier Code) du compte bancaire du client. Si vous n’avez pas le BIC, vous pouvez soumettre la valeur suivante, sensible à la casse : EMPTYBIC | |
payee | Facultatif | string Max = 81 | Il s’agit du descripteur qui apparaîtra sur le compte bancaire du client. Il n’est requis que pour les transactions de crédit. Si vous indiquez une valeur pour ce champ, cette valeur sera utilisée comme descripteur de l’énoncé. Si vous ne fournissez pas de valeur pour ce champ, la valeur par défaut configurée pour le compte marchand sera utilisée. | |
bankCountry | Conditional | enumeration | Il s’agit du pays dans lequel la banque est située. Cet élément n’est obligatoire que pour certains pays. | |
bankCity | Conditional | string Max = 40 | Il s’agit de la ville dans laquelle la banque est située. Cet élément n’est obligatoire que pour certains pays. | |
mandateReference | Conditional | string Max = 10 Pour SEPA, Max = 35 | Il s’agit de la référence du mandat qui permet de débiter le compte. Vous pouvez éventuellement définir vous-même la valeur de mandateReference lors de la création de la requête. Si vous ne fournissez pas de valeur ici, elle sera définie par Paysafe et renvoyée dans la réponse. Pour le SEPA, cet élément est obligatoire, et le marchand crée sa propre mandateReference. | |
billingDetails | checkPayMethod | Facultatif | enumeration | Il s’agit du type de paiement. • WEB (compte de chèques personnel seulement) • TEL (compte de chèques personnel seulement) • PPD (compte de chèques personnel seulement) • CCD (compte de chèques commercial seulement) REMARQUE : Si cet élément n’est pas spécifié, la valeur par défaut est WEB. |
firstName | Conditional | string Max = 40 | Il s’agit du prénom du client. Requis si checkPayMethod est défini sur WEB ou TEL. | |
lastName | Conditional | string Max = 40 | Il s’agit du nom de famille du client. Requis si accountType est défini sur PC, PS ou PL. | |
companyName | Conditional | string Max = 50 | Il s’agit du nom de l’entreprise. Requis si accountType est défini sur BC, BS ou BL. | |
street | Facultatif | string Max = 50 | Il s’agit de la première ligne de l’adresse du client. | |
street2 | Facultatif | string Max = 50 | Il s’agit de la deuxième ligne de l’adresse du client. | |
city | Facultatif | string Max = 40 | Il s’agit de la ville de résidence du client. | |
state/region | Conditional | Si État, alors énumération Si région, alors chaîne | Il s’agit de l’État, de la province ou de la région de résidence du client. Indiquez l’État/la province pour les États-Unis ou le Canada. Indiquez la région pour ailleurs qu’aux États-Unis ou au Canada. | |
country | Facultatif | enumeration | Il s’agit du pays de résidence du client. | |
zip | Facultatif | string Max = 10 | Il s’agit du code ZIP du client s’il se trouve aux États-Unis; sinon, il s’agit du code postal du client. | |
phone | Facultatif | string Max = 40 | Il s’agit du numéro de téléphone du client. | |
adresse courriel | Facultatif | string Max = 100 | Il s’agit de l’adresse courriel du client. | |
customerIp | Facultatif | string Max = 50 | Il s’agit de l’adresse IP du client. | |
txnDate | Facultatif | dateTime | Il s’agit de la date et de l’heure auxquelles la transaction a eu lieu. Pour un débit ou un crédit, ou pour ddMandateRequestV1, il peut s’agir de la date et de l’heure futures auxquelles la transaction aura lieu. | |
autoSend | Facultatif | Booléen | Cela permet de contrôler le moment où le mandat est envoyé à la banque. Les valeurs éventuelles sont : • Y = Le mandat passe à l’état W (Pending) (en attente), prêt à être mis en lot puis envoyé à la banque. • N = Le mandat conservera l’état PCA (Pending Customer Approval) (en attente d’approbation par le client) et ne sera pas envoyé à la banque. Si l’état autoSend est défini sur N, le mandat peut être modifié ultérieurement pour passer à l’état W en utilisant la requête changeStatus; le mandat sera alors envoyé à la banque à la prochaine heure de mise en lots. REMARQUE : Pour le SEPA, ce paramètre doit être défini sur Y, et le mandat sera défini sur AP (actif). | |
addendumData | tag | Facultatif | string Max = 30 | Il s’agit de données supplémentaires que le marchand peut inclure dans la requête de transaction. |
value | Facultatif | string Max = 1024 | Il s’agit de données supplémentaires que le marchand peut inclure dans la requête de transaction. |
Créer des requêtes de modification d’état
Une requête de modification d’état vous permet de modifier l’état de certaines opérations de prélèvement automatique. Vous pouvez effectuer les modifications d’état suivantes :
Solution | Type de requête | État initial | État résultant |
---|---|---|---|
Prélèvement automatique au Royaume-Uni (BACS) | • Mandat | • PCA – Pending customer approval (En attente d’approbation par le client) | • W – En attente • X – Annulé |
Prélèvement automatique au Royaume-Uni (BACS) | • Débit • Crédit • Mandat | • W – En attente | • X – Annulé |
Prélèvement automatique au Royaume-Uni | • Débit • Crédit • Mandat | • C – Compteted (Terminé) • CL – Cleared (Compensé) | • RE – Returned (Renvoyé) REMARQUE : À utiliser uniquement lorsque votre banque commanditaire a refusé la transaction et qu’aucun rapport BACS n’a été produit. Attendez 5 jours ouvrables à compter de la date d’achèvement et contactez le service de soutien technique avant d’effectuer cette requête de modification. |
TEF/ACH | • Débit • Crédit | • C – Compteted (Terminé) | • X – Annulé REMARQUE : Uniquement possible lorsque la requête n’a pas encore été envoyée à la banque. |
Prélèvement automatique SEPA | • Mandat | • AP – Active (Actif) | • X – Annulé |
Prélèvement automatique SEPA | • Débit | • W – En attente • C – Compteted (Terminé) | • X – Annulé REMARQUE : Les opérations de prélèvement automatique SEPA ne peuvent être annulées qu’avant leur date d’exécution. |
Paysafe répond à votre requête de modification d’état avec ddCheckResponseV1. Dans cette réponse, le confirmationNumber identifie la requête qui a été mise à jour (charge, credit ou mandateRequest), et vous pouvez confirmer le nouvel état de la transaction que vous avez mise à jour.
Exemple de modification d’état – C#
Voici un exemple de ddChangeStatusRequest en C#.
// Prepare the call to the Direct Debit Web Service
DDChangeStatusRequestV1 ddChangeStatusRequest = new DDChangeStatusRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ddChangeStatusRequest.merchantAccount = merchantAccount;
ddChangeStatusRequest.confirmationNumber = "123456"; // A valid confirmation number from a previous mandate or echeck;
ddChangeStatusRequest.status = "C";
//Perform the Web Services call to process the request
DirectDebitServiceV1 ddService = new DirectDebitServiceV1();
DDCheckResponseV1 ddTxnResponse = ddService.changeStatus(ddCheckRequest);
// Print out the result
String responseTxt = ddTxnResponse.code + " - " + ddTxnResponse.decision +
" - " + ddTxnResponse.description;
responseTxt += "Details:" + Environment.NewLine;
if (ddTxnResponse.detail != null)if (ddTxnResponse.detail != null)
{
for (int i = 0; i < ddTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ddTxnResponse.detail[i].tag + " - " +
ddTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ddTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ddTxnResponse.decision);
}
Schéma ddChangeStatusRequest
Un objet de document ddChangeStatusRequestV1 a la structure suivante :
Éléments ddChangeStatusRequestV1
L’objet de document ddChangeStatusRequestV1 peut contenir les éléments suivants :
Élément | Élément enfant | Requis | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Oui | string Max = 10 | Il s’agit du numéro de compte marchand. |
storeID | Oui | string Max = 80 | Il s’agit de l’identifiant du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
storePwd | Oui | string Max = 20 | Il s’agit du mot de passe du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
confirmationNumber | Facultatif | string Max = 15 | Cette valeur indique la transaction dont vous souhaitez modifier l’état. Il s’agit du confirmationNumber renvoyé par Paysafe en réponse à la requête de transaction initiale. | |
status | Requis | enumeration | Il s’agit du nouveau code d’état pour la transaction. Les valeurs éventuelles sont : • C – Compteted (Terminé) • RE – Returned (Renvoyé) • W – En attente • X – Annulé | |
addendumData | tag | Facultatif | string Max = 30 | Il s’agit de données supplémentaires que le marchand peut inclure dans la requête de transaction. |
value | Facultatif | string Max = 1024 | Il s’agit de données supplémentaires que le marchand peut inclure dans la requête de transaction. |
Créer des requêtes de mise à jour de mandat
Seuls les marchands qui traitent des prélèvements automatiques SEPA peuvent utiliser ce type de requête.
Une requête de mise à jour de mandat vous permet de mettre à jour un mandat existant. En fait, vous créez un nouveau mandat en fonction des informations contenues dans le mandat existant, mais avec certaines informations mises à jour (p. ex. le numéro de compte bancaire d’un client peut changer).
Lorsque vous soumettez une ddUpdateMandateRequestV1, Paysafe définit l’état du mandat sur T (transféré). Un nouveau mandat est créé, copiant les données du mandat existant, à l’exception de l’une des trois valeurs suivantes qui peuvent avoir été spécifiées dans la requête de mise à jour du mandat :
- mandateReference
- accountNum
- routingNum
Toutes les nouvelles valeurs spécifiées dans la requête pour ces éléments seront utilisées dans le nouveau mandat.
Le nouveau mandat aura l’état PCA (en attente d’approbation par le client) ou AP (actif), conformément au mandat existant. Le nouveau mandat sera lié au mandat existant, de sorte que le système sache que le mandat existant a été transféré au nouveau mandat.
Paysafe répond à votre requête de mise à jour de mandat avec la ddCheckResponseV1. Dans cette réponse, le confirmationNumber indique que le nouveau mandat a été créé.
Exemple de mise à jour d’un mandat – C#
Voici un exemple de ddUpdateMandateRequest en C#.
// Prepare the call to the Direct Debit Web Service
DDUpdateMandateRequestV1 ddUpdateMandateRequest = new DDUpdateMandateRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ddUpdateMandateRequest.merchantAccount = merchantAccount;
ddUpdateMandateRequest.confirmationNumber = "123456"; // A valid confirmation number from a previous mandate or echeck;
ddUpdateMandateRequest.mandateReference = "NL95ZZZ999999991458_TEST7A";
//Perform the Web Services call to process the request
DirectDebitServiceV1 ddService = new DirectDebitServiceV1();
DDCheckResponseV1 ddTxnResponse = ddService.updateMandate(ddCheckRequest);
// Print out the result
String responseTxt = ddTxnResponse.code + " - " + ddTxnResponse.decision +
" - " + ddTxnResponse.description;
responseTxt += "Details:" + Environment.NewLine;
if (ddTxnResponse.detail != null)if (ddTxnResponse.detail != null)
{
for (int i = 0; i < ddTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ddTxnResponse.detail[i].tag + " - " +
ddTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ddTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ddTxnResponse.decision);
}
Schéma ddUpdateMandateRequestV1
Un objet de document ddUpdateMandateRequestV1 a la structure suivante :
Éléments ddUpdateMandateRequestV1
Le document d’objet ddUpdateMandateRequestV1 peut contenir les éléments suivants :
Élément | Élément enfant | Requis | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Oui | string Max = 10 | Il s’agit du numéro de compte marchand. |
storeID | Oui | string Max = 80 | Il s’agit de l’identifiant du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
storePwd | Oui | string Max = 20 | Il s’agit du mot de passe du magasin Paysafe, utilisé pour authentifier la requête. Il est défini par Paysafe et fourni au marchand dans le cadre du processus d’intégration. | |
confirmationNumber | Facultatif | string Max = 15 | Cette valeur indique le mandat que vous souhaitez mettre à jour. Il s’agit du confirmationNumber renvoyé par Paysafe en réponse à la requête de transaction initiale. | |
mandateReference | Conditional | string Max = 10 Pour SEPA, Max = 35 | Il s’agit de la référence du mandat qui permet de débiter le compte. Il s’agit de la valeur attribuée au paramètre mandateReference dans la réponse à ddMandateRequestV1. Il peut être nécessaire de mettre à jour la mandateReference, par exemple si les conditions de facturation ont changé mais que toutes les autres informations relatives au mandat sont restées inchangées. | |
accountNum | Conditional | string Max = 17 Si IBAN, | Pour les transactions SEPA, il s’agit de l’IBAN (International Bank Account Number) du compte bancaire du client. Il peut être nécessaire de mettre à jour le accountNum, p. ex. si le client est désormais facturé sur un compte différent mais auprès de la même banque (c.-à-d. lorsqu’il n’est pas nécessaire de modifier le BIC). | |
routingNum | Conditional | string Min = 6 Max = 9 Si BIC, Min = 8 Max = 11 | Pour les transactions SEPA, il s’agit du BIC (Bank Identifier Code) du compte bancaire du client. Si vous n’avez pas le BIC, vous pouvez soumettre la valeur suivante, sensible à la casse : EMPTYBIC Vous devrez mettre à jour le routinNum, p. ex. si le client a changé de banque, auquel cas le numéro de compte devra également être mis à jour. |
Au moins un de ces trois éléments doit être inclus dans la requête : mandateReference, accountNum et routingNum.
Les éléments suivants sont pertinents pour une ddCheckResponseV1 :
Élément | Élément enfant | Requis | Type | Description |
---|---|---|---|---|
requestId | Facultatif | Il s’agit du numéro d’identification unique renvoyé par Paysafe pour un enregistrement s’il a été traité dans un fichier de traitement par lots. | ||
confirmationNumber | Oui | string Max = 15 | Il s’agit du numéro de confirmation renvoyé par Paysafe. S’il est renvoyé en réponse à ddUpdateMandateRequestV1, il indique le nouveau mandat qui a été créé. | |
merchantRefNum | Facultatif | string Max = 40 | Il s’agit du numéro d’identification unique associé à la requête initiale. La valeur est créée par le marchand et soumise dans le cadre de la requête initiale. Elle n’est renvoyée qu’en réponse à une requête de recherche. | |
mandateReference | Oui | string Max = 20 | Il s’agit de la référence du mandat renvoyée par Paysafe. Il s’agit soit de la valeur renvoyée par la requête, soit, si elle n’a pas été spécifiée correctement dans la requête, de la valeur générée par Paysafe. Pour le SEPA, il s’agit de la référence du mandat créée par le marchand dans la requête. | |
decision | Oui | enumeration | Il s’agit de l’état de la transaction. L’un des états suivants est renvoyé : • Accepted (Acceptée) – la transaction a été traitée. • Error (Erreur) – la transaction a été tentée, mais a échoué pour une raison quelconque. • Declined (Refusée) – la transaction a été refusée avant d’être envoyée pour traitement. • Not Found (Introuvable) – la recherche de transaction n’a donné aucune correspondance. | |
code | Oui | Int | Il s’agit d’un code numérique qui catégorise la réponse. Voir Codes de réponse. | |
actionCode | Facultatif | enumeration | Indique quelle mesure prendre. • C = Consumer Parameter Error (Erreur de paramètre du consommateur). Le consommateur a fourni des informations incorrectes. Demandez au consommateur de corriger les informations. • D = Do Not Retry (Ne pas réessayer). Toute autre tentative échouera. • M = Merchant Parameter Error (Erreur de paramètre du marchand). Votre application a fourni des informations incorrectes. Vérifiez vos informations. • R = Retry (Réessayer). Le problème est temporaire. La réitération de la requête sera probablement couronnée de succès. | |
description | Facultatif | string Max = 100 | Il s’agit d’une description lisible par un humain de l’élément code. | |
detail | tag | Facultatif | string Max = 1024 | Il s’agit de la classification de l’élément detail. |
value | Facultatif | string Max = 30 | Il s’agit d’une description du détail. | |
txnTime | Oui | dateTime | Il s’agit de la date et de l’heure auxquelles la transaction a été traitée par Paysafe. | |
status | Facultatif | |||
code | Conditional | enumeration | Il s’agit de l’état de la première transaction qui correspond à une requête de recherche. Les valeurs éventuelles sont : • AP – Active (Actif) • C – Completed batch (Lot terminé) • CB – Clawed back (Récupéré) • CL – Cleared transaction (Transaction compensée) • DE – Declined (Refusé) • DI – Dipsuted (Contesté) • E – Error batch (Lot d’erreurs) • EX – Expired (Expiré) • F – Failed (Échec) • GR – Good for reversal (Bon pour le renversement) • MI – Manual intervention required (Intervention manuelle requise) • PCA – Pending customer approval (En attente d’approbation par le client) • PR1 – Re-Presented 1 (Présenté à nouveau 1) • PR2 – Re-Presented 2 (Présenté à nouveau 2) • PX – Pending cancel (Annulation en attente) • RE – Returned (Renvoyé) • REF – Rejected final (Refus final) • RV – Reversed (Renversé) • T – Transferred (Transféré) • UM – Unauthorized mandate (Mandat non autorisé) • W – En attente • X – Annulé | |
effectiveDate | Conditional | dateTime | • Il s’agit de la date et de l’heure auxquelles l’état de la requête de recherche est en vigueur. • Lorsqu’elle est incluse dans la paire balise/valeur de l’élément detail pour une réponse à une requête de mandat, il s’agit de la date à laquelle le mandat deviendra actif auprès de la banque (en comptant 5 jours ouvrables à partir de l’heure de mise en lot). Vous pouvez soumettre une requête de débit à partir de minuit à cette date, ou postdater votre débit avec txnTime qui a une valeur de cette date ou plus tard. Si vous soumettez une facture dont la date est antérieure à la date d’entrée en vigueur du mandat, vous recevrez un message d’erreur. | |
devise | Facultatif | string | La valeur sera un code de devise. Elle n’est renvoyée qu’en réponse à une requête de recherche. | |
montant | Facultatif | string Max = 9999999.99 | Il s’agit du montant de la première transaction qui correspond à une requête de recherche. | |
transaction | Facultatif | Elle n’est renvoyée qu’en réponse à une requête de recherche. Toutes les transactions qui correspondent à la requête de recherche sont renvoyées ici. | ||
confirmationNumber | Conditional | string Max = 15 | Il s’agit du numéro de confirmation renvoyé par Paysafe pour une transaction antérieure. | |
merchantRefNum | Facultatif | string Max = 255 | Il s’agit du numéro d’identification unique associé à la requête initiale. La valeur est créée par le marchand et soumise dans le cadre de la requête initiale. Elle n’est renvoyée qu’en réponse à une requête de recherche. | |
txnTime | Conditional | dateTime | Il s’agit de la date et de l’heure auxquelles la transaction a été traitée par Paysafe. | |
status | Conditional | Il contient les éléments code et effectiveDate de la transaction. Voir l’élément status ci-dessus dans ce tableau pour plus de détails. | ||
montant | Conditional | string Max = 9999999.99 | Il s’agit du montant de la transaction. |
Pour traiter une réponse :
-
Obtenez les données de la réponse, qui sont disponibles via les méthodes get() de la réponse.
String responseTxt = ddTxnResponse.code + " - " + ddTxnResponse.decision +
" - " + ddTxnResponse.description;
responseTxt += "Details:" + Environment.NewLine;
if (ddTxnResponse.detail != null)if (ddTxnResponse.detail != null)
{
for (int i = 0; i < ddTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ddTxnResponse.detail[i].tag + " - " +
ddTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ddTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ddTxnResponse.decision);
} -
Traitez en fonction de l’élément decision. Vous devez insérer le code de gestion approprié à votre application. Vous pouvez également consulter l’élément code pour obtenir un contrôle plus fin de votre application. Voir Codes de réponse pour de plus amples renseignements.