BLIK OneClick

1 BLIK OneClick

Na chwilę obecną konfiguracja dotyczy clientId = 202337. Można ją zmienić dodając w environment kolekcji zmienne clientId, clientSecret.

Poniżej scenariusze użycia:

Scenariusz 1. Płatność blik level 0 – transparentna płatność kodem T6
  1. OAuth authorize (pobrany access_token)
  2. BLIK OCR – code (utworzony order z płatnościa T6)
  3. Order Retrieve (sprawdzenie statusu ordera)
Scenariusz 2. Płatność blik level 0 z rejestracja tokenu – transparentna płatność kodem T6
  1. OAuth authorize (pobrany access_token)
  2. BLIK OCR – token register by payu (utworzony order z płatnoscia T6 + rejestracja tokenu)
  3. system payu automatycznie aktywuje token – brak potrzeby potwierdzania przez klienta (czas potwierdzania symulowany do 30 sekund)
  4. Order Retrieve (sprawdzenie statusu ordera)
  5. PayMethods Retrieve (pobranie instrumentów płatniczych – pojawia się token blikowy)

Scenariusz 3 można wykonać tylko, gdy wykonano scenariusz 2.

Scenariusz 3. Płatność blik oneclick (transparetna płatność tokenem)

  1. BLIK OCR - pay with token (płatność samym tokenem)
  2. Order Retrieve (sprawdzenie statusu ordera)
  3. PayMethods Retrieve (pobranie instrumentów płatniczych – pojawia się token blikowy)

Scenariusz obsługi niejednoznaczności.

  1. OAuth authorize - pobieranie access token
  2. PayMethods Retrieve pobieranie listy metod płatności; brak tokenu/aliasu dla danego klienta
  3. . BLIK OCR - register nonunique token - rejestracja aliasu niejednoznacznego
  4. PayMethods Retrieve pobieranie listy metod płatności; w odpowiedzi pojawia się alias token
  5. BLIK OCR - pay with token - płatność tokenem niejednoznacznym
  6. BLIK OCR - pay with nonunique token - tworzenie nowego ordera razem z wprowadzoną alternatywą

Kolekcja scenariuszy w Postman do testowania:

Kolekcja scenariuszy w Postman

2 Przykłady wykonania scenariuszy

2.1 Płatność blik level 0

Pobranie tokena OAuth'owego:

                curl -X POST https://merch-prod.snd.payu.com/pl/standard/oauth/authorize \
                 -d 'grant_type=trusted_merchant&client_id=202337&client_secret=242cca54b1dd99cc0ba993b659bece0f&email=testaccount1+6d1f6e89-67e9-4cbc-a4b4-6f70699e3e9f@devil.prod.payudc.ne&ext_customer_id=blik-user-6d1f6e89-67e9-4cbc-a4b4-6f70699e3e9f'
            

Wyjaśnienie niektórych parametrów

Parametr Opis
email Adres e-mail kupującego
ext_customer_id Identyfikator kupującego używany w systemie klienta

Przykład odpowiedzi:

                {
                    "access_token": "f24bbf9b-30f0-4460-864f-aaadc07d1e34",
                    "token_type": "bearer",
                    "refresh_token": "b7a4375a-d4fc-41a0-a380-a9dd8c2e9193",
                    "expires_in": 43199,
                    "grant_type": "trusted_merchant"
                }
            

Przykład zamówienia z tokenem OAuth'owym:

               curl -X POST https://merch-prod.snd.payu.com/api/v2_1/orders \
                -H "Authorization: Bearer f24bbf9b-30f0-4460-864f-aaadc07d1e34" \
                -H "Content-Type: application/json" \
                -d '{
                    "currencyCode": "PLN",
                    "totalAmount": "21000",
                    "description": "Transakcja testowa",
                    "notifyUrl": "https://your.eshop.com/notify",
                    "customerIp": "193.17.41.0",
                    "merchantPosId": "202337",
                    "products": [
                        {
                            "name": "Wireless Mouse for Laptop",
                            "unitPrice": "21000",
                            "quantity": "1"
                        }
                    ],
                    "payMethods": {
                        "payMethod": {
                            "type": "PBL",
                            "value": "blik",
                            "authorizationCode": "777123"
                        }
                    }
               }'
            
Przykładowa odpowiedź wykonanego zamówienia:
                {
                    "orderId": "LDTD3S2WWC181109GUEST000P01",
                    "status": {
                        "statusCode": "SUCCESS"
                    }
                }
            
W odpowiedzi zwracane jest orderId które jest identyfikatorem danego zamówienia. Jest ono używane przy żądaniu Order Retrieve.

2.2 Płatność blik level 0 z rejestracją tokenu

