Modelul Hosted Payment Session cu JavaScript

Modelul Hosted Payment Session cu JavaScript (HPF.js) este o integrare simplă care reduce la minimum interacțiunile dintre serverul dvs. web și eGenius Platform, utilizând o bibliotecă JavaScript pe partea clientului, pe care trebuie să o includeți în pagina de plată și să o accesați prin intermediul metodei HostedForm.updateSession( ). Detaliile cardului plătitorului sunt trimise către eGenius Platform în metoda HostedForm.updateSession( ) care este apelată atunci când plătitorul apasă „Pay” pentru a trimite pagina de plată.

Bune practici și sfaturi

Securizarea câmpurilor sensibile

Este important să vă asigurați că informațiile sensibile din câmpurile referitoare la plată nu sunt trimise serverului dvs. De exemplu, dacă utilizați un formular de plată, puteți obține această caracteristică omițând atributul „name” din câmpurile număr card, validitate card și CSC/CVV.

Opțiunea JavaScript dezactivată în browserul plătitorului

Nu puteți utiliza modelul Hosted Payment Session cu JavaScript dacă browserul plătitorului nu acceptă JavaScript.

Flux de informații HPF.js

Procesul de plată detaliat pentru modelul HPF.js este prezentat mai jos.

Modelul de formular de plată găzduit cu JavaScript

  1. Afișați o pagină de plată pentru plătitor, așteptând introducerea detaliilor cardului și a altor informații solicitate ca date de intrare. Pagina de plată:
    • trebuie să includă biblioteca hpf.js, accesată prin apelarea metodei HostedForm.updateSession( ).
    • trebuie să includă metoda HostedForm.setMerchant( ) pentru setarea identificatorului contului dvs. de comerciant din eGenius Platform.
    • trebuie să conțină câmpurile pentru detaliile cardului (număr card, cod de securitate, luna de expirare și anul de expirare) pe care trebuie să le colectați de la plătitor.
    • poate conține și câmpuri suplimentare pe care doriți să le colectați în acest pas. De exemplu, Adresă de livrare, Număr voucher etc.
    • poate avea stilul pe care îl doriți dvs.

    Consultați secțiunea Construiți-vă integrarea.

    Acest pagină este utilizată numai pentru colectarea detaliilor cardului și nu pentru realizarea unei plăți.
  2. Plătitorul introduce detaliile cardului și apasă butonul „Plată” de pe site-ul dvs. web, care apelează metoda HostedForm.createSession( ). Detaliile cardului colectate prin intermediul paginii de plată sunt transmise în metoda HostedForm.createSession( ).

    eGenius Platform colectează, verifică (utilizând verificare de bază) și curăță detaliile cardului (număr card, dată de expirare card și date CSC/CVV) înainte de a adăuga aceste detalii în sesiune.

  3. eGenius Platform returnează răspunsul la apelul HostedForm.createSession( ) utilizând o funcție callback pe care dvs. o furnizați.
  4. Site-ul dvs. web analizează orice erori returnate de serviciul eGenius Platform și afișează din nou pagina de plată dacă sunt întâlnite orice erori.
  5. Site-ul dvs. web trimite identificatorul de sesiune returnat către serverul dvs. web.

    Puteți opta să afișați alte pagini pentru plătitor, în funcție de procesul operațiunii dvs., sau să realizați o tranzacție de stocare sau plată la momentul colectării detaliilor cardului.

  6. Dvs. inițiați o solicitare către eGenius Platform specificând câmpurile necesare, folosind una sau mai multe dintre următoarele operațiuni API: Autorizare, plată, creare de simbol. Detaliile cardului pot fi furnizate utilizând Surse multiple de detalii card. Pentru mai multe informații, consultați secțiunea Realizarea unei operațiuni prin utilizarea sesiunii.
    Înainte de a realiza tranzacția de plată, puteți trimite o solicitare de cotație de schimb pentru conversie valutară dinamică (DCC) pentru a colecta moneda contului plătitorului și suma comenzii în moneda respectivă.
    În acest punct puteți, de asemenea, autentifica plătitorul utilizând serviciul 3D-Secure. Rețineți că, în cazul în care plătitorul acceptă oferta DCC, trebuie să furnizați informațiile DCC în solicitarea de autentificare.
  7. eGenius Platform trimite rezultatul solicitării înapoi către dvs. Puteți realiza operațiuni ulterioare utilizând identificatorul de sesiune înainte ca sesiunea să expire.
  8. Dvs. afișați rezultatul tranzacției pe site-ul dvs. web pentru plătitor.
Visa Checkout prin Hosted Payment Session (cu JavaScript)

Dacă aveți propria dvs. pagină de plată, puteți alege această opțiune pentru a permite eGenius Platform să administreze detaliile includerii SDK-ului Visa Checkout, să lanseze lightboxul Visa Checkout și să actualizeze rezultatele într-o sesiune de plată. Aceasta este cea mai simplă opțiune pentru integrări Hosted Payment Session existente (cu JavaScript).

