Integration Types
Altre funzionalità
Card Payments
Mobile Wallets
Alternative Payment Methods
Resources
Mastercard Gateway consente di offrire ai paganti carte prepagate come modalità di pagamento.
Il gateway fornisce tre opzioni che consentono di integrare le carte prepagate nella pagina di pagamento:
Se si dispone di un'integrazione Hosted Checkout esistente, è possibile utilizzare Hosted Checkout per verificare i dettagli della carta prepagata.
È possibile eseguire questa operazione impostando interaction.operation=VERIFY
nella richiesta Create Checkout Session. Hosted Checkout visualizza Carta prepagata come opzione di pagamento per il pagante. I dati immessi dal pagante vengono verificati utilizzando i metodi di verifica supportati dall'acquirer configurato.
È possibile verificare se l'operazione di verifica ha avuto esito positivo confrontando i parametri resultIndicator
e successIndicator
. Se l'interazione non è riuscita, Hosted Checkout visualizza un messaggio per comunicare l'esito negativo della verifica e chiedere al pagante di riprovare l'operazione.
Se si dispone di una pagina di pagamento personale, è possibile scegliere l'opzione di integrazione Hosted Session per consentire a Mastercard Gateway di acquisire in modo sicuro i dettagli della carta prepagata e archiviarli in una sessione di pagamento.
<html> <head> <!-- INCLUDE SESSION.JS JAVASCRIPT LIBRARY --> <script src="https://eu-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 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
ospitata dal gateway. Il percorso di questo file include sia la versione api sia l'identificativo esercente per la sessione. readonly
e che NON presentino l'attributo name
.PaymentSession.configure(configuration)
.L'oggetto configuration
consente di allegare campi ospitati alla pagina di pagamento. È necessario specificare le seguenti informazioni:
Il clickjacking, noto anche come "rapimento del clic", si verifica quando l'autore dell'attacco usa più livelli trasparenti o opachi per indurre un utente a fare clic su un pulsante o su un collegamento di una pagina credendo di fare clic sulla pagina del livello principale. Per utilizzare Hosted Session, è necessario implementare una o più difese contro gli attacchi di clickjacking tra quelle indicate di seguito.
Opzione di mitigazione dei frame | Implementazione |
javascript |
Includere il JavaScript "frame-breaker" nella pagina di pagamento. |
x-frame-options |
Il server deve restituire un'intestazione della risposta HTTP X-Frame Options. |
csp |
Il server deve restituire l'intestazione della risposta HTTP Content-Security-Policy contenente una direttiva frame-ancestors. |
È necessario specificare le difese implementate mediante il parametro frameEmbeddingMitigation
nella chiamata PaymentSession.configure(configuration)
. Per informazioni su come difendersi dagli attacchi di clickjacking, vedere Clickjacking Defense Cheat Sheet nel sito Web OWASP esterno.
initialized( )
: richiamata quando vengono allegati i campi ospitati alla pagina di pagamento.formSessionUpdate( )
: richiamata in risposta alla funzione PaymentSession.updateSessionFromForm('giftCard', <localCardBrand>)
(vedere il passaggio successivo)PaymentSession.updateSessionFromForm('giftCard', <localCardBrand>)
per archiviare in una sessione di pagamento i dettagli della carta prepagata raccolti. Una volta completata l'operazione, viene richiamato il callback formSessionUpdate( )
con un parametro dei risultati. È necessario verificare il valore result.status
per stabilire se l'operazione è riuscita. Vedere Gestione delle risposte di callback.
Riferimento per session.js[JavaScript]
Se si desidera avere il controllo completo sull'interazione delle carte prepagate sulla propria pagina di pagamento, è possibile scegliere l'opzione Direct Payment.
È necessario specificare i seguenti campi nella richiesta Authorize
:
sourceOfFunds.type=GIFT_CARD
sourceOfFunds.provided.giftCard.number
: numero carta prepagata.sourceOfFunds.provided.giftCard.pin
: PIN della carta prepagata. Non sempre è obbligatorio, dipende dal tipo di carta prepagata.order.amount
: importo da pagare.order.currency
: valuta del pagamento.order.acceptPartialAmount
: (facoltativo) Indica se l'esercente è preparato per accettare la carta per il pagamento parziale dell'intero importo. Il valore predefinito è FALSE
.Oltra ai campi standard, affinché l'autorizzazione sia eseguita correttamente, vengono restituiti i campi indicati di seguito:
sourceOfFunds.type
: GIFT_CARD
, mirroring della richiesta.sourceOfFunds.provided.giftCard.number
: numero della carta prepagata (oscurato).sourceOfFunds.provided.giftCard.pin
: PIN della carta prepagata (completamente oscurato).sourceOfFunds.provided.giftCard.scheme
: l'organizzazione proprietaria di un marchio della carta di credito prepagata definisce la normativa che ne regola l'utilizzo.sourceOfFunds.provided.giftCard.brand
: il nome del marchio utilizzato per descrivere la carta di credito prepagata, riconosciuto e accettato a livello globale. Per molti tipi di carte principali, questo campo corrisponderà al nome del circuito.sourceOfFunds.provided.giftCard.localBrand
: il nome del marchio utilizzato per descrivere una carta di credito prepagata come stabilito dal gateway in base all'intervallo BIN della carta.availableBalance.funds.amount
: l'importo disponibile sulla carta prepagata dopo questo pagamento e che il pagante può spendere. Non tutti i provider di terze parti forniscono questa informazione.availableBalance.funds.currency
: la valuta del saldo disponibile della carta deve essere espressa come codice alfa ISO 4217, ad esempio USD.order.amount
: importo accettato. Può essere inferiore all'importo richiesto, se i fondi presenti nella carta non sono sufficienti ed è stato impostato order.acceptPartialAmount=TRUE
. transaction.requestedAmount
: se la transazione è stata approvata parzialmente (response.gatewayCode=PARTIALLY_APPROVED
) contiene l'importo originale richiesto. order.acceptPartialAmount=TRUE
, transaction.amount
e order.amount
sono impostati sull'importo approvato.È possibile verificare che una carta prepagata con il numero di carta (e il PIN) fornito sia una carta prepagata valida emessa dal provider mediante l'invio di una richiesta DirectAPIVERIFY
.
È possibile richiedere il saldo disponibile su una carta prepagata inviando una richiesta DirectAPI BALANCE_INQUIRY. È necessario fornire le informazioni indicate di seguito nella richiesta:
sourceOfFunds.type
=GIFT_CARD
sourceOfFunds.provided.card.number
: il numero della carta prepagata per la quale si richiede il saldo.Se l'esercente è preparato per accettare un'approvazione per un importo parziale per una transazione utilizzando una carta prepagata, è necessario inviare order.acceptPartialAmount=TRUE
nella richiesta. In questo caso, l'esercente dovrà creare un'altra transazione per il saldo restante utilizzando un'altra forma di pagamento.
Se l'esercente non è preparato per questo, impostare order.acceptPartialAmount=FALSE
nella richiesta. Se sulla carta prepagata non sono disponibili fondi sufficienti, Mastercard Gateway risponderà con response.gatewayCode=INSUFFICIENT_FUNDS
.
Riferimento API per i dettagli della carta di credito[REST][NVP]
È possibile testare la propria integrazione delle carte prepagate utilizzando il proprio profilo esercente di prova.