Przykład zamówienia:

                curl -X POST https://merch-prod.snd.payu.com/api/v2_1/orders \
                 -H "Authorization: Bearer f074f3c8-0dae-45ab-949f-6cb1cab87ec6" \
                 -H "Content-Type: application/json" \
                 -d '{
                     "currencyCode": "PLN",
                     "totalAmount": "21000",
                     "description": "Testowa transakcja",
                     "extOrderId": "blik_alias_register",
                     "notifyUrl": "https://your.eshop.com/notify",
                     "customerIp": "193.17.41.0",
                     "merchantPosId": "202337",
                     "buyer": {
                         "extCustomerId": "blik-user-6d1f6e89-67e9-4cbc-a4b4-6f70699e3e9f",
                         "email": "testaccount1+6d1f6e89-67e9-4cbc-a4b4-6f70699e3e9f@devil.prod.payudc.net"
                     },
                     "products": [
                         {
                             "name": "Wireless Mouse for Laptop",
                             "unitPrice": "21000",
                             "quantity": "1"
                         }
                     ],
                     "payMethods": {
                         "payMethod": {
                             "type": "BLIK_TOKEN",
                             "authorizationCode": "777123",
                             "blikData": {
                                 "register":true
                             }
                         }
                     }
                }'
            

Order Retrieve (pobranie danych zamówienia):

Przykład żądania Order Retrieve:
                curl -X GET https://merch-prod.snd.payu.com/api/v2_1/orders/{{orderId}} \
                 -H "Authorization: Bearer f074f3c8-0dae-45ab-949f-6cb1cab87ec6"
            

Do sprawdzenia statusu zamówienia potrzebny jest orderId otrzymywany w odpowiedzi do wykonanego orderu.

Przykład odpowiedzi:

                {
                "orders": [
                    {
                        "orderId": "BS45JXBDGC181113GUEST000P01",
                        "extOrderId": "blik_alias_register_70d20ebb-b60a-49d9-b076-440c919280e2",
                        "orderCreateDate": "2018-11-13T10:23:07.584+01:00",
                        "notifyUrl": "http://test.merch.notifyUrl",
                        "customerIp": "193.17.41.0",
                        "merchantPosId": "202337",
                        "description": "Transakcja testowa",
                        "currencyCode": "PLN",
                        "totalAmount": "21000",
                        "buyer": {
                            "customerId": "guest",
                            "email": "testaccount1+b1e3d4db-ffda-4c24-bdc3-b05be7ee946e@devil.prod.payudc.net",
                            "extCustomerId": "blik-user-b1e3d4db-ffda-4c24-bdc3-b05be7ee946e"
                        },
                        "payMethod": {
                            "type": "PBL"
                        },
                        "status": "COMPLETED",
                        "products": [
                            {
                                "name": "Wireless Mouse for Laptop",
                                "quantity": "1"
                            }
                        ]
                    }
                ],
                "status": {
                    "statusCode": "SUCCESS",
                    "statusDesc": "Request processing successful"
                },
                "properties": [
                    {
                        "name": "PAYMENT_ID",
                        "value": "73735080"
                    }
                ]
            }
Więcej informacji na temat parametrów komunikatu można znaleźć w rozdziale Parametry komunikatów JSON w sekcjach OrderRetrieveRequest i OrderRetrieveResponse

PayMethods Retrieve (pobranie metod płatności)

Poniższe żądanie pobiera instrumenty płatnicze - pojawia się token blikowy:
                curl -X GET https://merch-prod.snd.payu.com/api/v2_1/paymethods \
                 -H "Authorization: Bearer f074f3c8-0dae-45ab-949f-6cb1cab87ec6"
            
Przykład odpowiedzi:
                {
                    "payByLinks": [
                        {
                            "value": "blik",
                            "brandImageUrl": "https://static.payu.com/images/mobile/logos/pbl_blik.png",
                            "name": "BLIK",
                            "status": "ENABLED",
                            "minAmount": 100,
                            "maxAmount": 99999999
                        },
                        {
                            "value": "p",
                            "brandImageUrl": "https://static.payu.com/images/mobile/logos/pbl_p.png",
                            "name": "Płacę z iPKO",
                            "status": "ENABLED",
                            "minAmount": 50,
                            "maxAmount": 99999999
                        },
                        {
                            "value": "m",
                            "brandImageUrl": "https://static.payu.com/images/mobile/logos/pbl_m.png",
                            "name": "mTransfer",
                            "status": "ENABLED",
                            "minAmount": 50,
                            "maxAmount": 99999999
                        },
                    ],
                    "status": {
                        "statusCode": "SUCCESS"
                    }
                }
            

Wyjaśnienie niektórych parametrów