Procesul de plată este după cum urmează:

  1. Afișați o pagină de plată pentru plătitor, după cum este necesar pentru integrarea Hosted Payment Session cu JavaScript. Pagina de plată trebuie să includă o metodă de identificare a Visa Checkout ca opțiunea de validare selectată de către plătitor.

    Mai jos este prezentat un exemplu de cod care vă arată cum să afișați Visa Checkout ca opțiune în cadrul paginii dvs. de plată.

    <script id="hpfScript" src="https://egenius.unicredit.ro/form/v3/hpf.js"></script>
    <!-- REPLACE THE action URL with the payment URL on your webserver -->
    <form name="myform" method="POST" action="https://my.company.com/pay">
    <!-- Other fields can be added to enable you to collect additional data on the payment page -->
    Email: <input type="text" name="email">
    <!-- The hidden values below can be set in the callback function as they are returned when creating the session -->
    <input type="hidden" name="sessionId" id="sessionId">
    <img alt="Visa Checkout" role="button" src="https://sandbox.www.v.me/wallet-services-web/xo/button.png" onclick="showVisaCheckoutLightbox()"/>
    </form>
  2. Când plătitorul selectează Visa Checkout, pagina de plată lansează lightboxul Visa Checkout cu opțiunile necesare. Când interacțiunea cu sistemul lightbox este finalizată, hpf.js utilizează automat callId returnat de sistemul lightbox pentru a colecta detaliile de plată de la Visa Checkout. Rezultatul interacțiunii este returnat în funcția callback — dacă interacțiunea a avut succes, detaliile de plată sunt transferate în sesiunea de plată.

    Mai jos este prezentat un exemplu de cod care vă arată cum să invocați metoda HostedForm.showVisaCheckout( ) pentru a lansa lightboxul Visa Checkout cu opțiunile necesare și să transferați detaliile interacțiunii de la Visa Checkout în sesiunea de plată.


    <script>
    var options = {
    acceptedCards: [
    "MASTERCARD",
    "AMEX",
    "DISCOVER",
    "VISA"
    ],
    order: {
    currency: "AUD",
    amount: 10.50
    },
    merchant: {
    logo: "https://test.te",
    displayName: "your merchant"
    },
    country: "AUS",
    locale: "en_AU",
    paymentConfirmation: "CONFIRM_AT_PROVIDER"
    paymentConfirmationMessage: "Continue to the merchant to complete your purchase"
    };
    function showVisaCheckoutLightbox() {
    if (typeof HostedForm === 'undefined') {
    throw 'hpf.js is not loaded';
    }HostedForm.setMerchant("MERCHANT_ID"); //Replace with your merchant id
    HostedForm.showVisaCheckout(options,
    callback);
    }</script>
  3. Funcția callback JavaScript administrează răspunsul de interacțiune de la Visa Checkout prin intermediul unui obiect care descrie rezultatul apelului HostedForm.showVisaCheckout( ). Trebuie să definiți această funcție callback în cadrul paginii dvs. de plată.

    Dacă response.status="ok", pagina dvs. web trebuie să transmită identificatorul de sesiune returnat către serverul dvs. web astfel încât acesta să poată fi utilizat pentru a invoca o operațiune cu referința sesiunii.

    Mai jos este prezentat un exemplu de cod care vă arată cum să definiți funcția callback în pagina de plată, care este trimisă serverului dvs. web.

    var callback = function(response) {
    if (response.status === "ok") {
    // call your server to do the payment with the response.session value
    // this is where we populate the hidden values in the form
    var sessionIdElement = document.getElementById("sessionId");
    sessionIdElement.value = response.session;
    document.myform.submit();
    }else if (response.status === "request_timeout") {
    // handle the timeout for example by giving the payer the possibility to retry
    }else if (response.status === "invalid_session") {
    // handle invalid session details for example by giving the payer the possibility to retry with different card details. If the new details are correct,
    you can call the updateSession( ) method
    }else if (response.status === "cancelled") {
    // handler code for the case when the user closes the Visa Checkout lightbox without selecting a credit card
    }else {
    // add system error handling here. Typically this would mean the integration is not working properly because there is no response from the client library.
    // this could result in displaying a page to the payer to try again later and call support
    }
    };
  4. Observați că puteți utiliza aceeași funcție callback atât pentru plățile cu cardul cât și pentru plățile Visa Checkout.
  5. În acest moment, puteți utiliza identificatorul sesiunii de plată pentru a realiza orice operațiune în care sesiunea de plată poate furniza detaliile de plată, de exemplu solicitări Authorize, Pay, Tokenize. Rețineți că detaliile cardului pot fi furnizate utilizând multiple surse de detalii card.
  6. Este recomandat să colectați detaliile de sesiune utilizând operațiunea Retrieve Session și să verificați conținutul sesiunii înainte de a iniția o operațiune de plată sau stocare.

Depanare și întrebări frecvente

Am actualizat sesiunea prin metoda HostedForm.updateSession( ). De ce nu pot efectua o tranzacție Pay cu această sesiune?

Dacă actualizați sesiunea prin metoda HostedForm.updateSession( ), puteți efectua o tranzacție Pay în sesiune folosind NUMAI API v30. Dacă sunteți integrat(ă) cu API v29 sau o versiune anterioară, trebuie să actualizați integrarea la versiunea 30.

Ce trebuie să fac dacă formularul de plată returnează o eroare?

Formularul de plată poate returna diferite tipuri de erori. Consultați secțiunea Tratarea erorilor.

Ce se întâmplă dacă transmit câmpuri definite de comerciant în metoda HostedForm.createSession( )?

Pagina dvs. de plată poate să conțină câmpuri definite de comerciant pentru colectarea de informații suplimentare, de exemplu, codul talonului de reducere, identificatorul pentru programul de loialitate, adresa de livrare, metoda de livrare etc. Totuși, dacă transmiteți aceste informații în metoda HostedForm.updateSession( ), acestea vor fi ignorate.

Pot apela metoda HostedForm.createSession( ) de mai multe ori?

Dacă apelați metoda HostedForm.createSession( ) de mai multe ori — de fiecare dată când apelați metoda HostedForm.createSession( ) este creată o sesiune nouă.

Copyright © 2023 UniCredit Bank