Integration Types
Alte caracteristici
Card Payments
Mobile Wallets
Alternative Payment Methods
Resources
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 eGenius Platform și oferă o prezentare generală a procesului de plată, precum și detalii referitoare la operațiunile API acceptate pentru plățile Automated Clearing House.
Trebuie să aveți un cont Automated Clearing House configurat la un achizitor Automated Clearing House.
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.Solicitările pot fi PAY
, REFUND
sau VOID
.
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:
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.
APPROVED
sau DECLINED
) și trimite solicitările de plată către rețeaua Automated Clearing House pentru procesare.
Note:
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.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 eGenius Platform 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://egenius.unicredit.ro/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>
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. readonly
și NU au atributul name
.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:
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 apelul PaymentSession.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.
initialized( )
: invocate când câmpurile găzduite sunt atașate paginii dvs. de plată.formSessionUpdate( )
: invocate ca reacție la funcția PaymentSession.updateSessionFromForm('ach')
(a se vedea pasul următor)PaymentSession.updateSessionFromForm('ach')
pentru a stoca detaliile Automated Clearing House colectate într-o sesiune de plată. După finalizarea operațiunii, funcția callback formSessionUpdate( )
este invocată cu un parametru de rezultat. Trebuie să verificați valoarea result.status
pentru a determina dacă operațiunea a avut succes. Consultații secțiunea Gestionarea răspunsurilor callback.
Referința session.js[JavaScript]
Puteți trimite detaliile plăților Automated Clearing House direct în eGenius Platform, 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, eGenius Platform acceptă numai verificarea semantică a detaliilor plăților ACH, nu și validitatea contului bancar și participarea băncii la Automated Clearing House.
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 eGenius Platform va fi închis. Tranzacțiile ulterioare Automated Clearing House vor fi adăugate la un nou lot intern eGenius Platform.
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.
Vă puteți testa integrarea utilizându-vă profilul de TESTARE comerciant.
eGenius Platform oferă un emulator care va returna un răspuns cu response.gatewayCode=APPROVED
pentru toate solicitările valide pentru plăți Automated Clearing House.