Parametr Opis
value Oznaczenie typu płatności. Dostępne można sprawdzić pod tym adresem.
brandImageUrl Odnośnik do pliku graficznego na serwerze PayU reprezentującego typ płatności.
name Nazwa (opis) typu płatności.
status Możliwe wartości: 'ENABLED', 'DISABLED', 'TEMPORARY_DISABLED'.

2.3 Transparentna płatność tokenem

Przykład transparentnej płatności tokenem:

                curl -X POST https://merch-prod.snd.payu.com/api/v2_1/orders \
                 -H "Authorization: Bearer f074f3c8-0dae-45ab-949f-6cb1cab87ec6" \
                 -H "Content-Type: application/json" \
                 -d '{
                     "currencyCode": "PLN",
                     "totalAmount": "21000",
                     "description": "Transakcja testowa",
                     "extOrderId": "blik_alias_pay",
                     "notifyUrl": "https://your.eshop.com/notify",
                     "customerIp": "193.17.41.0",
                     "merchantPosId": "202337",
                     "buyer": {
                         "extCustomerId": "blik-user-6d1f6e89-67e9-4cbc-a4b4-6f70699e3e9f",
                         "email": "testaccount1+6d1f6e89-67e9-4cbc-a4b4-6f70699e3e9f@devil.prod.payudc.net"
                     },
                     "products": [
                         {
                             "name": "Wireless Mouse for Laptop",
                             "unitPrice": "21000",
                             "quantity": "1"
                         }
                     ],
                     "payMethods": {
                         "payMethod": {
                             "type": "BLIK_TOKEN",
                             "value": "{{blik_alias_value}}"
                         }
                     }
                }
            

2.4 Scenariusz obsługi niejednoznaczności

BLIK OCR - rejestracja aliasu niejednoznacznego

               curl -X POST https://merch-prod.snd.payu.com/api/v2_1/orders \
                -H "Authorization: Bearer f074f3c8-0dae-45ab-949f-6cb1cab87ec6" \
                -H "Content-Type: application/json" \
                -d '{
                    "currencyCode": "PLN",
                    "totalAmount": 21000,
                    "description": "Transakcja testowa",
                    "extOrderId": "blik_alias_register",
                    "notifyUrl": "https://your.eshop.com/notify",
                    "customerIp": "193.17.41.0",
                    "merchantPosId": "202337",
                    "buyer": {
                        "extCustomerId": "blik-user-b1e3d4db-ffda-4c24-bdc3-b05be7ee946e",
                        "email": "testaccount1+b1e3d4db-ffda-4c24-bdc3-b05be7ee946e@devil.prod.payudc.net"
                    },
                    "products": [
                        {
                            "name": "Wireless Mouse for Laptop",
                            "unitPrice": "21000",
                            "quantity": "1"
                        }
                    ],
                    "payMethods": {
                        "payMethod": {
                            "type": "BLIK_TOKEN",
                            "authorizationCode": "777123",
                            "blikData": {
                                "register":true
                            }
                        }
                    }
                }
            

BLIK OCR - pay with token - płatność tokenem niejednoznacznym

               curl -X POST https://merch-prod.snd.payu.com/api/v2_1/orders \
                -H "Authorization: Bearer f074f3c8-0dae-45ab-949f-6cb1cab87ec6" \
                -H "Content-Type: application/json" \
                -d '{
                    "currencyCode": "PLN",
                    "totalAmount": "21000",
                    "description": "Transakcja testowa",
                    "extOrderId": "blik_alias_pay",
                    "notifyUrl": "https://your.eshop.com/notify",
                    "customerIp": "193.17.41.0",
                    "merchantPosId": "202337",
                    "buyer": {
                        "extCustomerId": "blik-user-b1e3d4db-ffda-4c24-bdc3-b05be7ee946e",
                        "email": "testaccount1+b1e3d4db-ffda-4c24-bdc3-b05be7ee946e@devil.prod.payudc.net"
                    },
                    "products": [
                        {
                            "name": "Wireless Mouse for Laptop",
                            "unitPrice": "21000",
                            "quantity": "1"
                        }
                    ],
                    "payMethods": {
                        "payMethod": {
                            "type": "BLIK_TOKEN",
                            "value": "{{blik_alias_value}}",
                            "blikData": {
                                "appKey":"{{blik_alias_appKey}}"
                            }
                        }
                    }
                }
            

