Płatności cykliczne

1 O produkcie

PayU ǀ Płatności cykliczne polegają na cyklicznym obciążaniu karty płatniczej. Wprowadzenie tej usługi pozwala na wyeliminowanie konieczności podawania numeru karty przy każdej płatności. To prosty sposób na zwiększenie liczby lojalnych konsumentów i zwiększenie zysków z eCommerce!

Usługa ta rekomendowana jest szczególnie firmom oferującym sprzedaż na podstawie abonamentów, subskrypcji, karnetów (kluby fitness, centra medyczne, media, firmy ubezpieczeniowe, serwisy oferujące prenumeraty itd).

Transparentna integracja

Usługa płatności cyklicznej opiera się na transparentnej integracji, tj. odbywa się bez przekierowania na formularz PayU. Pomimo tego taka integracja jest bezpieczna i minimalizuje obowiązki wynikające z PCI DSS. Ponadto daje więcej elastyczności i zwiększa konwersję (ilość udanych płatności), ponieważ płatność odbywa się na stronie sklepu.

Proces płatności odbywa się w dwóch krokach - najpierw należy uzyskać dane karty (poprzez Secure Form lub poprzez formularz), a następnie obciążyć kartę. Dane karty są zwracane z PayU w postaci tokena wraz maskowanym numerem karty oraz datą ważności - sklep nie otrzymuje i nie musi przetwarzać pełnego numeru karty.

Płatności cykliczne polegają na obciążaniu tokenów wielorazowych. Wszystkie transakcje poza pierwszą, która inicjuje cykl, nie są wywoływane przez płacącego, ale bezpośrednio przez aplikację sklepu. Dlatego takie transakcje nie wymagają dodatkowego uwierzytelnienia poprzez 3DS lub podanie kodu bezpieczeństwa (CVV2/CVC2). W celu obciążania karty zgodnie z harmongramem (cyklem, subskrypcją) na który płatnik wyraził zgodę, aplikacja sklepowa powinna posiadać stosowną funkcjonalność (ang. scheduler).

Konfiguracja w PayU

Płatność cykliczna wymaga specjalnej konfiguracji po stronie PayU. Dlatego przed przystąpieniem do integracji należy skontaktować się z opiekunem handlowym w PayU lub poprzez formularz kontakowy.

Na środowisku Sandbox punkty płatności typu REST API zostaną skonfigurowane automatycznie pod możliwość testowania tej funkcjonalności w ciągu 90 minut od utworzenia.

Wymogi i zalecenia dot. bezpieczeństwa

Zanim przystąpisz do integracji usługi, zapoznaj się z zaleceniami i wymogami przygotowanymi przez ekspertów ds. bezpieczeństwa w PayU. Ich przestrzeganie pomoże zminimalizować ryzyko związane z transakcjami oszukańczymi.

2 Integracja usługi

Płatności cykliczne opierają sie na tokenizacji danych karty.

Szczegółowy opis generowania, obciążania, pobierania i usuwania tokenów znajduje się na stronie tokenizacja kart.
Kroki:
  • (pierwsza płatność) tokenizacja karty, można wykorzystać widget PayU lub (najlepiej) Secure Form; uwierzytelnienie przez 3DS/CVV2 jest wymagane; PayU zwraca token jednorazowy;
  • (pierwsza płatność) należy wysłać komunikat OrderCreateRequest (zob. niżej) z typu MULTI,(metoda tokenize(type?)) w odpowiedzi system PayU przekazuje token wielorazowy;
  • (druga i kolejne płatności) należy wysłać komunikat OrderCreateRequest z tokenem wielorazowym, 3DS/CVV2 nie są wymagane.

Płatność z tokenem jednorazowym (pierwsza w cyklu):

Płatność z tokenem wielorazowym (druga i kolejne w cyklu):

2.1 Przechwytywanie danych uwierzytelniających karty

Należy pamiętać o wyświetleniu płatnikowi wszystkich niezbędnych informacji podanych w "Zbiorze wymagań oraz zaleceń dot. usługi płatności cyklicznych".
Do pobrania tokena kartowego użyj Secure Form.

2.2 Back-end

Back-end: integracja oparta na tokenizacji

Do standardowego zamówienia OrderCreateRequest należy dodać sekcję payMethods.payMethod i parametr recurring z jedną z poniższych wartości:
  • FIRST
  • STANDARD
