- Directives d'intégration
- Fonctionnalités prises en charge (Modes de paiement)
- Paiements Automated Clearing House
Automated Clearing House
Automated Clearing House est un réseau électronique de traitement des batches de transactions de débit et de crédit entre les organismes financiers des États-Unis. Il est administré par la National Clearing House Association (NACHA).
Le réseau peut être utilisé pour le transfert électronique de fonds entre les comptes. Il est utilisé pour les paiements Direct Payment via Automated Clearing House (par exemple, un paiement hypothécaire récurrent ou l'achat en ligne d'un client) et les dépôts Direct Deposit Automated Clearing House (par exemple, versement de la paie, remboursement d'un achat en ligne ou paiement B2B).
La passerelle vous permet de traiter les paiements directs (paiements) et les dépôts (remboursements) via Automated Clearing House.
Cette page décrit les conditions de traitement Automated Clearing House des paiements via Mastercard Gateway et fournit une présentation du flux de paiement et des détails sur les opérations API prises en charge pour les paiements Automated Clearing House.
Conditions préalables
Vous devez posséder un compte Automated Clearing House configuré avec un acquéreur Automated Clearing House.
- Vous devez obtenir une autorisation explicite du client pour que le règlement Automated Clearing House puisse avoir lieu.
- Étant donné que Automated Clearing House n'est pas un réseau en temps réel, les retours peuvent tout de même avoir lieu après que la demande de paiement a été soumise à Mastercard Gateway.
- Vous devez vous conformer aux réglementations NACHA. Leur non-respect peut entraîner des pénalités importantes. Pour rester informé des réglementations en vigueur, voir le site https://www.nacha.org/.
- Vous devez établir, mettre en œuvre et actualiser des politiques, procédures et systèmes en rapport avec le lancement, le traitement et le stockage des entrées, afin de :
- Garantir la confidentialité des informations.
- Vous protéger des menaces de sécurité des informations.
- Vous protéger contre toute utilisation non autorisée des informations.
Flux de données Automated Clearing House
- Le payeur autorise le paiement ou le dépôt.
Les codes d'entrée standard (SEC) autorisés par la NACHA sont les suivants :
TEL
. Entrée déclenchée par téléphone.WEB
. Entrée déclenchée par le Web.PPD
. Paiements et dépôts préautorisés (PPD).
- Le commerçant envoie une demande de transaction à Mastercard Gateway.
Les demandes peuvent être
PAY
(Payer),REFUND
(Rembourser) ouVOID
(Annuler). - Mastercard Gateway émet une réponse contenant des informations de statut (par exemple,
APPROVED_PENDING_SETTLEMENT
).La transaction est ajoutée au batch en cours pour règlement.
Le batch de transactions est fermé de l'une des deux manières suivantes :
- Une fois par jour à l'heure définie.
- Lorsque vous fermez le batch actuellement ouvert en soumettant une demande API
CLOSE_BATCH
. Les transactions suivantes seront ajoutées à un nouveau batch.
À la fin de la journée, tous les batches fermés qui n'ont pas encore été soumis sont regroupés dans un fichier de règlement et transmis à l'acquéreur Automated Clearing House.
- L'acquéreur Automated Clearing House émet une réponse immédiate contenant le résultat de la validation des données transmises (par exemple
APPROVED
ouDECLINED
) et soumet les demandes de paiement au réseau Automated Clearing House pour traitement.Remarques :
- Le statut
APPROVED
émis par l'acquéreur Automated Clearing House correspond simplement à une acceptation validée de la transmission pour traitement ultérieur ; il ne s'agit pas d'une approbation réelle de la transaction financière. - Pour être averti de la réponse de l'acquéreur Automated Clearing House, abonnez-vous aux notifications Webhook.
- Le statut
- Le réseau Automated Clearing House gère les transactions de paiement entre les organismes financiers applicables.
- Au bout de 3 jours, le réseau Automated Clearing House envoie un rapport d'exception des demandes de paiement non approuvées à l'acquéreur Automated Clearing House, qui vous les transmet.
Intégration des paiements Automated Clearing House
Il existe trois options permettant d'intégrer les paiements Automated Clearing House à votre page de paiement :
Si vous disposez d'une intégration Hosted Checkout existante, vous pouvez utiliser Hosted Checkout pour vérifier les détails du paiement Automated Clearing House.
Pour ce faire, vous pouvez définir interaction.operation=VERIFY
dans la demande Create Checkout Session (Créer une session de paiement). Hosted Checkout affiche les paiements Automated Clearing House comme une option de paiement pour le payeur. Les données saisies par le payeur sont vérifiées avec les méthodes de vérification prises en charge par l'acquéreur configuré.
Vous pouvez savoir si l'opération de vérification a réussi en comparant les paramètres resultIndicator
et successIndicator
. Si l'interaction échoue, Hosted Checkout affiche un message indiquant que la vérification a échoué et invite le payeur à réessayer.
Si vous disposez de votre propre page de paiement, vous pouvez choisir l'option d'intégration Hosted Session pour que Mastercard Gateway collecte les détails de paiement Automated Clearing House en toute sécurité et les stocke dans une session de paiement.
<html> <head> <!-- INCLUDE SESSION.JS JAVASCRIPT LIBRARY --> <script src="https://na-gateway.mastercard.com/form/version/72/merchant/<MERCHANTID>/session.js"></script> <!-- APPLY CLICK-JACKING STYLING AND HIDE CONTENTS OF THE PAGE --> <style id="antiClickjack">body{display:none !important;}</style> </head> <body> <!-- CREATE THE HTML FOR THE PAYMENT PAGE --> <div>Please enter your Automated Clearing House details:</div> <div> <label class="control-label" id="ach-account-type-label">Account Type:</label> <select class="form-control col-sm-6" name="ach-account-type" id="ach-account-type"> <option value="CONSUMER_SAVINGS">Consumer Savings Account</option> <option value="CONSUMER_CHECKING" selected>Consumer Checking Account</option> <option value="CORPORATE_CHECKING">Business Checking Account</option> </select> </div> <div>Bank Account Holder: <input type="text" id="ach-account-holder" class="input-field" value="" readonly></div> <div>Bank Account Number:<input type="text" id="ach-account-number" class="input-field" value="" readonly></div> <div>Routing Number:<input type="text" id="ach-routing-number" class="input-field" value="" readonly></div> <div><button id="payButton" onclick="pay();">Pay Now</button></div> <!-- JAVASCRIPT FRAME-BREAKER CODE TO PROVIDE PROTECTION AGAINST IFRAME CLICK-JACKING --> <script type="text/javascript"> if (self === top) { var antiClickjack = document.getElementById("antiClickjack"); antiClickjack.parentNode.removeChild(antiClickjack); } else { top.location = self.location; } PaymentSession.configure({ fields: { // ATTACH HOSTED FIELDS TO YOUR PAYMENT PAGE FOR ACH ach: { accountType: "#ach-account-type", bankAccountHolder: "#ach-account-holder", bankAccountNumber: "#ach-account-number", routingNumber: "#ach-routing-number" } }, //SPECIFY YOUR MITIGATION OPTION HERE frameEmbeddingMitigation: ["javascript"], callbacks: { initialized: function(response) { // HANDLE INITIALIZATION RESPONSE }, formSessionUpdate: function(response) { // HANDLE RESPONSE FOR UPDATE SESSION if (response.status) { if ("ok" == response.status) { console.log("Session updated with data: " + response.session.id); } else if ("fields_in_error" == response.status) { console.log("Session update failed with field errors."); if (response.errors.bankAccountHolder) { console.log("Bank account holder invalid."); } if (response.errors.bankAccountNummber) { console.log("Bank account number invalid."); } if (response.errors.routingNumber) { console.log("Routing number invalid."); } } else if ("request_timeout" == response.status) { console.log("Session update failed with request timeout: " + response.errors.message); } else if ("system_error" == response.status) { console.log("Session update failed with system error: " + response.errors.message); } } else { console.log("Session update failed: " + response); } } } }); function pay() { // UPDATE THE SESSION WITH THE INPUT FROM HOSTED FIELDS PaymentSession.updateSessionFromForm('ach'); } </script> </body> </html>
- Incluez la bibliothèque JavaScript client
session.js
hébergée par la passerelle dans votre page de paiement. Le chemin vers ce fichier comporte la version de l'API et l'ID du commerçant pour la session. - Créez le formulaire HTML pour la page de paiement comportant les champs de paiement Automated Clearing House.
Pour empêcher la soumission de données sensibles au serveur, assurez-vous que les champs des données sensibles sont enreadonly
et n'ont PAS l'attributname
. - Appelez la fonction
PaymentSession.configure(configuration)
.
L'objet
configuration
vous permet de rattacher des champs hébergés à votre page de paiement. Vous devez indiquer les éléments suivants :
- la session (facultatif) ; si vous n'en indiquez pas, la bibliothèque client crée une session de paiement ;
- Les sélecteurs de champ pour les champs de paiement Automated Clearing House qui, lorsqu'ils sont indiqués, sont remplacés par les champs proxy correspondants intégrés dans les iFrames hébergés par Mastercard Gateway ; les champs proxy ont le même aspect que les champs remplacés ;
-
la ou les options de limitation pour la prévention des détournements de clic ;
Le clickjacking, ou détournement de clic, se produit lorsqu'un attaquant piège un utilisateur pour qu'il clique sur un bouton ou un lien d'une autre page chargée derrière une ou plusieurs couches transparentes ou opaques, alors qu'il pense cliquer sur la page d'origine. Pour utiliser Hosted Session, vous devez implémenter une ou plusieurs des défenses suivantes contre les détournements de clic.
Option de limitation de cadre Implémentation javascript
incluez le JavaScript « frame-breaker » dans votre page de paiement. x-frame-options
Votre serveur doit retourner un en-tête de réponse HTTP X-Frame-Options. csp
Votre serveur doit retourner l'en-tête de réponse HTTP Content-Security-Policy comportant une directive « frame-ancestors ». Vous devez indiquer les défenses implémentées via le paramètre
frameEmbeddingMitigation
dans l'appelPaymentSession.configure(configuration)
. Pour plus d'informations sur les défenses en matière de détournement de clic, voir « Clickjacking Defense Cheat Sheet » sur le site Web externe OWASP. -
des rappels permettant de gérer les différents événements pendant l'interaction Hosted Session
initialized( )
: appelé lorsque les champs hébergés sont rattachés à votre page de paiement.formSessionUpdate( )
: appelé en réponse à la fonctionPaymentSession.updateSessionFromForm('ach')
(voir étape suivante).
- Appelez
PaymentSession.updateSessionFromForm('ach')
pour stocker les détails Automated Clearing House collectés dans une session de paiement. Lorsque l'opération est terminée, la fonction de rappelformSessionUpdate( )
est appelée avec un paramètre de résultat. Vous devez vérifier la valeur deresult.status
afin de déterminer si l'opération a réussi. Voir Gestion des réponses des rappels. - Vous pouvez utiliser la session de paiement retourné (session.id) pour exécuter une création de jeton ou une transaction de paiement lorsque nécessaire. Pour plus d'informations, voir Exécution d'une opération au moyen de la session.
Référence de session.js[JavaScript]
Vous pouvez soumettre les détails de paiement Automated Clearing House directement à Mastercard Gateway en exécutant les opérations suivantes.
Vous lancez un paiement Automated Clearing House en soumettant une demande APIPAY
et un remboursement en soumettant une demande APIREFUND
.
Veillez à inclure les informations suivantes dans votre demande :
sourceOfFunds.type = ACH.
sourceOfFunds.provided.ach.routingNumber
: numéro de routage bancaire du payeur.sourceOfFunds.provided.ach.bankAccountNumber
: numéro de compte bancaire du payeur.sourceOfFunds.provided.ach.bankAccountHolder
: nom du titulaire du compte du payeur.sourceOfFunds.provided.ach.accountType
: type de compte bancaire du payeur.sourceOfFunds.provided.ach.secCode
: code SEC pour le paiement Automated Clearing House applicable à cette transaction.Le code SEC doit être l'un des éléments suivants :
TEL
: entrée de débit Automated Clearing House pour un paiement B2C autorisé par le client par téléphone. Le téléphone ne peut être utilisé que s'il existe une relation entre vous et le payeur ou, en l'absence de relation, quand le payeur prend l'initiative de vous contacter.WEB
: entrée de débit Automated Clearing House pour un paiement B2C autorisé via Internet ou un réseau sans fil.PPD
: une entrée Débit ou Crédit Automated Clearing House basée sur une autorisation authentifiée fournie par un payeur. Une entrée PPD est utilisée pour les paiements B2C (par exemple, paie des salariés, paiements hypothécaires ou remboursements de frais).
Vous pouvez annuler la transaction précédente sur une commande en soumettant une demande APIVOID
(Annuler) pour la commande avec le paramètre ID de transaction cible référençant la demande PAY
(Payer) ou REFUND
(Rembourser).
Pour une demande APIVOID
(Annuler) réussie, la transaction cible référencée est supprimée du batch et ne sera donc pas soumise à l'acquéreur Automated Clearing House.
Les transactions ne peuvent plus être annulées une fois que le batch contenant la transaction cible référencée a été fermé pour règlement (c'est-à-dire que le règlement est en cours) ou a déjà été réglé.
Vous pouvez vérifier les détails d'un paiement Automated Clearing House en soumettant une demande APIVERIFY
(Vérifier).
Actuellement, Mastercard Gateway prend uniquement en charge la vérification sémantique des détails de paiement ACH, mais ne vérifie pas si le compte est un compte bancaire valide et si la banque participe à Automated Clearing House.
Gestion et règlement des batches
Vous pouvez contrôler la fermeture des batches en soumettant une demande APICLOSE_BATCH
avec l'ID d'acquéreur pour votre acquéreur Automated Clearing House. L'ID d'acquéreur est fourni dans transaction.acquirer.id
, dans la réponse de transaction.
De ce fait, le batch de l'acquéreur Automated Clearing House actuel dans Mastercard Gateway sera fermé. Les autres transactions Automated Clearing House seront ajoutées à un nouveau batch interne de Mastercard Gateway.
Rapprochement
La réponse de l'opération Retrieve Transaction (Extraire la transaction) pour des transactions Automated Clearing House réussies contient l'identifiant de la transaction utilisé par l'acquéreur dans transaction.receipt
.
Cet identifiant sera utilisé dans le rapport détaillé des exceptions fourni par l'acquéreur Automated Clearing House Paymentech Salem. Ce rapport contient toutes les transactions Automated Clearing House non réussie et peut être utilisé pour le rapprochement de vos paiements.
Le statut de transaction (response.gatewayCode
) fourni par la passerelle n'est pas mis à jour avec la réponse réelle du réseau Automated Clearing House.
Test des transactions Automated Clearing House
Vous pouvez tester votre intégration à l'aide de votre profil de commerçant TEST.
Mastercard Gateway propose un émulateur qui retourne une réponse avec response.gatewayCode=APPROVED
pour toutes les demandes valides pour les paiements Automated Clearing House.