BLIK OCR - pay with nonunique token

               curl -X POST https://merch-prod.snd.payu.com/api/v2_1/orders \
                -H "Authorization: Bearer f074f3c8-0dae-45ab-949f-6cb1cab87ec6" \
                -H "Content-Type: application/json" \
                -d '{
                    "currencyCode": "PLN",
                    "totalAmount": 21000,
                    "description": "Transakcja testowa",
                    "extOrderId": "blik_alias_register",
                    "notifyUrl": "https://your.eshop.com/notify",
                    "customerIp": "193.17.41.0",
                    "merchantPosId": "202337",
                    "buyer": {
                        "extCustomerId": "blik-user-b1e3d4db-ffda-4c24-bdc3-b05be7ee946e",
                        "email": "testaccount1+b1e3d4db-ffda-4c24-bdc3-b05be7ee946e@devil.prod.payudc.net"
                    },
                    "products": [
                        {
                            "name": "Wireless Mouse for Laptop",
                            "unitPrice": "21000",
                            "quantity": "1"
                        }
                    ],
                    "payMethods": {
                        "payMethod": {
                            "type": "BLIK_TOKEN",
                            "value": "{{blik_alias_value}}",
                            "authorizationCode": "777123",
                            "blikData": {
                                "register":true
                            }
                        }
                    }
                }
            

3 Statusy błędów

Kody statusów błędów
HTTP status StatusCode/
CodeLiteral>
Description
400
ERROR_TOKEN/
AUTH_TOKEN_NONUNIQUE
Wykorzystany token płatniczy jest przypisany do kilku urządzeń/aplikacji bankowych. Wymagane jest podanie alternatywy dla wykorzystywanego tokenu płatniczego. W odpowiedzi pojawia się lista dostepnych alternatyw: OrderCreateResponse:
{
    "blikData":{
        "alternatives":[
            {
            "appKey":"alternative key",
            "appLabel":"alternative label"
            }
        ]
    }
}
400 ERROR_TOKEN/
AUTH_TOKEN_NOT_FOUND
Podany token płatniczy nie istnieje.
400 ERROR_TOKEN/
AUTH_TOKEN_EXISTS
Użytkownik posiada już token płatniczy o innej wartości. W przypadku w którym użytkownik posiada inny aktywny token, należy go poprabrac za pośrednictwem paymethods. W przypadku, w którym użytkownik posiada inny token, który nie został aktywowany w odpowiedzi pojawi się jego wartość:
{
    "blikData":{
        "tokens":[
            {
            "value":"token value",
            "type":"token type"
            }
        ]
    }
}
400 ERROR_TOKEN/
AUTH_TOKEN_NOT_ACTIVE
Użyty token płatniczy nie został zapisany przez użytkownika.
400 ERROR_AUTHORIZATION_CODE/
AUTH_CODE_LIMIT_EXCEEDED
Kod autoryzacyjny wygasł.
400 ERROR_AUTHORIZATION_CODE/
AUTH_CODE_CANCEL
Limit dla kodu autoryzacyjnego został przekroczony.
400 ERROR_AUTHORIZATION_CODE/
AUTH_CODE_USED
Kod autoryzacyjny został anulowany.
400 ERROR_AUTHORIZATION_CODE/>
AUTH_CODE_USED
Kod autoryzacyjny był już wykorzystany,
400 ERROR_AUTHORIZATION_CODE/
AUTH_CODE_INVALID
Niepoprawny kod autoryzacyjny.
201* WARNING_CONTINUE_TOKEN
201* WARNING_CONTINUE_​AUTHORIZATION_CODE
400 ERROR_VALUE_MISSING/
MISSING_AUTHORIZATION_CODE.
Błąd walidacji, kod autoryzacyjny wymagany.
400 ERROR_VALUE_MISSIN/
MISSING_REGISTER_FLAG
Błąd walidacji, flaga rejestracji tokeny wymagana.
400 ERROR_VALUE_MISSIN/
MISSING_AUTHORIZATION_​CODE_OR_TOKEN
Błąd walidacji, dane autoryzacyjne wymagane: kod autoryzacyjny lub token.
400 ERROR_VALUE_MISSIN/
INVALID_CURRENCY_CODE
Obsługiwana waluta: PLN.
400 ERROR_VALUE_MISSIN/
MISSING_BUYER
Błąd walidacji, brakuje sekcji buyer.
400 ERROR_VALUE_MISSIN/
MISSING_BUYER_EMAIL
Błąd walidacji, brakuje pola email w sekcji buyer.
400 ERROR_VALUE_MISSIN/
MISSING_BUYER_EXT_​CUSTOMER_ID
Błąd walidacji, brakuje pola extCustomerId w sekcji buyer.

*Do implementacji w momencie gdy PSP dostarczy zmianę po swojej stronie. Od początku merchant musi być przygotowany na przyjecie obu statusów odpowiedzi. W pierwszej fazie integracji merchant obsługuje statusy (ERROR_AUTH_TOKEN, WARNING_CONTINUE_AUTH_TOKEN) w ten sam sposób.