Visa Checkout

1 Wstęp

Visa Checkout to cyfrowy portfel w którym można zapisać dane karty płatniczej oraz inne dane, takie jak np. adres wysyłki.

Usługa działa zgodnie z krokami podanymi poniżej. Implementacja każdego z nich omówiona w dalszych rozdziałach.

  1. Płacący wybiera opcję płatności za pomocą danych w Visa Checkout i loguje się do swojego konta za pomocą lightboksa wyświetlonego nad stroną sklepu.
  2. (opcjonalnie) Płacący potwierdza dane na stronie sklepu.
  3. Płacący składa zamówienie i płaci.

Więcej informacji na temat Visa Checkout znajduje się na stronie Visa Checkout Developer Center.

Uwaga, aby zintegrować Visa Checkout, należy:
  • utworzyć dla sklepu konto w Visa Checkout Merchant Services,
  • zintegrować sie z PayU za pomocą REST API.

2 Lightbox

Aby umieścić lightbox na stronie sklepu, należy postępować wg instrukcji na stronie Visa Developer. Szczegóły znajdują się tutaj:

https://developer.visa.com/products/visa_checkout/guides#adding_visa_checkout

Dla dalszych interakcji z systemem PayU, kluczowym parametrem zwróconym przez lightbox jest callId.

Parametr ten należy przesłać do dostawcy usług płatniczych (tj. PayU). Dostawca na jego podstawie pobiera w bezpieczny sposób zaszyfrowane dane karty z Visa Checkout i używa ich do przeprowadzenia płatności.

3 Zamówienie

Aby obciążyć kartę zapisaną w Visa Checkout, należy w żądaniu OrderCreateRequest umieścić rozszerzony obiekt payMethods.

Obiekt payMethods.payMethod musi zawierać pole authorizationCode, którego wartość to parametr callId.

Opcjonalnie, w zależności od ustaleń z PayU i Visa, można również przesłać tablicę specificData.

obiekt payMethods dla płatności kartą zapisaną w Visa Checkout

{
  "payMethods": {
     "payMethod": {
         "type":"PBL",
         "value":"vc",
         //tutaj należy wstawić callId
         "authorizationCode":"7111023008968028002",
        }
     }
}
                

Dalsze przetwarzanie żądania podlega standardowemu procesowi opisanemu w dokumentacji REST API.

Ponieważ zamówienia z metodą płatności Visa Checkout będą rozliczane tak jak standardowe płatności kartą, warto rozważyć integrację usługi pobrania danych transakcji aby rozróżnić pomiędzy kartami wpisanymi poprzez formularz PayU, a kartami pobranymi z Visa Checkout.

rozszerzony obiekt payMethods z opcjonalnymi danymi

{
  "payMethods": {
     "payMethod": {
         "type":"PBL",
         "value":"vc",
         //tutaj należy wstawić callId
         "authorizationCode":"7111023008968028002",
         //dane opcjonalne
         "specificData": [
            {
             "name":"subtotal",
             "value":"1000.00"
            },{
             "name":"shippingHandling",
             "value":"100.00"
            },{
              "name":"discount",
              "value":"200.00"
            },{
              "name":"promoCode",
              "value":"promo code"
            },{
              "name":"reason",
              "value":"reason text"
            },{
              "name":"tax",
              "value":"2.00"
            },{
              "name":"giftWrap",
              "value":"2.00"
            },{
              "name":"misc",
              "value":"1.00"
              }
          ]
        }
     }
}
                

4 Dane o płatności

Po uzyskaniu callId z Visa Checkout lightbox, krokiem opcjonalnym jest pobranie danych o płatności od PayU.

Dane zostaną przez PayU zwrócone w postaci sumarycznej, tj. będą niezaszyfrowane i NIE BĘDĄ zawierać pełnego numeru karty, a jedynie jej ostatnie 6 cyfr. Dane mogą zostać użyte do celów informacyjnych lub dla uzyskania adresu wysyłku lub innych danych związanych z zakupem.

Aby uzyskać dane, należy wysłać żądanie metodą HTTP GET na adres /api/visa-checkout/proxy/payment/data/{callId}.

Żądanie należy uwierzytelnić tak jak pozostałe żądania w protokole REST API (zob. uwierzytelnienie użytkownika API).

System PayU odgrywa tu rolę pośrednika, a dane są zwrócone w dokładnie takiej samej postaci w jakiej przekaże je Visa Checkout. Aby dowiedzieć się więcej o dostępnych danych zob.: Get Payment Data API.