Szczegółowy opis wartości parametru recurring możesz znaleźć w sekcji Parametry JSON.

Przykładowe żądania OrderCreateRequest dla płatności cyklicznych

Przykładowe żądanie OrderCreateRequest dla pierwszej płatności cyklicznej:

                curl -v -X POST https://secure.payu.com/api/v2_1/orders \
                -H "Content-Type: application/json" \
                -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \
                -d '{
                    "notifyUrl":"https://your.eshop.com/notify",
                    "customerIp":"127.0.0.1",
                    "merchantPosId":"145227",
                    "recurring": "FIRST",
                    "description":"Laptop",
                    "currencyCode":"PLN",
                    "totalAmount":"15000",
                    "extOrderId":"n7kln2ipw5q1neabmjabc123",
                    "products":[
                        {
                            "name":"Laptop",
                            "unitPrice":"15000",
                            "quantity":"1"
                        }
                    ],
                    "buyer": {
                        "email": "john.doe@example.com",
                        "firstName": "John",
                        "lastName": "Doe",
                        "language": "en"
                    },                         
                    "payMethods": {
                        "payMethod": {
                            "value": "TOK_1JQMSW8MILUV69k0TVFZV593Riw2",
                            "type": "CARD_TOKEN"
                        }
                    }
                }'
            

Przykładowe żądanie OrderCreateRequest dla drugiej i kolejnych płatności cyklicznych:

                    curl -v -X POST https://secure.payu.com/api/v2_1/orders \
                    -H "Content-Type: application/json" \
                    -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \
                    -d '{
                          "notifyUrl":"https://your.eshop.com/notify",
                          "customerIp":"127.0.0.1",
                          "merchantPosId":"145227",
                          "recurring": "STANDARD",
                          "description":"Laptop",
                          "currencyCode":"PLN",
                          "totalAmount":"15000",
                          "extOrderId":"[generateExtOrderId]",
                          "products":[
                             {
                                "name":"Laptop",
                                "unitPrice":"15000",
                                "quantity":"1"
                             }
                          ],
                          "buyer": {
                              "email": "john.doe@example.com",
                              "firstName": "John",
                              "lastName": "Doe",
                              "language": "en"
                          },                          
                          "payMethods": {
                              "payMethod": {
                                   "value": "TOKC_1IHRPT6HKSSS3H62K0GS8pElP862",
                                   "type": "CARD_TOKEN"
                              }
                          }
                      }'
                

Sposób uwierzytelnienia jest opisany tutaj.

POS użyty w przykładzie powyżej nie jest skonfigurowany do tokenizacji kart.

Odpowiedzi dla żądania OrderCreateRequest:

Przykład odpowiedzi z kodem SUCCESS dla pierwszej płatności w cyklu. W odpowiedzi podany jest token wielorazowy:
{
     "orderId": "ORDER_ID",
     "payMethods": {
         "payMethod": {
              "card": {
                   "number": "424242******4242",
                   "expirationMonth": "12",
                   "expirationYear": "2017"
               },
               "type": "CARD_TOKEN",
               "value": "TOKC_KPNZVSLJUNR4DHF5NPVKDPJGMX7"
           }
       },
       "status": {
           "statusCode": "SUCCESS",
           "statusDesc": "Request successful"
       }
}
                
Przykład odpowiedzi z kodem WARNING_CONTINUE_3DS (pierwsza płatność):
{
     "orderId": "ORDER_ID",
     "status": {
         "statusCode": "WARNING_CONTINUE_3DS",
         "severity": "WARNING"
     },
     "redirectUri": "{redirectUri}"
}
                
Przykład odpowiedzi z kodem WARNING_CONTINUE_CVV (pierwsza płatność):
{
     "orderId": "ORDER_ID",
     "status": {
         "statusCode": "WARNING_CONTINUE_CVV",
         "severity": "WARNING"
     },
     "redirectUri": "{redirectUri}"
}
                

System PayU powiadamia sklep o statusie zamówienia poprzez wysłanie notyfikacji na adres podany w parametrze notifyUrl w komunikacie OrderCreateRequest. Więcej informacji o notyfikacjach znajduje się tutaj.

Back-end: integracja oparta na czystych danych kartowych

Jeżeli chcesz uzyskać informacje na temat tworzenia zamówienia z czystymi danymi kartowymi to opis znajduje się tutaj.