- Ghid de integrare
- Caracteristici acceptate (Metode de plată)
- Plăți Automated Clearing House
Automated Clearing House
Automated Clearing House este o rețea electronică pentru procesarea loturilor de tranzacții de debit și credit între instituții financiare din SUA. Aceasta este administrată de Asociația Națională a Caselor de Compensare (NACHA).
Rețeaua poate fi utilizată pentru transferul electronic de fonduri între conturi. Aceasta este utilizată pentru Plată directă prin intermediul Automated Clearing House (de ex. plăți ipotecare periodice sau o achiziție online a unui consumator) și Depozit direct prin intermediul Automated Clearing House (de ex. plăți de salarii, o rambursare realizată pentru o achiziție online sau o plată B2B).
Gateway-ul vă permite să procesați Plăți directe (plăți) și Depozite directe (rambursări) prin intermediul Automated Clearing House.
Această pagină descrie cerințele pentru procesarea plăților Automated Clearing House prin Mastercard Gateway și oferă o prezentare generală a procesului de plată, precum și detalii referitoare la operațiunile API acceptate pentru plățile Automated Clearing House.
Cerințe preliminare
Trebuie să aveți un cont Automated Clearing House configurat la un achizitor Automated Clearing House.
- Trebuie să obțineți autorizarea explicită a clientului înainte ca decontarea Automated Clearing House să poată avea loc.
- Deoarece Automated Clearing House nu este o rețea în timp real, retururile pot încă avea loc chiar și după ce solicitarea de plată a fost trimisă către Mastercard Gateway.
- Trebuie să acceptați regulamentele NACHA. Încălcarea conformității poate duce la amenzi substanțiale. Pentru a fi la curent cu regulamentele curente, vizitați https://www.nacha.org/
- Trebuie să stabiliți, implementați și actualizați politici, proceduri și sisteme în legătură cu inițierea, procesarea și stocarea datelor introduse pentru a putea:
- Asigura confidențialitatea informațiilor.
- Proteja împotriva amenințărilor la adresa securității informațiilor.
- Proteja împotriva utilizării neautorizate a informațiilor.
Fluxul de date Automated Clearing House
- Plătitorul autorizează plata sau depozitul.
Codurile de intrare standard (SEC) permise de NACHA sunt:
TEL
. Intrare inițiată telefonic.WEB
. Intrare inițiată pe web.PPD
. Plăți și depozite prestabilite.
- Comerciantul trimite o solicitare de tranzacție către Mastercard Gateway.
Solicitările pot fi
PAY
,REFUND
sauVOID
. - Mastercard Gateway emite un răspuns care conține informații de stare (de ex.
APPROVED_PENDING_SETTLEMENT
).Tranzacția este adăugată la lotul curent pentru decontare.
Lotul de tranzacții este închis în unul dintre următoarele două moduri:
- O dată pe zi la o oră configurată.
- De către dvs., închizând lotul deschis în momentul respectiv prin trimiterea unei solicitări API
CLOSE_BATCH
. Orice tranzacții ulterioare vor fi adăugate într-un nou lot.
La finalul zilei, toate loturile închise pe care nu le-ați trimis încă sunt colectate într-un fișier de decontare și transmise Achizitorului Automated Clearing House.
- Achizitorul Automated Clearing House emite un răspuns imediat, care conține rezultatul validării datelor transmise (de ex.
APPROVED
sauDECLINED
) și trimite solicitările de plată către rețeaua Automated Clearing House pentru procesare.Note:
- O stare
APPROVED
emisă de către Achizitorul Automated Clearing House implică doar acceptarea validată a transmisiei pentru procesare în continuare; nu o aprobare propriu-zisă a tranzacției financiare. - Pentru a primi o notificare referitoare la răspunsul Achizitorului Automated Clearing House, abonați-vă la serviciul Notificări Webhook.
- O stare
- Rețeaua Automated Clearing House administrează tranzacțiile de plată între instituțiile financiare aplicabile.
- După o întârziere de până la 3 zile, rețeaua Automated Clearing House trimite un raport de excepție referitor la solicitările de plată care nu au fost aprobate către achizitorul Automated Clearing House, care la rândul lui, vi-l va transmite.
Integrarea Automated Clearing House plăților
Există trei opțiuni de integrare a plăților Automated Clearing House pe pagina dvs. de plată:
Dacă aveți deja o integrare Hosted Checkout, puteți utiliza Hosted Checkout pentru a verifica detaliile plăților Automated Clearing House.
Puteți face acest lucru configurând interaction.operation=VERIFY
în solicitarea Create Checkout Session. Hosted Checkout va afișa plățile Automated Clearing House ca opțiune de plată pentru plătitor. Datele introduse de plătitor sunt verificate prin metodele de verificare acceptate de achizitorul configurat.
Puteți afla succesul operațiunii de verificare comparând resultIndicator
și successIndicator
. Dacă interacțiunea a eșuat, Hosted Checkout afișează un mesaj care indică faptul că verificarea a eșuat și afișează un mesaj solicitând plătitorului să încerce din nou.
Dacă aveți propria dvs. pagină de plată, puteți alege opțiunea de integrare Hosted Session pentru a permite Mastercard Gateway să captureze în mod securizat detaliile plăților Automated Clearing House și să le stocheze într-o sesiune de plată.
<html> <head> <!-- INCLUDE SESSION.JS JAVASCRIPT LIBRARY --> <script src="https://anzworldline.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>
- Includeți biblioteca JavaScript client
session.js
găzduită de gateway în pagina dvs. de plată. Calea către acest fișier include atât versiunea API, cât și identificatorul comerciantului pentru sesiune. - Creați codul HTML pentru pagina de plată care conține câmpurile plății Automated Clearing House.
Pentru a preveni trimiterea datelor sensibile către server, asigurați-vă că toate câmpurile cu date sensibile suntreadonly
și NU au atributulname
. - Invocați funcția
PaymentSession.configure(configuration)
.
Obiectul
configuration
vă permite să anexați câmpuri găzduite paginii dvs. de plată. Este necesar să furnizați următoarele:
- sesiunea (opțional); dacă nu o furnizați, biblioteca client va crea o sesiune de plată.
- selectoarele de câmpuri pentru câmpurile plăților Automated Clearing House; odată furnizate, acestea sunt înlocuite cu câmpurile proxy corespunzătoare încorporate în cadrele iFrame găzduite de Mastercard Gateway. Câmpurile proxy vor avea același aspect și stil cu cele ale câmpurilor înlocuite.
-
opțiuni de neutralizare a fraudării prin clickjacking
Clickjackingul, cunoscut și sub numele de „atac prin mascarea IU” este o metodă prin care atacatorul utilizează mai multe straturi transparente sau opace pentru a determina utilizatorul să facă clic pe un buton sau un link către o altă pagină atunci când acesta intenționează să facă clic pe pagina de nivel superior. Pentru a utiliza Hosted Session, trebuie să implementați unul sau mai multe dintre următoarele mijloace de protecție împotriva atacurilor prin clickjacking.
Opțiunea de neutralizare a cadrelor Implementare javascript
includeți codul JavaScript „frame-breaker” pe pagina dvs. de plată. x-frame-options
serverul dvs. trebuie să returneze un antet de răspuns HTTP cu opțiuni X-Frame. csp
serverul dvs. trebuie să returneze un antet de răspuns HTTP cu politica de securitate a conținutului, care să includă o directivă de tip frame-ancestors. Trebuie să specificați mijloacele de protecție implementate prin parametrul
frameEmbeddingMitigation
din apelulPaymentSession.configure(configuration)
. Pentru informații privind protecția împotriva atacurilor prin clickjacking, consultați Ghidul de protecție împotriva atacurilor prin clickjacking de pe site-ul web extern OWASP. -
funcțiile callback pentru gestionarea diferitelor evenimente din timpul interacțiunii cu Hosted Session
initialized( )
: invocate când câmpurile găzduite sunt atașate paginii dvs. de plată.formSessionUpdate( )
: invocate ca reacție la funcțiaPaymentSession.updateSessionFromForm('ach')
(a se vedea pasul următor)
- Invocați
PaymentSession.updateSessionFromForm('ach')
pentru a stoca detaliile Automated Clearing House colectate într-o sesiune de plată. După finalizarea operațiunii, funcția callbackformSessionUpdate( )
este invocată cu un parametru de rezultat. Trebuie să verificați valoarearesult.status
pentru a determina dacă operațiunea a avut succes. Consultații secțiunea Gestionarea răspunsurilor callback. - Puteți utiliza sesiunea de plată returnată (session.id) pentru a efectua o creare de simbol sau o tranzacție de plată atunci când este necesar. Pentru mai multe informații, consultați secțiunea Realizarea unei operațiuni prin utilizarea sesiunii.
Referința session.js[JavaScript]
Puteți trimite detaliile plăților Automated Clearing House direct în Mastercard Gateway, utilizând următoarele operațiuni.
Inițiați o plată Automated Clearing House prin trimiterea unei solicitări APIPAY
și o rambursare prin trimiterea unei solicitări APIREFUND
.
Asigurați includerea următoarelor informații în cadrul solicitării:
sourceOfFunds.type = ACH.
sourceOfFunds.provided.ach.routingNumber
: Numărul de direcționare bancară al plătitorului.sourceOfFunds.provided.ach.bankAccountNumber
: Numărul contului bancar al plătitorului.sourceOfFunds.provided.ach.bankAccountHolder
: Numele posesorului contului plătitorului.sourceOfFunds.provided.ach.accountType
: Tipul contului bancar al plătitorului.sourceOfFunds.provided.ach.secCode
: Codul SEC pentru plata Automated Clearing House aplicabil acestei tranzacții.Codul SEC trebuie să fie unul dintre următoarele:
TEL
: O intrare Debit Automated Clearing House pentru o plată B2B autorizată telefonic de către client. TEL poate fi utilizat numai când există deja o relație între dvs. și plătitor sau când nu există o relație existentă, plătitorul inițiază contactul cu dvs.WEB
: O intrare Debit Automated Clearing House pentru o plată B2B autorizată prin internet sau o rețea wireless.PPD
: O intrare Debit sau Credit Automated Clearing House pe baza unei autorizări autentificate furnizate de un plătitor. PPD este utilizat pentru plăți B2C (de ex. plăți de salarii pentru angajați, plăți de ipoteci sau decontări de cheltuieli).
Puteți să anulați tranzacția precedentă din cadrul unei comenzi prin trimiterea unei solicitări APIVOID
pentru comandă, cu parametrul ID tranzacție țintă având o referință către solicitarea PAY
sau REFUND
.
Pentru o solicitare APIVOID
realizată cu succes, tranzacția țintă referință este înlăturată din lot și, deci, nu va fi trimisă către achizitorul Automated Clearing House.
Tranzacțiile nu mai pot fi anulate din momentul în care lotul care conține tranzacția țintă referință a fost închis pentru decontare (adică decontarea este în desfășurare) sau a fost deja decontat.
Puteți verifica detaliile unei plăți Automated Clearing House trimițând o solicitare APIVERIFY
.
În prezent, Mastercard Gateway acceptă numai verificarea semantică a detaliilor plăților ACH, nu și validitatea contului bancar și participarea băncii la Automated Clearing House.
Gestionarea și decontarea loturilor
Puteți controla închiderea lotului trimițând o solicitare APICLOSE_BATCH
cu ID-ul de achizitor al achizitorului dvs. Automated Clearing House. ID-ul de achizitor este furnizat în transaction.acquirer.id
în cadrul răspunsului la tranzacție.
Prin urmare, lotul achizitor Automated Clearing House curent din cadrul Mastercard Gateway va fi închis. Tranzacțiile ulterioare Automated Clearing House vor fi adăugate la un nou lot intern Mastercard Gateway.
Reconciliere
Răspunsul la Retrieve Transaction pentru tranzacții Automated Clearing House realizate cu succes conține identificatorul de tranzacție utilizat de achizitor în transaction.receipt
.
Acest identificator va fi utilizat în Raport de detaliu de tip excepție furnizat de către achizitorul Automated Clearing House Paymentech Salem. Acesta conține toate tranzacțiile Automated Clearing House eșuate și poate fi utilizat pentru reconcilierea plăților dvs.
Starea tranzacției (response.gatewayCode
) furnizată de către gateway nu este actualizată cu răspunsul real de la rețeaua Automated Clearing House.
Testarea Automated Clearing House tranzacțiilor
Vă puteți testa integrarea utilizându-vă profilul de TESTARE comerciant.
Mastercard Gateway oferă un emulator care va returna un răspuns cu response.gatewayCode=APPROVED
pentru toate solicitările valide pentru plăți Automated Clearing House.