Card cadou
Mastercard Gateway vă permite să oferiți carduri cadou ca metodă de plată pentru plătitorii dvs.
Cerințe preliminare
- Trebuie să vă înscrieți ca furnizor terț de carduri.
- Your payment service provider trebuie să vă configureze profilul de comerciant Mastercard Gateway folosind detaliile contului dvs. la furnizorul terț.
Adăugarea de carduri cadou la integrarea dvs
Gateway-ul oferă trei opțiuni de integrare a cardurilor cadou pe pagina dvs. de plată:
Carduri cadou prin Hosted Checkout
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.
Carduri cadou prin Hosted Session
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 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>
- Includeți biblioteca JavaScript client
session.jsgă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 cardului cadou.
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
configurationvă 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 cardului cadou; 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 javascriptincludeți codul JavaScript „frame-breaker” pe pagina dvs. de plată. x-frame-optionsserverul dvs. trebuie să returneze un antet de răspuns HTTP cu opțiuni X-Frame. cspserverul 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
frameEmbeddingMitigationdin 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('giftCard', <localCardBrand>)(a se vedea pasul următor)
- Invocați
PaymentSession.updateSessionFromForm('giftCard', <localCardBrand>)pentru a stoca detaliile colectate ale cardului cadou într-o sesiune de plată. După finalizarea operațiunii, funcția callbackformSessionUpdate( )este invocată cu un parametru de rezultat. Trebuie să verificați valoarearesult.statuspentru 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]
Carduri cadou prin Direct Payment
Dacă doriți controlul total asupra interacțiunii cu cardurile cadou de pe pagina dvs. de plată, puteți alege opțiunea Direct Payment.
Solicitați o autorizare sau o plată folosind un card cadou
Trebuie să completați următoarele câmpuri în solicitarea Authorize:
sourceOfFunds.type=GIFT_CARDsourceOfFunds.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 esteFALSE.
Î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 (ascuns).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: Numele mărcii folosit pentru a descrie un card cadou, așa cum este determinat de gateway pe baza intervalului 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 setatorder.acceptPartialAmount=TRUE.transaction.requestedAmount: Dacă tranzacția a fost parțial aprobată (response.gatewayCode=PARTIALLY_APPROVED), acesta conține suma solicitată inițial.
Dacă ați setatorder.acceptPartialAmount=TRUEatuncitransaction.amountșiorder.amountsunt setate cu valoarea sumei aprobate în fapt.
Verificați cardul cadou
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.
Referință API Verify [REST][NVP]
Consultarea soldului
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_CARDsourceOfFunds.provided.card.number: Numărul cardului cadou pentru care solicitați informații privind soldul.
Referință API Balance Inquiry[REST][NVP]
Gestionați aprobările parțiale
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, Mastercard Gateway va răspunde cu response.gatewayCode=INSUFFICIENT_FUNDS.
Referință API Detalii card[REST][NVP]
Testare și activare
Vă puteți testa integrarea cardurilor cadou utilizându-vă profilul de testare comerciant.