eGenius Platform vă permite să oferiți carduri cadou ca metodă de plată pentru plătitorii dvs.
Gateway-ul oferă trei opțiuni de integrare a cardurilor cadou pe pagina dvs. de plată:
Dacă aveți deja o integrare Hosted Checkout, puteți utiliza Hosted Checkout pentru a verifica detaliile cardurilor cadou.
Puteți face acest lucru configurând interaction.operation=VERIFY
în solicitarea Create Checkout Session. Hosted Checkout va afișa cardul-cadou 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 cardului cadou ș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 Gift Card details:</div> <div>Card Number: <input type="text" id="gift-card-number" class="input-field" value="" readonly></div> <div>Pin:<input type="text" id="gift-card-pin" 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 A GIFT CARD giftCard: { number: "#gift-card-number", pin: "#gift-card-pin", } }, //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.number) { console.log("Gift card number invalid or missing"); } if (response.errors.pin) { console.log("Pin 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('giftCard', '<localCardBrand>'); } </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('giftCard', <localCardBrand>)
(a se vedea pasul următor)PaymentSession.updateSessionFromForm('giftCard', <localCardBrand>)
pentru a stoca detaliile colectate ale cardului cadou î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]
Dacă doriți controlul total asupra interacțiunii cu cardurile cadou de pe pagina dvs. de plată, puteți alege opțiunea Direct Payment.
Trebuie să completați următoarele câmpuri în solicitarea Authorize
:
sourceOfFunds.type=GIFT_CARD
sourceOfFunds.provided.giftCard.number
: Număr card cadou.sourceOfFunds.provided.giftCard.pin
: Cod PIN card cadou. (Nu este întotdeauna obligatoriu, în funcție de cardul cadou.)order.amount
: Suma de plată.order.currency
: Moneda de plată.order.acceptPartialAmount
: (Opțional) Indică dacă sunteți pregătit să acceptați cardul pentru plata parțială a sumei totale. Valoarea implicită pentru acest câmp este FALSE
.În plus față de câmpurile standard, vor fi returnate următoarele câmpuri pentru efectuarea cu succes a autorizării:
sourceOfFunds.type
: GIFT_CARD
, oglindește solicitarea dvs.sourceOfFunds.provided.giftCard.number
: Număr card cadou (mascat).sourceOfFunds.provided.giftCard.pin
: Codul PIN al cardului cadou (complet ascuns).sourceOfFunds.provided.giftCard.scheme
: Organizația care deține un tip de card cadou și definește regulamentele de operare pentru utilizarea sa.sourceOfFunds.provided.giftCard.brand
: Tipul (brandul) cardului utilizat pentru a descrie cardul cadou, recunoscut și acceptat la nivel mondial. Pentru multe dintre tipurile principale de carduri acesta este identic cu numele schemei.sourceOfFunds.provided.giftCard.localBrand
: Tipul cardului utilizat pentru a descrie un card cadou, cum a fost stabilit de gateway pe baza intervalului cod BIN al cardului.availableBalance.funds.amount
: Suma disponibilă plătitorului pentru plată utilizând acest card cadou după această plată. (Accesul la această informație depinde de furnizorul terț.)availableBalance.funds.currency
: Moneda soldului disponibil de pe card, exprimată sub forma unui cod alfabetic ISO 4217, cum ar fi USD.order.amount
: Suma acceptată. Rețineți că aceasta poate fi mai mică decât suma solicitată, în cazul în care cardul nu are fonduri suficiente și dvs. ați setat order.acceptPartialAmount=TRUE
. transaction.requestedAmount
: Dacă tranzacția a fost parțial aprobată (response.gatewayCode=PARTIALLY_APPROVED
), acesta conține suma solicitată inițial. order.acceptPartialAmount=TRUE
atunci transaction.amount
și order.amount
sunt setate cu valoarea sumei aprobate în fapt.Puteți verifica dacă un card cadou cu un număr de card și un cod PIN furnizate este un card cadou valid, emis de către furnizor prin trimiterea unei solicitări APIVERIFY
.
Puteți interoga soldul disponibil de pe un card cadou trimițând o solicitare API BALANCE_INQUIRY. Trebuie să completați următoarele câmpuri în solicitare:
sourceOfFunds.type
=GIFT_CARD
sourceOfFunds.provided.card.number
: Numărul cardului cadou pentru care solicitați informații privind soldul.Dacă sunteți pregătit să acceptați aprobarea unei plăți parțiale cu un card cadou pentru o tranzacție, trebuie să trimiteți order.acceptPartialAmount=TRUE
în cadrul solicitării dvs. În acest caz, aveți responsabilitatea de a crea o altă tranzacție pentru soldul rămas, utilizând o altă metodă de plată.
Dacă nu sunteți pregătit să face acest lucru, setați order.acceptPartialAmount=FALSE
în solicitarea dvs. Dacă pe cardul cadou nu există fonduri suficiente, eGenius Platform va răspunde cu response.gatewayCode=INSUFFICIENT_FUNDS
.
Vă puteți testa integrarea cardurilor cadou utilizându-vă profilul de testare comerciant.
Copyright © 2023 UniCredit Bank