{"openapi":"3.1.0","info":{"title":"Dokumentacja techniczna integracji z systemem transakcyjnym Axepta.","version":"1.0.2","release":"#1.0.1\nDodanie API Raportowego - Rozdziała 10.\n#1.0.2\nDodanie kanału płatności click2pay dla kart.\nDodanie funkcjonalności z blickCode. - Rozdział 1.4.3.\nDodanie opisu sandbox dla BLIK.  - Rozdział 11.2.\n#1.0.3\nDodanie kanału płatności bnpparibascorpo dla pbl\nDodanie kolekcji postman\n","description":"# Dokumentacja zawiera informacje na temat RESTful API systemu płatności Axepta.\n\u003cbr\u003e\nKomunikacja odbywa się poprzez wymianę informacji zapisanych w formacie JSON. \n\u003cbr\u003e\nKażde zapytanie powinno zawierać odpowiednią metodę autoryzacji.\n\u003cbr\u003e\nKażdy poprawny adres składa się z trzech części:\n  - adresu bazowego zapytania `https://api.axepta.pl/v1`,\n  - identyfikatora klienta `/merchant/{merchantId}`,\n  - funkcji jednoznacznie określającej zakres danych, których dotyczy zapytanie ( np. `/transaction` lub `/payment`). \n\nKażde zapytanie do serwera powinno zawierać dane autoryzacyjne w nagłówkach (**Token autoryzacyjny**).\n\u003e Dane do integracji dostępne są w [panelu administracyjnym Axepta](https://axepta.bnpparibas.pl/)\n","contact":{"name":"Wsparcie techniczne","email":"wsparcie@axepta.pl"}},"x-externalLinks":[{"label":"Axepta.pl","url":"https://axepta.pl/"}],"servers":[{"url":"https://api.axepta.pl/v1","description":"Serwer produkcyjny."},{"url":"https://api.sandbox.axepta.pl/v1","description":"Sandbox - serwer testowy."}],"security":[{"Token autoryzacyjny":[]}],"tags":[{"name":"transaction","description":"Działania na transakcjach\n"},{"name":"payment-link","description":"Działania na linkach płatności\n"},{"name":"refund","description":"Działania związane z wykonaniem zwrotu\n"},{"name":"profile","description":"Zarządzanie istniejącym profilem\n"},{"name":"paymentId","description":"Działania na linkach płatności\n"},{"name":"report","description":"Działania na raportach.\n"}],"components":{"securitySchemes":{"Token autoryzacyjny":{"type":"http","scheme":"bearer","bearerFormat":"http"}},"schemas":{"payment-link":{"type":"object","required":["serviceId","amount","currency","orderId","customer"],"properties":{"serviceId":{"type":"string","example":"000eec9b-7248-4dae-98f2-56aab6a53927","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Identyfikator sklepu jako `UUID v4`\n"},"amount":{"type":"integer","description":"Kwota transakcji w najmniejszej jednostce waluty np. **grosze**\n"},"currency":{"type":"string","maxLength":3,"enum":["PLN","EUR"],"description":"Waluta transakcji w standardzie `ISO 4217`\n"},"orderId":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9#_\\-\\.\\/ \\u00C0-\\u02C0]+$","description":"Numer zamówienia akceptanta,\n**dopuszczalne znaki**: A-Za-z0-9#_-.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)\n"},"title":{"type":"string","maxLength":255,"pattern":"^[A-Za-z0-9#_\\-\\.\\/ \\u00C0-\\u02C0]+$","description":"Tytuł zamówienia, dopuszczalne znaki: A-Za-z0-9#\u0026_-\"',./ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne).\n"},"customer":{"type":"object","required":["firstName","lastName","email"],"properties":{"firstName":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9#_\\-\\.\\/ \\u00C0-\\u02C0\\u0400-\\u04FF]+$","description":"Imię klienta,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), 0400 - 04FF (cyrylica)\n"},"lastName":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9#_\\-\\,\\.\\\\\\\\/ \\u00C0-\\u02C0\\u0400-\\u04FF\"']+$","description":"Nazwisko klienta,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), 0400 - 04FF (cyrylica)\n"},"email":{"type":"string","maxLength":200,"format":"email","description":"Adres e-mail w formacie zgodnym ze standardem `RFC 5322` oraz `RFC 6531`\n"},"phone":{"type":"string","maxLength":20,"pattern":"^[0-9\\+\\- ]+$","description":"Numer telefonu,\u003cbr\u003e **dopuszczalne znaki**: 0-9+- oraz znak spacji (0x20)\n"},"cid":{"type":"string","maxLength":36,"pattern":"^[A-Za-z0-9\\x2D]+$","description":"Identyfikator klienta. (Wymagane podczas płatności `oneclick`, `recurring`), \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9 oraz myślnik (0x2D)\n"}}},"returnUrl":{"type":"string","maxLength":300,"format":"uri","description":"Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku nie rozstrzygnięcia statusu transakcji\n"},"successReturnUrl":{"type":"string","maxLength":300,"format":"uri","description":"Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku dokonania płatności z powodzeniem\n"},"failureReturnUrl":{"type":"string","maxLength":300,"format":"uri","description":"Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku wystąpienia błędu płatności\n"},"visibleMethod":{"type":"array","description":"Widoczność metod płatności, domyślnie widoczne są wszystkie dostępne dla sklepu. [Opis w punkcie 5.3 Widoczność metod płatności](https://bump.sh/pgw/doc/axepta-api/topic/topic-5-3-widocznosc-metod-platnosci)\n"},"paywall.forceCardChannel":{"type":"string","description":"Wymuszenie trybu płatności kartą. Pozwala na inicjalizację płatności kartą w trybie zapisywania profilu kartowego.\nDostępne wartości: ecom3ds, oneclick, recurring. W przypadku korzystania z oneclick lub recurring. wymagane jest przekazanie parametru customer.cid.\n"},"activeTo":{"type":"integer, null","description":"Data ważności transakcji jako unix timestamp w sekundach (czas mierzony w sekundach od początku 1970 roku UTC) (wartość musi być większa, bądz równa: 1 i mniejsza bądź równa 4294967295). Jeżeli nie jest przekazana lub jest null to transakcja ważna jest zawsze. Brak realizacji płatności do tego czasu spowoduje jej anulowanie.\n"},"distributor":{"type":"string","description":"Nazwa dystybutora, wartość dopuszczalna: \"shoper\".\n"},"surcharge":{"type":"boolean","description":"Flaga determinujaca czy zostanie użyte obciazenie platnika dla danego zamowienia. Wartość dopuszczalna: 'true', 'false' (wymagane ustawienie flagi surcharge w procesie boardingu).\n"}}},"deactivate-profile":{"type":"object","required":["paymentProfileId"],"properties":{"paymentId":{"type":"string","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Identyfikator profilu jako `UUID v4`\n"}}},"transactionId":{"type":"object","required":["paymentId"],"properties":{"paymentId":{"type":"string","example":"805f9c2c-e7ee-4606-b201-ee09032c49b0","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Unikalny identyfikator transakcji (UUID v4)\n"}}},"cancel":{"type":"object","required":["serviceId","paymentId"],"properties":{"serviceId":{"type":"string","example":"000eec9b-7248-4dae-98f2-56aab6a53927","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Identyfikator sklepu jako `UUID v4`\n"},"paymentId":{"type":"string","example":"805f9c2c-e7ee-4606-b201-ee09032c49b0","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Identyfikator linku płatności\n"}}},"refund":{"type":"object","required":["type","serviceId","amount"],"properties":{"type":{"type":"string","enum":["refund"],"description":"Typ akcji\n"},"serviceId":{"type":"string","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Identyfikator sklepu jako `UUID v4`\n"},"amount":{"type":"integer","description":"Kwota transakcji w najmniejszej jednostce waluty np. **grosze**\n"}}},"transaction":{"type":"object","required":["type","serviceId","clientIp","amount","currency","orderId","paymentMethod","paymentMethodChannel","customer","successReturnUrl","failureReturnUrl"],"properties":{"type":{"type":"string","enum":["sale"],"example":"sale","description":"Typ transakcji. Dopuszczalne wartości: sale\n"},"serviceId":{"type":"string","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Identyfikator sklepu jako `UUID v4`\n"},"amount":{"type":"integer","description":"Kwota transakcji w najmniejszej jednostce waluty np. **grosze**\n"},"currency":{"type":"string","maxLength":3,"enum":["PLN","EUR"],"description":"Waluta transakcji w standardzie `ISO 4217`\n"},"orderId":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9#_\\-\\.\\/ \\u00C0-\\u02C0]+$","description":"Numer zamówienia akceptanta, dopuszczalne znaki: A-Za-z0-9#_-./ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)        \n"},"title":{"type":"string","maxLength":255,"pattern":"^[A-Za-z0-9#_\\-\\.\\/ \\u00C0-\\u02C0]+$","description":"Tytuł transakcji, dopuszczalne znaki: A-Za-z0-9#\u0026_-\"',./ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)\n"},"paymentMethod":{"type":"string","description":"Metoda realizacji zamówienia. Więcej informacji w rozdziale [1.4 Metody i kanały realizacji transakcji]\n"},"paymentMethodChannel":{"type":"string","description":"Oznaczenie kanału płatności. Więcej informacji w rozdziale [1.4 Metody i kanały realizacji transakcji]\n"},"successReturnUrl":{"type":"string","maxLength":300,"format":"uri","description":"Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku dokonania płatności z powodzeniem\n"},"failureReturnUrl":{"type":"string","maxLength":300,"format":"uri","description":"Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku wystąpienia błędu płatności\n"},"returnUrl":{"type":"string","maxLength":300,"format":"uri","description":"Domyślny adres powrotu.\n"},"clientIp":{"type":"string","format":"ipv4, ipv6","description":"Rzeczywisty adres IP płatnika podany w protokole `IPv4` lub `IPv6`. Wymagany przy podaniu [blikCode](#operation-post-parameter-transaction-body-application-json-blikCode).\n"},"activeTo":{"type":"integer, null","description":"Data ważności transakcji jako unix timestamp w sekundach (czas mierzony w sekundach od początku 1970 roku UTC) (wartość musi być większa, bądz równa: 1 i mniejsza bądź równa 4294967295). Jeżeli nie jest przekazana lub jest null to transakcja ważna jest zawsze. Brak realizacji płatności do tego czasu spowoduje jej anulowanie.\n"},"blikCode":{"type":"integer","maxLength":6,"description":"Wartość kodu blik dla transakcji z przekazaniem kodu po API.\n"},"distributor":{"type":"string","description":"Nazwa dystybutora, wartość dopuszczalna: \"shoper\".\n"},"customer":{"type":"object","required":["firstName","lastName","email"],"properties":{"firstName":{"type":"string","maxLength":100,"description":"Imię klienta,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), 0400 - 04FF (cyrylica)\n"},"lastName":{"type":"string","maxLength":100,"description":"Nazwisko klienta,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), 0400 - 04FF (cyrylica)\n"},"email":{"type":"string","maxLength":200,"format":"email","description":"Adres e-mail w formacie zgodnym ze standardem `RFC 5322` oraz `RFC 6531`\n"},"phone":{"type":"string","maxLength":20,"pattern":"^[0-9\\+\\- ]+$","description":"Numer telefonu,\u003cbr\u003e **dopuszczalne znaki**: 0-9+- oraz znak spacji (0x20)\n"},"cid":{"type":"string","maxLength":36,"pattern":"^[A-Za-z0-9\\x2D]+$","description":"Identyfikator klienta/płatnika nadany przez akceptanta, dopuszczalne znaki: A-Za-z0-9 oraz myślnik (0x2D)\n"},"locale":{"type":"string","description":"Lokalizacja płatnika, określa język wysyłanej wiadomości mailowej, informującej o rozpoczęciu procesu płatności, dopuszczalne wartości: pl, en.\n"}}},"card":{"type":"object","required":["firstName","lastName","number","month","year","cvv"],"description":"Dane dot. płatności kartą. (Wymagane podczas płatności card)   \n","properties":{"firstName":{"type":"string","maxLength":100,"description":"Imię właściciela karty, dopuszczalne znaki: A-Za-z0-9#\u0026_-\"',./ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)            \n"},"lastName":{"type":"string","maxLength":100,"description":"Nazwisko właściciela karty, dopuszczalne znaki: A-Za-z0-9#\u0026_-\"',./ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)\n"},"number":{"type":"string","maxLength":16,"description":"Numer karty"},"month":{"type":"string","maxLength":2,"description":"Ważność karty - miesiąc"},"year":{"type":"string","maxLength":4,"description":"Ważność karty - rok"},"cvv":{"type":"string","maxLength":4,"description":"Kod cvv karty"}}},"additionalData":{"type":"object","description":"Informacje o przeglądarce płatnika, wymagane podczas wykonywania płatności kartą z autoryzacją 3ds.\n"}}},"report":{"type":"object","required":["uuid","taskName","type","status","settings"],"properties":{"uuid":{"type":"string","description":"UUID raportu\n"},"plannedReportUuid":{"type":"string","description":"UUID zaplanowanego raportu (jeśli raport został wygenerowany z zaplanowanego raportu). Będzie `null` dla raportów jednorazowych.\n"},"taskName":{"type":"string","description":"Typ zadania raportu\n"},"type":{"type":"string","description":"Typ raportu\n"},"status":{"type":"string","description":"Status raportu\n"},"settings":{"type":"object","description":"Ustawienia raportu\n"},"generatedAt":{"type":"number","description":"Timestamp wygenerowania raportu\n"}}}}},"paths":{"/merchant/{merchantId}/transaction":{"post":{"tags":["transaction"],"summary":"Utworzenie transakcji","description":"Zgodnie z wymaganiami PCI DSS (ustalonymi przez organizacje płatnicze) zabronione jest przetwarzanie, przekazywanie czy przechowywanie numerów i innych danych dotyczących kart płatniczych. Jeśli posiadasz właściwy certyfikat PCI DSS i chcesz udostępnić formatkę płatności kartami na stronie Twojego sklepu - prosimy o kontakt z obsługą Axepta.\nW przypadku bezpośredniego przekierowania na formatkę płatności kartami Axepta nie ma takiego wymogu.\n","parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/transaction"},"example":{"type":"sale","serviceId":"a3a5b7ad-ab73-46f0-97f2-3238f8bd450d","amount":100,"currency":"PLN","title":"Title 123","orderId":"123-123","paymentMethod":"blik","paymentMethodChannel":"blik","blickCode":777000,"successReturnUrl":"https://domain.com/success","failureReturnUrl":"https://domain.com/failure","customer":{"firstName":"Jan","lastName":"Kowalski","phone":48123123123,"email":"jan.kowalski@example.com"}}}}}}},"/merchant/{merchantId}/transaction/{transactionId}":{"get":{"tags":["transaction"],"summary":"Pobiera dane transakcji","description":"Pobiera dane transakcji\n","parameters":[{"in":"path","name":"merchantId","required":true,"schema":{"type":"string"},"description":"Identyfikator klienta","example":"000eec9b-7248-4dae-98f2-56aab6a53927"},{"in":"path","name":"transactionId","schema":{"type":"string","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"description":"Unikalny identyfikator transakcji (UUID v4),","required":true,"example":"805f9c2c-e7ee-4606-b201-ee09032c49b0"}]}},"/merchant/{merchantId}/profile/cid/{cid}":{"get":{"tags":["profile"],"summary":"Pobranie profilu o podanym cid","parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true},{"in":"path","name":"cid","required":true,"schema":{"type":"string","maxLength":36,"pattern":"^[A-Za-z0-9\\x2D]+$"},"description":"Identyfikator płatnika nadany przez akceptanta."}]}},"/merchant/{merchantId}/profile/id/{paymentProfileId}":{"parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true},{"in":"path","name":"paymentProfileId","required":true,"schema":{"type":"string","maxLength":36,"pattern":"^[A-Za-z0-9\\x2D]+$"},"description":"Identyfikator profilu kartowego,"}],"get":{"tags":["profile"],"summary":"Pobranie profilu kartowego o podanym id"},"delete":{"tags":["profile"],"summary":"Dezaktywowanie profilu kartowego o podanym id.","description":"Dezaktywowanie profilu OneClick lub recurring o podanym paymentProfileId."}},"/merchant/{merchantId}/profile/deactivate":{"post":{"tags":["profile"],"summary":"Dezaktywuje profil o podanym w żądaniu identyfikatorze","parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/deactivate-profile"},"example":{"paymentProfileId":"000eec9b-7248-4dae-98f2-56aab6a53927"}}}}}},"/merchant/{merchantId}/payment-link":{"post":{"tags":["payment-link"],"summary":"Utworzenie zamówienia linku płatności","description":"","parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true,"example":"3hqitucfo8jh5kqlp7s6"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment-link"},"example":{"serviceId":"a3a5b7ad-ab73-46f0-97f2-3238f8bd450d","amount":3000,"currency":"PLN","orderId":123,"returnUrl":"https://domain.com/return","successReturnUrl":"https://domain.com/success","failureReturnUrl":"https://domain.com/failure","notificationUrl":"https://domain.com/notification","customer":{"firstName":"Jan","lastName":"Kowalski","email":"jan.kowalski@example.com"}}}}}}},"/merchant/{merchantId}/payment/{paymentId}":{"get":{"tags":["payment-link"],"summary":"Pobiera dane płatności","parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true},{"in":"path","name":"paymentId","schema":{"type":"string"},"description":"Unikalny identyfikator płatności której dotyczy zwrot.","required":true}]}},"/merchant/{merchantId}/payment/{paymentId}/refund":{"post":{"tags":["refund"],"summary":"Wykonanie zwrotu płatności","parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true},{"in":"path","name":"paymentId","required":true,"schema":{"type":"string","maxLength":36,"format":"uuid","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","description":"Identyfikator transakcji jako `UUID v4`\n"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/refund"},"example":{"type":"refund","serviceId":"000eec9b-7248-4dae-98f2-56aab6a53927","amount":100}}}}}},"/merchant/{merchantId}/payment/cancel":{"post":{"tags":["payment-link"],"summary":"Anuluje link płatności","parameters":[{"in":"path","name":"merchantId","schema":{"type":"string"},"description":"Identyfikator klienta","required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cancel"},"example":{"type":"cancel","serviceId":"000eec9b-7248-4dae-98f2-56aab6a53927","paymentId":"805f9c2c-e7ee-4606-b201-ee09032c49b0"}}}}}}},"x-topics":[{"title":"1.1. Statusy transakcji (transaction).","content":"Transakcje oraz linki płatności mogą przyjmować następujące statusy:\n\n| Status       | Opis                                               |\n|--------------|----------------------------------------------------|\n| `new`        | Nowa, nieobsłużona transakcja                      |\n| `pending`    | Oczekiwanie na status                              |\n| `rejected`   | Transakcja odrzucona                               |\n| `settled`    | Transakcja zrealizowana                            |\n| `error`      | Błąd w transakcji                                  |\n| `cancelled`  | Transakcja anulowana                               |\n"},{"title":"1.2. Statusy zamówień linków płatności - (payment).","content":"# Statusy zamówień linków płatności - (payment).\nZamówienia mogą przyjmować następujące statusy:\n\n| Status       | Opis                                               |\n|--------------|----------------------------------------------------|\n| `new`        | Nowe, nieobsłużone zamówienie                      |\n| `pending`    | Oczekiwanie na status                              |\n| `rejected`   | Zamówienie odrzucone                               |\n| `settled`    | Zamówienie zrealizowane                            |\n| `error`      | Błąd zamówienia                                    |\n| `cancelled`  | Zamówienie anulowane                               |\n"},{"title":"1.3. Metody autoryzacji.","content":"Nagłówki zapytania (metody autoryzacji)\nIntegracja pozwala na autoryzację za pomocą tokenu autoryzacyjnego. \nToken można znaleźć w [panelu administracyjnym Axepta](https://axepta.bnpparibas.pl/), w części `Ustawienia` a następnie w zakładce `Klucze API`.\nAby dokonać autoryzacji zapytania należy w nagłówkach żądania do serwera umieścić dane autoryzacyjne:\n\n```\nAccept: application/json\nContent-Type: application/json\nAuthorization: Bearer {token}\n```\n\nKody odpowiedzi HTTP:\n\n| Kod HTTP | Znaczenie                                                             |\n|----------|-----------------------------------------------------------------------|\n| `200`    | Autoryzacja poprawna                                                  |\n| `401`    | Nieautoryzowany dostęp, żądanie zasobu, który wymaga uwierzytelnienia |\n| `500`    | Błąd serwera                                                          |\n\n\u003ePrzykładowy nagłówek zapytania\n```\nAccept: application/json\nContent-Type: application/json\nAuthorization: Bearer ad8y3hdoashco8fh49fhiahfb237f8hoihsd0f2hfikljf023h8\n```\n"},{"title":"1.4. Metody i kanały realizacji transakcji","content":"Transakcje można realizować następującymi metodami:\n\n| Nazwa            | Wartość parametru `paymentMethod` | Wartość parametru `paymentMethodChannel`|\n|------------------|-----------------------------------|-----------------------|\n| Przelewy online. | `pbl`                             | Tabela poniżej        |\n| Płatność kart.   | `card`                            | Tabela poniżej        |\n| Płatność BLIK.   | `blik`                            | `blik`                |\n"},{"title":"1.4.1. Przelew online Pay By Link","content":"Przelewy Pay By Link można realizować za pomocą następujących usług banków:\n\n| Wartość parametru   | Nazwa usługi                                                 |\n|---------------------|--------------------------------------------------------------|\n| `bnpparibas`        | Płacę z BNP Paribas (GOonline)                               |\n| `bnpparibascorpo`   | Płacę z BNP Paribas (GOonline Biznes)                        |\n| `mtransfer`         | mTransfer - mBank                                            |\n| `bzwbk`             | Przelew24 - Erste                                                   |\n| `pekao24`           | Pekao24Przelew - Bank Pekao                                  |\n| `inteligo`          | Płacę z Inteligo                                             |\n| `ing`               | Płać z ING                                                   |\n| `ipko`              | Płać z iPKO                                                  |\n| `getin`             | Płacę z Velo Bank                                            |\n| `creditagricole`    | Credit Agricole e-przelew                                    |\n| `alior`             | Płacę z Alior Bankiem                                        |\n| `pbs`               | Bank Nowy BFG                                                |\n| `millennium`        | Millennium - płatności internetowe                           |\n| `citi`              | Przelew z Citi Handlowego                                    |\n| `bos`               | Płać z BOŚ                                                   |\n| `pocztowy`          | Pocztowy24                                                   |\n| `plusbank`          | Płacę z Plus Bank                                            |\n| `bs`                | Bank Spółdzielczy                                            |\n| `bspb`              | Bank Spółdzielczy w Brodnicy                                 |\n| `nest`              | nestPrzelew                                                  |\n"},{"title":"1.4.2. Płatność kartą.","content":"Płatność kartą można realizować za pomocą następujących usług:\n\n| Wartość parametru   | Nazwa usługi                            |\n|---------------------|-----------------------------------------|\n| `ecom3ds`           | Płatność kartą 3DS                      |\n| `oneclick`          | Płatność za pomocą usługi `oneclick`    |\n| `recurring`         | Płatność za pomocą usługi `recurring`   |\n| `click2pay`         | Płatność za pomocą usługi `click2pay`   |\n"},{"title":"1.4.3. Płatność BLIK.","content":"Płatność BLIK można realizować z pomocą następujących sposóbów:\n\n| Wartość parametru 'paymentMethod'        |\tWartość parametru 'paymentMethodChannel'  |\n|------------------------------------------|--------------------------------------------|\n| 'blik'                                   | 'blik'                                     |\n\n\u003eUtworzenie transakcji z dodatkowym parametrem 'blikCode' spowoduje wysłanie kodu do BLIKa\n\n| Parametr                        |\tOpis                                       |\n|---------------------------------|--------------------------------------------|\n| 'blikCode'                      | 6 znaków, znaki z zakresu 0-9              |\n"},{"title":"2. Metody RESTful API","content":"**Produkcyjny URL:** `https://api.axepta.pl` \u003cbr\u003e\n**Sandbox URL:** `https://api.sandbox.axepta.pl`\n\n| Endpoint | Zastosowanie | Metoda |\n|----------|--------------|--------|\n| `/{merchantId}/transaction`                           | Tworzy nową transakcję                                                                                | `POST` |\n| `/{merchantId}/transaction/{transactionId}`           | Pobiera dane transakcji                                                                               | `GET`  |\n| `/{merchantId}/payment-link`                          | Tworzy nowy link płatności                                                                            | `POST` |\n| `/{merchantId}/payment/{paymentId}/refund`            | Wykonanie zwrot płatności                                                                            | `POST` |\n| `/{merchantId}/payment/{paymentId}`                   | Pobiera dane płatności                                                                                | `GET`  |\n| `/{merchantId}/transaction/profile`                   | Obciąża istniejący profil kartowy                                                                     | `POST` |\n| `/{merchantId}/profile/cid/{cid}`                     | Pobiera profile o podanym `cid`                                                                       | `GET`  |\n| `/{merchantId}/profile/id/{paymentProfileId}`         | Pobiera profil o podanym `id`                                                                         | `GET`  |\n| `/{merchantId}/profile/deactivate`                    | Dezaktywuje profil o podanym w żądaniu identyfikatorze                                                | `POST` |\n| `/{merchantId}/profile/id/{paymentProfileId}`         | Dezaktywuje profil o podanym `paymentProfileId`                                                       | `DELETE` |\n| `/{merchantId}/payment/cancel`                        | Anuluje link płatności                                                                                | `POST` |\n\ngdzie:\n\n- `merchantId` - identyfikator klienta,\n- `serviceId` - identyfikator sklepu z którym związane są określone metody realizacji transakcji (UUID v4),\n- `cid` - identyfikator klienta/płatnika nadany przez akceptanta,\n- `transactionId` - unikalny identyfikator transakcji (UUID v4),\n- `paymentProfileId` - identyfikator profilu kartowego,\n- `paymentId` - unikalny identyfikator linku płatności (UUID v4).\n"},{"title":"3. Tworzenie nowej transakcji przez API","content":"\n\u003e Zgodnie z wymaganiami PCI DSS (ustalonymi przez organizacje płatnicze) zabronione jest przetwarzanie, przekazywanie czy przechowywanie numerów i innych danych dotyczących kart płatniczych. Jeśli posiadasz właściwy certyfikat PCI DSS i chcesz udostępnić formatkę płatności kartami na stronie Twojego sklepu - prosimy o kontakt z obsługą Axepta.\n\u003cbr/\u003e\nW przypadku bezpośredniego przekierowania na formatkę płatności kartami Axepta nie ma takiego wymogu.\n\nW celu utworzenia nowej transakcji należy za pomocą metody `POST` przesłać komunikat zawierający informacje o nowym zamówieniu na endpoint API:\n\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/transaction\n```\n\ngdzie:\n- `merchantId` - identyfikator klienta.\n"},{"title":"3.1. HTTP Request transaction API","content":"### Przykładowy adres na który należy wysłać żądanie POST\n\n```\nhttps://api.axepta.pl/v1/merchant/6yt3gjtm9p7b8h9xsdqz/transaction\n```\n\n### Payload zapytania\n\n```json\n{\n    \"type\": \"sale\",\n    \"serviceId\": \"62f574ed-d4ad-4a7e-9981-89ed7284aaba\",\n    \"amount\": 9900,\n    \"currency\": \"PLN\",\n    \"orderId\": \"12\",\n    \"clientIp\": \"192.168.10.2\",\n    \"paymentMethod\": \"pbl\",\n    \"paymentMethodChannel\": \"bnpparibas\",\n    \"successReturnUrl\": \"https://domain.com/success\",\n    \"failureReturnUrl\": \"https://domain.com/failure\",\n    \"customer\": {\n        \"firstName\": \"Maciej\",\n        \"lastName\": \"Kowalski\",\n        \"email\": \"jan.kowalski@example.com\"\n    }\n}\n```\n\n      \n### Parametry payload\n\n\n| Parametr            | Typ         | Wymagany | Opis           |\n|---------------------|-------------|-------------------|----------------|\n| `type`              | string      | ✔️        | Typ transakcji. \u003cbr\u003e**Dopuszczalne wartości**: `sale`. |\n| `serviceId`         | string(36)  | ✔️        | identyfikator sklepu jako UUID v4. |\n| `clientIp`          | string      | ✔️        | Adres IP klienta w standardzie IPv4 lub IPv6. |\n| `amount`            | integer(1-999999999)     | ✔️        | Kwota transakcji w najmniejszej jednostce waluty np. grosze. |\n| `currency`          | string(3)   | ✔️        | Waluta transakcji w standardzie ISO 4217. |\n| `orderId`           | string(100) | ✔️        | Numer zamówienia akceptanta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#_-.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `title`             | string(255) | -             | Tytuł transakcji, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `paymentMethod`     | string      | ✔️        | Metoda realizacji zamówienia. Więcej informacji w rozdziale [1.4 Metody i kanały realizacji transakcji] |\n| `paymentMethodChannel` | string      | ✔️        | Oznaczenie kanału płatności. Więcej informacji w rozdziale [1.4 Metody i kanały realizacji transakcji]|\n| `successReturnUrl`  | string(300) | ✔️        | Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku dokonania płatności z powodzeniem. |\n| `failureReturnUrl`  | string(300) | ✔️        | Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku wystąpienia błędu płatności. |\n| `returnUrl`  | string(300) | ✔️        | Domyślny adres powrotu. |\n| `customer`          | object      | ✔️        | Dane klienta. |\n| `billing`           | object      | -             | Dane płatnika. |\n| `shipping`          | object      | -             | Dane dotyczące dostawy. |\n| `card`              | object      | -             | Dane dot. płatności kartą. (Wymagane podczas płatności `card`)|\n| `additionalData`    | object      | -             | Informacje o przeglądarce płatnika, wymagane podczas wykonywania płatności kartą z autoryzacją 3ds. |\n| `activeTo`           | integer, null       | -             | Data ważności transakcji jako unix timestamp w sekundach (czas mierzony w sekundach od początku 1970 roku UTC) \u003cbr\u003e(**wartość musi być większa, bądz równa: 1 i mniejsza bądź równa 4294967295**). Jeżeli nie jest przekazana lub jest null to transakcja ważna jest zawsze. Brak realizacji płatności do tego czasu spowoduje jej anulowanie.\n| `distributor`           | string      | -             | Nazwa dystybutora, wartość dopuszczalna: \"shoper\".|\n| `surcharge`           | boolean      | -             | flaga determinujaca czy zostanie użyte obciazenie platnika dla danej transkacji. Wartość dopuszczalna: 'true', 'false'  (wymagane ustawienie flagi surcharge w procesie boardingu). |\n| `blikCode`           | integer(6)      | -             | Wartość kodu blik dla transakcji z przekazaniem kodu po API.|\n\n\u003eJeżeli w zapytaniu wystąpi parametr, `billing`, `shipping` lub `card` konieczne jest dostarczenie dodatkowych parametrów, opisanych poniżej.\n\n\u003cbr\u003e\u003c/br\u003e\n\n#### customer\n\n| Parametr    | Typ         | Wymagany | Opis                   |\n|-------------|-------------|-------------------|------------------------|\n| `firstName` | string(100) | ✔️        | Imię klienta,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `lastName`  | string(100) | ✔️        | Nazwisko klienta,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `cid`       | string(36) | -             | Identyfikator klienta/płatnika nadany przez akceptanta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9 oraz myślnik (0x2D) |\n| `phone`     | string(20)  | -             | Numer telefonu,\u003cbr\u003e **dopuszczalne znaki**: 0-9+- oraz znak spacji (0x20).        |\n| `email`     | string(200) | ✔️        | Adres email.           |\n| `locale`    | string(2)   | -             | Lokalizacja płatnika, określa język wysyłanej wiadomości mailowej, informującej o rozpoczęciu procesu płatności, \u003cbr\u003e **dopuszczalne wartości**: `pl`, `en`. |\n\nDomyślnym językiem wysyłanej wiadomości mailowej jest język polski dla transakcji w PLN, oraz język angielski dla pozostałych walut.\n\n#### billing\n\n| Parametr            | Typ         | Wymagany | Opis              |\n|---------------------|-------------|-------------------|-------------------|\n| `firstName`         | string(100) | ✔️        | Imię klienta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `lastName`          | string(100) | ✔️        | Nazwisko klienta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `company`           | string(200) | -             | Nazwa firmy,\u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)      |\n| `street`            | string(200) | -             | Ulica, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)       |\n| `city`              | string(100) | -             | Miasto, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)             |\n| `region`            | string(100) | -             | Region, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)                 |\n| `postalCode`        | string(30)  | -             | Kod pocztowy, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)      |\n| `countryCodeAlpha2` | string(2)  | -             | Kod kraju Alpha2. |\n\n#### shipping\n\n| Parametr            | Typ         | Wymagany | Opis              |\n|---------------------|-------------|-------------------|-------------------|\n| `firstName`         | string(100) | ✔️        | Imię klienta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `lastName`          | string(100) | ✔️        | Nazwisko klienta,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `company`           | string(200) | -             | Nazwa firmy,\u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)      |\n| `street`            | string(200) | -             | Ulica, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)           |\n| `city`              | string(100) | -             | Miasto, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)      |\n| `region`            | string(100) | -             | Region, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)                |\n| `postalCode`        | string(30)  | -             | Kod pocztowy, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"'/,. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne)       |\n| `countryCodeAlpha2` | string(2)   | -             | Kod kraju Alpha2. |\n\n#### card\n\n\n| Parametr            | Typ         | Wymagany | Opis              |\n|---------------------|-------------|-------------------|-------------------|\n`firstName`         | string(100) | ✔️        | Imię właściciela karty,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `lastName`          | string(100) | ✔️        | Nazwisko właściciela karty,\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `number`            | string(16)  | ✔️        | Numer karty                    |\n| `month`             | string(2)   | ✔️        | Ważność karty - miesiąc        |\n| `year`              | string(4)   | ✔️        | Ważność karty - rok            |\n| `cvv`               | string(4)   | ✔️        | Kod cvv karty                  |   \n"},{"title":"3.2. Dane przeglądarki","content":"W przypadku generowania płatności kartą, która wymaga autoryzacji metodą 3D Secure, należy pobrać i przekazać informacje na temat przeglądarki płatnika w dodatkowym obiekcie `additionalData`.\n\nStruktura wygląda w następujący sposób:\n\n| Parametr            | Typ         | Wymagany | Opis                           |\n|---------------------|-------------|-------------------|--------------------------------|\n|`browser`            | object| ✔️ | Informacje na temat przeglądarki płatnika |\n|`browser.ip`         | string | ✔️ |Adres IP. Dopuszczalne wartości: \"ipv4\", \"ipv6\" |\n|`browser.language`| string | ✔️ |Język przeglądarki określony w formacie UNICODE np. \"pl-PL\" |\n|`browser.jsEnabled`  | boolean | ✔️ |Określa, czy w przeglądarce włączona jest obsługa JavaScript|\n|`browser.timezoneOffset`| integer | ✔️ |Wartość Time-zone offset pomiędzy UTC, a lokalnym czasem przeglądarki cardholdera w minutach.|\n|`browser.userAgent`  | string | ✔️ |Informacja o używanej aplikacji klienckiej|\n|`browser.accept`     | string | ✔️ |Dokładna zawartość nagłówka http accept headers, typ MIME|\n|`browser.javaEnabled`| boolean | ✔️ |Określa, czy w przeglądarce włączona jest obsługa Java|\n|`browser.screenColorDepth`| integer | ✔️ |Bit głębi koloru dla wyświetlania obrazków w bitach na pixel, pozyskiwana z przeglądarki cardholdera, skala: 1-48 bits|\n|`browser.screenHeight`| integer | ✔️ |Wysokość okna przeglądarki w px|\n|`browser.screenWidth`| integer | ✔️ |Szerokość okna przeglądarki w px|\n\n\n\n\n#### Przykład przekazywanego obiektu\n\n```json\n\"additionalData\": {\n    \"browser\": {\n            \"ip\": \"127.0.0.1\",\n            \"language\": \"pl-PL\",\n            \"jsEnabled\": true,\n            \"timezoneOffset\": 100,\n            \"userAgent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome 87.0.4280.66 Safari/537.36\",\n            \"accept\": \"application/json, text/javascript, */*; q=0.01\",\n            \"javaEnabled\": false,\n            \"screenColorDepth\": 24,\n            \"screenHeight\": 1080,\n            \"screenWidth\": 2560\n        }\n    }\n```\n"},{"title":"3.3. HTTP Response","content":"### Odpowiedź serwera\n\nW przypadku wykonania poprawnego zapytania rejestrującego nowe zamówienie serwer odpowie statusem HTTP `200` oraz informacją o nowo utworzonej transakcji:\n\n```json\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"transaction\": {\n            \"id\": \"21090680-8938-467b-a53e-a68862356e2e\",\n            \"type\": \"sale\",\n            \"status\": \"pending\",\n            \"source\": \"api\",\n            \"createdAt\": 1688379004,\n            \"modifiedAt\": 1688379004,\n            \"notificationUrl\": \"https://1234.requestcatcher.com/\",\n            \"serviceId\": \"3283bb82-1203-4064-86ad-27868f985769\",\n            \"amount\": 10000,\n            \"currency\": \"PLN\",\n            \"orderId\": \"1\",\n            \"paymentMethod\": \"pbl\",\n            \"paymentMethodChannel\": \"ing\",\n            \"payment\": {\n                \"id\": \"8254d179-9063-47a2-adb4-5d8322679378\",\n                \"status\": \"new\"\n            }\n        },\n        \"action\": {\n            \"type\": \"redirect\",\n            \"url\": \"https://paywall.sandbox.axepta.pl/sandbox/8254d179-9063-47a2-\n                    adb4-5d8322679378/21090680-8938-467b-a53e-a68862356e2e\",\n            \"method\": \"GET\",\n            \"contentType\": \"\",\n            \"contentBodyRaw\": \"\"\n        },\n        \"omG\": \"G9q\"\n    }\n}\n\n```\n\n\n\nW odpowiedzi otrzymujemy obiekty: `transaction` oraz `action`.\n\nObiekt `transaction` jest identyczny z wysłanym w zapytaniu rejestrującym zamówienie i zawiera kilka dodatkowych parametrów:\n\n| Parametr   | Typ     | Opis |\n|------------|---------|-------------------------------------------------------------------------------|\n| `id`       | string  | Identyfikator transakcji w formacie UUID v4. Unikalny dla każdego zamówienia. |\n| `status`   | string  | Status zamówienia.                                                            |\n| `source`   | string  | Źródło zamówienia. Może posiadać wartości: `api` lub `web`.                   |\n| `createdAt`  | integer | Data utworzenia zamówienia w formacie UNIX TIMESTAMP czasu UTC.               |\n| `notificationUrl` | string | Adres notyfikacji |\n| `modifiedAt` | integer | Data ostatniej zmiany statusu transakcji w formacji UNIX TIMESTAMP czasu UTC. |\n| `payment`  | object  | Dane płatności do której przypisana jest transakcja                           |\n\nDrugim dodatkowym obiektem jest `action`. Obiekt ten wystąpi tylko w przypadku konieczności przekierowania płatnika na zewnętrzną stronę jak to ma miejsce w przypadku płatności `Pay-By-Link`.\nObiekt ten zawiera dodatkowe pola których znaczenie jest opisane poniżej:\n\n\n| Parametr         | Typ    | Opis                 |\n|------------------|--------|----------------------|\n| `type`           | string | Typ akcji. |\n| `url`            | string | W przypadku konieczności wykonania przekierowania płatnika na inną stronę (np. banku) adres URL. |\n| `method`         | string | Metoda POST lub GET. |\n| `contentType`    | string | Pozycja w nagłówku zapytania do banku określająca typ payloadu. |\n| `contentBodyRaw` | string | Payload zapytania.   |\n\n\n\n### Statusy HTTP\n\n| Kod HTTP | Znaczenie                                                                |\n|----------|--------------------------------------------------------------------------|\n| `200`    | Zapytanie wykonane poprawnie. Utworzono transakcję                       |\n| `400`    | Błędne żądanie, niepoprawny payload żądania.                             |\n| `401`    | Nieautoryzowany dostęp. Żądanie zasobu, który wymaga uwierzytelnienia.   |\n| `403`    | Brak uprawnień do wykonania żądania.                                     |\n| `404`    | Nieznany zasób.                                                          |\n| `422`    | Payload jest poprawny ale nie zawiera wymaganaych parametrów.            |\n| `500`    | Błąd serwera.                                                            |\n| `503`    | System niedostępny.  \n"},{"title":"3.4 Multiwypłaty","content":"Opcja dostępna w przypadku włączonej funkcji multiwypłaty. Tylko dla rachunków w banku BNP Paribas.\nWykonujemy transakcje zgodnie z opisem punktu 3.1. z jednym dodatkowym parametrem w obiekcie `data.multipayout[]`:\n\n| Parametr   | Typ     | Wymagany | Opis |\n|------------|---------|-----|-------------------------------------------------------------------------------|\n| `iban`       | string  | ✔️ | Numer konta bankowego |\n| `amount`            | integer(1-999999999)     | ✔️        | Kwota transakcji w najmniejszej jednostce waluty np. grosze. |\n| `label`     | string  | ✔️ | Nazwa odbiorcy (max 35 znaków), *Dopuszczalne znaki*: A-Za-z0-9-\"',. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), |\n| `title`     | string  | - | Tytuł przelewu (max 105 znaków), *Dopuszczalne znaki*: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), parametr opcjonalny. Jego obecność powoduje wyodrębnienie danej transakcji na koncie odbiorcy. *Ważne:* Podanie parametru dla jednego elementu warunkuje konieczność dostarczenia go dla pozostałych. |\n\n\u003eW przypadku, gdy suma kwot z pól `amount`, w parametrze `multipayout` jest niższa niż całkowita suma zamówienia, reszta śródków trafi na domyślny rachunek właściciela sklepu.\n\n\u003e Minimalna i maksymalna kwota transakcji jest podana w tabeli w punkcie [11. Minimalne i maksymalne wartości kwot transakcji, zwrotów].\n\n\n\n\n#### Przykład zapytania:\n\n```json\n{\n        \"type\": \"sale\",\n        \"serviceId\": \"62f574ed-d4ad-4a7e-9981-89ed7284aaba\",\n        \"amount\": 9900,\n        \"currency\": \"PLN\",\n        \"orderId\": \"12\",\n        \"clientIp\": \"192.168.10.2\",\n        \"paymentMethod\": \"pbl\",\n        \"paymentMethodChannel\": \"bnpparibas\",\n        \"successReturnUrl\": \"https://domain.com/success\",\n        \"failureReturnUrl\": \"https://domain.com/failure\",\n        \"customer\": {\n            \"firstName\": \"Maciej\",\n            \"lastName\": \"Kowalski\",\n            \"email\": \"jan.kowalski@example.com\"\n        },\n          \"data\": {\n              \"multipayout\": [\n          {\n              \"iban\": \"PL55105000026800208114085773\",\n              \"amount\": 100,\n              \"label\": \"Nazwa firmy 0\"\n          },\n            {\n              \"iban\": \"PL55105000026800208114085773\",\n              \"amount\": 200,\n              \"label\": \"Nazwa firmy 1\"\n            }\n        ]\n    }\n}\n```\n"},{"title":"4. Wykonanie zwrotu","content":"\u003e Podczas wykonywania wielu transakcji zwrotu jednocześnie, należy wprowadzić co najmniej 5-cio sekundowe opóźnienie pomiędzy kolejnymi transakcjami.\n\n\u003e Zwrot wykonywany jest dla najwyższej wartością transakcji przypisanej do danej płatności. Akcję można wykonać, zanim dana płatność zostanie w całości zrealizowana.\n\nPoprawne wykonanie zwrotu polega na wysłaniu żądania metodą POST na adres: \n\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/payment/{paymentId}/refund\n```\n\ngdzie:  \n\n- `merchantId` - identyfikator klienta,\n- `paymentId` - unikalny identyfikator płatności której dotyczy zwrot.\n"},{"title":"4.1 HTTP Request dla wykonania zwrotu","content":"### Przykładowy adres na który należy wysłać żądanie POST\n\n```\nhttps://api.axepta.pl/v1/merchant/6yt3gjtm9p7b8h9xsdqz/payment/925767db-962a-49ee-916e-783de9b62a73/refund\n```\n\n### Payload zapytania\n\n```json\n{\n  \"type\": \"refund\",\n  \"serviceId\": \"000eec9b-7248-4dae-98f2-56aab6a53927\",\n  \"amount\": 100\n}\n```\n\n### Parametry payload\n\n| Parametr            | Typ         | Wymagany | Opis  |\n|---------------------|-------------|-------------------|-------|\n| `type`              | string      | ✔️        | Typ transakcji. \u003cbr\u003e**Dopuszczalne wartości**: `refund`. |\n| `serviceId`         | string(36)  | ✔️        | identyfikator sklepu jako UUID v4. |\n| `amount`            | integer(1-999999999)     | ✔️        | Kwota transakcji w najmniejszej jednostce waluty np. grosze. |\n"},{"title":"4.2 HTTP Response","content":"### Odpowiedź serwera\n\nW przypadku wykonania poprawnego zwrotu serwer odpowie statusem HTTP `200`:\n\n```json\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"paymentRefundId\": \"e6853cef-7d1b-409f-81c4-bab92e4fb75z\",\n        \"serviceId\": \"000eec9b-7248-4dae-98f2-56aab6a53927\",\n        \"paymentId\": \"925767db-962a-49ee-916e-783de9b62a73\",\n        \"amount\": 100,\n        \"amountRefunded\": 0,\n        \"status\": \"pending\",\n        \"transactions\": [\n            {\n                \"transaction\": {\n                    \"id\": \"5023f30e-9909-41bd-a8a8-9cc9b161badf\",\n                    \"type\": \"refund\",\n                    \"status\": \"new\",\n                    \"source\": \"api\",\n                    \"createdAt\": 1650024191,\n                    \"modifiedAt\": 1650024191,\n                    \"serviceId\": \"000eec9b-7248-4dae-98f2-56aab6a53927\",\n                    \"amount\": 100,\n                    \"currency\": \"PLN\",\n                    \"orderId\": \"1\",\n                    \"paymentMethod\": \"blik\",\n                    \"paymentMethodChannel\": \"blik\",\n                    \"payment\": {\n                        \"id\": \"925767db-962a-49ee-916e-783de9b62a73\",\n                        \"status\": \"settled\"\n                    }\n                }\n            }\n        ]\n    }\n}\n```\n"},{"title":"5. Tworzenie nowego linku płatności przez API","content":"W celu utworzenia nowego linku płatności należy za pomocą metody `POST` przesłać komunikat zawierający informacje o nowym linku płatności na endpoint API:\n\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/payment-link\n```\n\ngdzie:\n* `merchantId` - identyfikator klienta.\n"},{"title":"5.1. HTTP Request","content":"### Przykładowy adres na który należy wysłać żądanie POST\n\n```\nhttps://api.axepta.pl/v1/merchant/6yt3gjtm9p7b8h9xsdqz/payment-link\n```\n\n### Payload zapytania\n\n```json\n{\n  \"serviceId\": \"62f574ed-d4ad-4a7e-9981-89ed7284aaba\",\n  \"amount\": 1000,\n  \"currency\": \"PLN\",\n  \"orderId\": \"139\",\n  \"successReturnUrl\": \"https://domain.com/success\",\n  \"failureReturnUrl\": \"https://domain.com/failure\",\n  \"customer\": {\n      \"firstName\": \"Jan\",\n      \"lastName\": \"Kowalski\",\n      \"email\": \"jan.kowalski@example.com\"\n    }\n}\n```\n\n\n\n### Parametry payload\n\n| Parametr            | Typ         | Wymagany | Opis  |\n|---------------------|-------------|-------------------|-------|\n| `serviceId`         | string(36)  | ✔️        | identyfikator sklepu jako UUID v4. |\n| `amount`            | integer(1-999999999)     | ✔️        | Kwota transakcji w najmniejszej jednostce waluty np. grosze. |\n| `currency`          | string(3)   | ✔️        | Waluta transakcji w standardzie ISO 4217. |\n| `orderID`           | string(100) | ✔️        | Numer zamówienia akceptanta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#_-.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `title`             | string(255) | -             | Tytuł zamówienia, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `returnUrl`         | string(300) | -             | Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku nie rozstrzygnięcia statusu transakcji. |\n| `successReturnUrl`  | string(300) | -             | Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku dokonania płatności z powodzeniem. |\n| `failureReturnUrl`  | string(300) | -             | Adres powrotu z zewnętrznej strony obsługującej płatność w przypadku wystąpienia błędu płatności. |\n| `customer`          | object      | ✔️        | Dane klienta. |\n| `activeTo`           | integer, null       | -             | Data ważności transakcji jako unix timestamp w sekundach (czas mierzony w sekundach od początku 1970 roku UTC) \u003cbr\u003e(**wartość musi być większa, bądz równa: 1 i mniejsza bądź równa 4294967295**). Jeżeli nie jest przekazana lub jest null to transakcja ważna jest zawsze. Brak realizacji płatności do tego czasu spowoduje jej anulowanie.|\n| `paywall.forceCardChannel`     | string  | -             | Wymuszenie trybu płatności kartą. Pozwala na inicjalizację płatności kartą w trybie zapisywania profilu kartowego. \u003cbr\u003e **Dostępne wartości:** `ecom3ds`, `oneclick`, `recurring`. W przypadku korzystania z `oneclick` lub `recurring`. wymagane jest przekazanie parametru `customer.cid`. |\n| `distributor`           | string      | -             | Nazwa dystybutora, wartość dopuszczalna: \"shoper\".|\n| `visibleMethod`        | array      | -             | Widoczność metod płatności, domyślnie widoczne są wszystkiedostępne dla sklepu.Opis w punkcie 5.3 |\n| `surcharge`           | boolean      | -             | flaga determinujaca czy zostanie użyte obciazenie platnika dla danego zamowienia. Wartość dopuszczalna: 'true', 'false' (wymagane ustawienie flagi surcharge w procesie boardingu). |\n\n\n\nParametry dla `customer`:\n\n| Parametr    | Typ         | Wymagany | Opis                   |\n|-------------|-------------|-------------------|------------------------|\n| `firstName` | string(100) | ✔️        | Imię klienta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `lastName`  | string(100) | ✔️        | Nazwisko klienta, \u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n| `email`     | string(200) | ✔️        | Adres email.           |\n| `phone`     | string(20)  | -          | Numer telefonu, \u003cbr\u003e **dopuszczalne znaki**: 0-9+- oraz  znak spacji (0x20). |\n| `cid`       | string(36) | -          | Identyfikator klienta/płatnika nadany przez akceptanta. (Wymagane podczas płatności oneclick, recurring),\u003cbr\u003e **dopuszczalne znaki**: A-Za-z0-9 oraz myślnik (0x2D) |\n"},{"title":"5.2. HTTP Response","content":"### Odpowiedź serwera\n\nW przypadku wykonania poprawnego zapytania rejestrującego nowy link płatności serwer odpowie statusem HTTP `200` oraz informacją o nowo utworzonym linku płatności:\n\n```json\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"paymentLink\": {\n            \"paymentId\": \"58b1c723-d99d-4fb3-a597-eaac08846a90\",\n            \"url\": \"https://paywall.int.axepta.pl/pay/58b1c723-d99d-4fb3-a597-eaac08846a90\"\n        }\n    }\n}\n```\n\nW odpowiedzi otrzymujemy obiekt `status` informujący o powodzeniu operacji, oraz `data.paymentLink` z zawartością:\n\n| Parametr   | Typ     | Opis                                              |\n|------------|---------|---------------------------------------------------|\n| `paymentId` | string  | Identyfikator płatności w formacie UUID v4. Unikalny dla każdego zamówienia. |\n| `url`      | string  | Adres URL linku płatności. |\n\n\n### Statusy HTTP\n\n| Kod HTTP | Znaczenie                                                                |\n|----------|--------------------------------------------------------------------------|\n| `200`    | Zapytanie wykonane poprawnie. Utworzono transakcję                       |\n| `400`    | Błędne żądanie, niepoprawny payload żądania.                             |\n| `401`    | Nieautoryzowany dostęp. Żądanie zasobu, który wymaga uwierzytelnienia.   |\n| `403`    | Brak uprawnień do wykonania żądania.                                     |\n| `404`    | Nieznany zasób.                                                          |\n| `422`    | Payload jest poprawny ale nie zawiera wymaganaych parametrów.            |\n| `500`    | Błąd serwera.                                                            |\n| `503`    | System niedostępny.                                                      |\n"},{"title":"5.3. Widoczność metod płatności","content":"Istnieje możliwośc zadeklarowania widocznych metod płatności na bramcę, przez użycie dodatkowego parametru `visibleMethod`. \n\u003cbr\u003e\nDomyślnie są widoczne wszytkie metody płatności dostępne na sklepie.\n\n| Wartość    |Opis |\n|------------|-----------------------------------|\n| `pbl`      |Szybkie przelewy|\n| `blik`     | Blik |\n| `card`     | Płatność kartami |\n| `wallet`   | Płatność portfelem GooglePay i ApplePay|\n\n\n#### Przykład struktury:\n\n```json\n    \"visibleMethod\": [\n        \"pbl\",\n        \"blik\",\n        \"card\",\n        \"wallet\"\n        ]\n```\n"},{"title":"5.4. Multiwypłaty","content":"Opcja dostępna w przypadku włączonej funkcji multiwypłaty.\nTworzymy link płatności zgodnie z opisem punktu 5. wraz z dodatkowym parametrem `multipayout`:\n\n| Parametr   | Typ     | Wymagany | Opis |\n|------------|---------|---------|-------------------------------------------------------------------------------|\n| `iban`       | string(28)  | ✔️  | Numer konta bankowego |\n| `amount`            | integer(1-999999999)     | ✔️        | Kwota transakcji w najmniejszej jednostce waluty np. grosze. |\n| `label`       | string(35)  |  ✔️  | Nazwa odbiorcy, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9-\"',. oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), |\n| `title`       | string(105)  |  -  | Tytuł przelewu, \u003cbr\u003e*Dopuszczalne znaki*: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), parametr opcjonalny. Jego obecność powoduje wyodrębnienie danej transakcji na koncie odbiorcy. \u003cbr/\u003e**Ważne:** Podanie parametru dla jednego elementu warunkuje konieczność dostarczenia go dla pozostałych. |\n\n\n#### Przykład struktury:\n\n```json\n{\n    \"multipayout\": [\n        {\n            \"iban\": \"PL55105000026800208114085773\",\n            \"amount\": 100,\n            \"label\": \"Nazwa firmy 0\"\n        },\n        {\n            \"iban\": \"PL55105000026800208114085773\",\n            \"amount\": 200,\n            \"label\": \"Nazwa firmy 1\"\n        }\n    ]\n}\n```\n"},{"title":"5.6. Anulowanie linku płatności","content":"W celu anulowania utworzonego linku płatności należy wysłać żądanie metodą `POST` na adres `https://api.axepta.pl/v1/merchant/{merchantId}/payment/cancel`\n\nBody zapytania powinno zawierać następujące parametry:\n\n| Nazwa       | Parametr wymagany | Typ    | Opis                          |\n|-------------|-------------------|--------|-------------------------------|\n| `serviceId` | **Tak**           | string | Identyfikator sklepu          |\n| `paymentId` | **Tak**           | string | Identyfikator linku płatności |\n\n### Przykład żądania\n\n```json\n{\n    \"serviceId\": \"000eec9b-7248-4dae-98f2-56aab6a53927\",\n    \"paymentId\": \"805f9c2c-e7ee-4606-b201-ee09032c49b0\"\n}\n```\n"},{"title":"6. Notyfikacje","content":"Aby poprawnie skonfigurować wysyłkę notyfikacji odnośnie transakcji do sklepu, należy wprowadzić url prowadzący do weryfikacji w panelu administracyjnym Axepta.\n\nW momencie zmiany statusu transakcji serwery Axepta wysyłają powiadomienia na wskazany przez akceptanta adres URL.\nWymagane jest by serwer akceptanta (np. sklep) odpowiedział statusem `200 OK` z body `{\"status\":\"ok\"}`, który będzie oznaczał poprawne odebranie i przetworzenie notyfikacji przez serwer akceptanta.\\\nNotyfikacje wysyłane są w następującym cyklu:\n\n* 3 razy co sekundę, następnie,\n* 5 razy co 5 minut, następnie,\n* 5 razy co 60 minut, następnie,\n* 5 razy co 360 minut, następnie,\n* 5 razy co 720 minut.\n\n\u003e Jeśli serwer akceptanta zwróci status 200 OK, lub notyfikacja nie zostanie odebrana do czasu zakończenia trwania cyklu wysyłki, serwery Axepta zaprzestają powtórzeń wysyłki notyfikacji.\n"},{"title":"6.1. Zawartość BODY notyfikacji","content":"Notyfikacje wysyłane są jako obiekt `JSON` metodą `POST` i mają następującą postać:\n\n\n```json\n{\n    \"payment\": {\n        \"id\": \"53a97f55-81af-46fa-921b-0a6eaf184c30\",\n        \"title\": \"43\",\n        \"amount\": 100,\n        \"status\": \"settled\",\n        \"created\": 1689938459,\n        \"orderId\": \"43\",\n        \"currency\": \"PLN\",\n        \"modified\": 1689938483,\n        \"serviceId\": \"3283bb82-1203-4064-86ad-27868f985769\",\n        \"notificationUrl\": \"https://domain.com/\",\n        \"amountPaid\": 100,\n        \"amountRefunded\": 0,\n        \"amountSubmittedRefund\": 0,\n        \"transactions\": [\n            {\n                \"id\": \"ab163b2e-0cf5-4478-a673-a1afb22c9535\",\n                \"type\": \"sale\",\n                \"status\": \"settled\",\n                \"source\": \"web\",\n                \"created\": 1689938476,\n                \"modified\": 1689938483,\n                \"notificationUrl\": \"https://domain.com/\",\n                \"serviceId\": \"3283bb82-1203-4064-86ad-27868f985769\",\n                \"amount\": 100,\n                \"currency\": \"PLN\",\n                \"title\": \"43\",\n                \"orderId\": \"43\",\n                \"paymentMethod\": \"blik\",\n                \"paymentMethodChannel\": \"blik\"\n            }\n        ],\n        \"notifyTransactionData\": {\n            \"id\": \"ab163b2e-0cf5-4478-a673-a1afb22c9535\",\n            \"type\": \"sale\"\n        }\n    }\n}\n```\n\nNotyfikacja może składać się z następujących obiektów:\n\n- `payment` - zawiera informacje o utworzonym linku płatności,\n- `transaction` - zawiera informacje o transakcjach jeśli zostałt utworzone dla danego linku płatności\n- `notifyTransactionData` - określa, której dokładnie trasakcji dotyczy notyfikacja. Objekt pomocny przy transakcji z więcej niż jedną metodą płatności. \n"},{"title":"6.2. Zawartość nagłówków notyfikacji","content":"Dodatkowo w nagłówkach HTTP umieszczane są następujące parametry:\n\n```\nContent-Type: application/json; charset=UTF-8\nX-Axepta-Signature: merchantid=6yt3gjtm9p7b8h9xsdqz;serviceid=63f574ed-d4ad-407e-9981-39ed7584a7b7;signature=20cdc8646eb268ea754842bdf0db1df21a2cf0b1c6e3e16e74ef7f7cca8f5450;alg=sha256\n```\n\ngdzie:\n* `merchantid` - identyfikator klienta,\n* `serviceid` - identyfikator sklepu,\n* `signature` - podpis notyfikacji,\n* `alg` - algorytm funkcji skrótu (możliwe wartości: `sha256`).\n\n\u003e Weryfikacja podpisu notyfikacji jest krytycznym elementem uwierzytelnienia informacji przesyłanych w pakiecie notyfikacji.\n"},{"title":"6.3. Metoda weryfikacji podpisu notyfikacji","content":"Nagłówek zawierający podpis notyfikacji ma postać:\n\n```\nX-axepta-Signature: merchantid=[...];serviceid=[...];signature=[...];alg=[...]\n```\n\nAby uwierzytelnić pochodzenie oraz zweryfikować integralność wiadomości powiadomienia należy wykonać następujące czynności:\n\n1. Z nagłówków pakietu przychodzącego na adres notyfikacji należy pobrać zawartość `X-Axepta-Signature`,\n2. Następnie należy pobrać wartość parametru `signature` oraz `alg`,\n3. W zależności od algorytmu funkcji skrótu określonego w parametrze `alg` należy obliczyć odpowiednią funkcją skrót:\n\n    ```\n    string incoming_signature = x_axepta_signature[signature]\n    string body = notification_body\n    string own_signature = hash(body + private_key, alg)\n    ``` \n\n4. Obliczoną wartość `own_signature` należy porównać z wartością `incoming_signature`, która została pobrana z nagłówka,\n5. Jeżeli wartości `own_signature` i `incoming_signature` są identyczne oznacza to, że wiadomość notyfikacji jest poprawna i pochodzi z zaufanego źródła.\n\n\u003e Zmiany statusów transakcji należy dokonywać tylko gdy weryfikacja podpisu przebiegła poprawnie.\n"},{"title":"7. Pobieranie danych transakcji","content":"Aby pobrać dane zamówienia należy wysłać żądanie `GET` na adres:\n\n``` \nhttps://api.axepta.pl/v1/merchant/{merchantId}/transaction/{transactionId}\n``` \ngdzie:\n\n- `merchantId` - identyfikator klienta,\n- `transactionId` - unikalny identyfikator transakcji (UUID v4),\n"},{"title":"7.1. HTTP Request","content":"### Przykładowy adres na który należy wysłać żądanie GET\n\n```\nhttps://api.axepta.pl/v1/merchant/6yt3gjtm9p7b8h9xsdqz/transaction/5013e9ff-ece1-452a-9bd9-3b867a952794\n```\n"},{"title":"7.2. HTTP Response","content":"W przypadku wykonania poprawnego zapytania dotyczącego pobrania danych transakcji serwer odpowie statusem HTTP `200` oraz informacją o transakcji.\n\n### Odpowiedź serwera\n\n```json\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"transaction\": {\n            \"id\": \"5013e9ff-ece1-452a-9bd9-3b867a952794\",\n            \"type\": \"sale\",\n            \"status\": \"pending\",\n            \"source\": \"api\",\n            \"createdAt\": 1631261710,\n            \"modifiedAt\": 1631261710,\n            \"notificationUrl\": \"http://domain.com/\",\n            \"serviceId\": \"33532abf-f5f7-42b7-aa68-d4f93ebad053\",\n            \"amount\": 100,\n            \"currency\": \"PLN\",\n            \"orderId\": \"123456\",\n            \"paymentMethod\": \"pbl\",\n            \"paymentMethodChannel\": \"bnpparibas\",\n            \"payment\": {\n                \"id\": \"41f9f9fa-c7d0-4f08-8fb9-007cc24428a6\",\n                \"status\": \"pending\"\n            }\n        }\n    }\n}\n```\n"},{"title":"8. Płatność oneclick i rekurencyjna","content":"Płatności `oneclick` polegają na obciążeniu zarejestrowanego już w systemie Axepta profilu klienta/płatnika. Pierwsza płatność wymaga weryfikacji i podania pełnych danych instrumentu płatniczego. Każda kolejna płatność odbywa się za pomocą obciążenia na podstawie przydzielonego do instrumentu płatniczego identyfikatora.\n\nPłatności `rekurencyjne` polegają na cyklicznym obciążaniu instrumentu płatniczego klienta bez weryfikacji. Rejestracja instrumentu płatniczego odbywa się podobnie jak w płatności `oneclick`. Zgodnie z regulacjami organizacji płatniczych płatność musi być powtarzalna co do kwoty oraz okresu czasu.\n\nDokonując płatności należy pamiętać aby każdy instrument płatniczy posiadał swój unikalny identyfikator klienta/płatnika - `cid`.\n"},{"title":"8.1 Zarejestrowanie nowego profilu","content":"\u003e Rejestracja profilu po API dostępna jest tylko i wyłącznie dla akceptantów którzy posiadają certyfikat PCI-DSS. \n\u003e W przypadku braku certyfikatu PCI-DSS należy skorzytać z rejestracji poprzez link API zgodnie z punktem [5. Tworzenie nowego linku płatności przez API], gdzie należy dołączyć parametr - `paywall.forceCardChannel` wraz z odpowiednią wartością.\n\nRejestracja nowego profilu po API odbywa się za pomocą utworzenia nowej transakcji kartowej (punkt 3.) z parametrem `paymentMethodChannel` o wartości `oneclick` lub `recurring`. \n\n#### Odpowiedź serwera\n\nGdy transakcja zostanie zaakceptowana, standardowa notyfikacja zostanie zwrócona wzbogacona o dodatkowe pole `statusCode` oraz sekcję `paymentProfile` o strukturze:\n\n```json\n{\n    \"paymentProfile\": {\n        \"id\": \"d6a5bd6c-8e9c-496e-beb2-f0ca08215645\",\n        \"{merchantId}\": \"6yt3gjtm9p7b8h9xsdqz\",\n        \"merchantCustomerId\": \"123\",\n        \"firstName\": \"Jan\",\n        \"lastName\": \"Kowalski\",\n        \"maskedNumber\": \"****1791\",\n        \"month\": \"10\",\n        \"year\": \"2020\",\n        \"organization\": \"MASTERCARD\",\n        \"isActive\": 1,\n        \"profile\": \"ONE_CLICK\"\n    }\n}\n```\n\n\n\ngdzie:\n\n| Parametr         | Typ    | Opis                 |\n|------------------|--------|----------------------|\n| `id`  | string  | Identyﬁkator proﬁlu |\n| `{merchantId}`            | string    | Identyfikator klienta |\n| `merchantCustomerId`     | string(3)  | Identyfikator płatnika, dopuszczalne znaki: A-Za-z0-9_- |\n| `firstName`           | string | Imię posiadacza instrumentu płatniczego na który jest zarejestrowany profil |\n|`lastName`              |string          | Nazwisko posiadacza instrumentu płatniczego na który jest zarejestrowany profil |\n|`maskedNumber`              |integer          | Cztery gwiazdki oraz ostatnie cztery cyfry instrumentu płatniczego |\n|`month`             |string          | Data ważności karty: miesiąc |\n|`year`              |string          | Data ważności karty: rok |\n|`organization`              |string          | Organizacja płatnicza która wydała zarejestrowaną kartę |\n|`isActive`              |integer          | Aktywność profilu: 1 - aktywna, 0 - nieaktywna |\n|`profile`              |string          | Rodzaj profilu. |\n"},{"title":"8.2. Obciążenie istniejącego profilu","content":"Po prawidłowej rejestracji profilu zwrotnie zostanie przesłany parametr 'paymentProfileId', który jest wymagany aby móc obciążyć dany profil.\nAby obciążyć istniejący profil w systemie należy wysyłać żądanie `POST` na adres:\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/transaction/profile\n```\ngdzie:\n* `merchantId` - identyfikator klienta.\n\n#### Przykładowy adres na który należy wysłać żądanie POST\n```\nhttps://api.axepta.pl/v1/merchant/6yt3gjtm9p7b8h9xsdqz/transaction/profile\n```\n\n#### Payload zapytania\n\n\n```json\n{\n    \"serviceId\": \"63f574ed-d4ad-407e-9981-39ed7584a7b7\",\n    \"paymentProfileId\": \"39ac1087-e632-41ff-acb8-8d661068a9d5\",\n    \"amount\": 100,\n    \"currency\": \"PLN\",\n    \"orderId\": \"123456\",\n}\n```\n\ngdzie:\n\n| Parametr          | Typ         | Wymagany | Opis  |\n|-------------------|-----------------------------------------------|-|-|\n| `serviceId`         | string(36)  | ✔️        | identyfikator sklepu jako UUID v4. |\n| `paymentProfileId`  | string(36)  | ✔️        | identyﬁkator proﬁlu który ma zostać obciążony. |\n| `amount`            | integer(1-999999999)     | ✔️        | Kwota transakcji w najmniejszej jednostce waluty np. grosze. |\n| `currency`          | string(3)   | ✔️        | Waluta transakcji w standardzie ISO 4217. |\n| `orderID`           | string(100) | ✔️        | Numer zamówienia akceptanta - dopuszczalne znaki: A-Za-z0-9#_-.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n|`title`              |string(255)  | -             | Tytuł transakcji - dopuszczalne znaki: A-Za-z0-9#\u0026_-\"',.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n\n\n#### Możliwe statusy\nPróba obciążenia profilu może przyjąć dwa statusy:\n\n| Status         | Typ    | Opis                 |\n|------------------|--------|----------------------|\n| `Success`           | string | Powodzenie - obciążono profil |\n| `Fail`           | string | Błąd - profil nie został obciążony|\n\n#### Odpowiedź serwera\n\nW przypadku próby obciążenia nieaktywnego profilu odpowiedź będzie wyglądać:\n\n```json\n{\n    \"status\": \"FAIL\",\n    \"message\": \"Payment profile inactive.\",\n    \"data\": {\n        \"errorCode\": \"PAYMENT_PROFILE_INACTIVE\",\n        \"errorId\": 120301,\n        \"bqh\": \"6jO\"\n    }\n}\n```\ngdzie:\n\n| Parametr         | Typ    | Opis                 |\n|------------------|--------|----------------------|\n| `code`           | string | Kod błędu walidacji treści żądania |\n| `message`           | string | Opis błędu |\n| `serviceId`         | string(36)  | identyfikator sklepu jako UUID v4. |\n| `paymentProfileId`  | string(36)  | identyﬁkator proﬁlu który ma zostać obciążony. |\n| `amount`            | integer(1-999999999)| Kwota transakcji w najmniejszej jednostce waluty np. grosze. |\n| `currency`          | string(3)   | Waluta transakcji w standardzie ISO 4217. |\n| `orderID`           | string(100) | Numer zamówienia akceptanta - dopuszczalne znaki: A-Za-z0-9#_-.\\/ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne) |\n\n#### Opisy ErrorCode\nW przypadku otrzymania statusu \"FAIL\" w odpowiedzi serwera mogą wystąpić nastepujące błędy (\"errorCode\"):\n\n| errorCode         | Typ    | Opis                 |\n|------------------|--------|----------------------|\n| `PAYMENT_PROFILE_INACTIVE`           | string | Profil płatności dezaktywowany |\n| `PAYMENT_PROFILE_NOT_FOUND`           | string |  Profil płatności nie odnaleziony |\n| `SCHEMA_VALIDATION`           | string | Błąd walidacji znaków. Payload zapytania jest nie właściwy, lub nie spełnia wymagań znakowych |\n"},{"title":"8.3 Zarządzanie istniejącym profilem","content":"Opis poszczególnych dostępnych funkcjonalności został w umieszczony podrozdziałach."},{"title":"8.3.1 Multiwypłata","content":"Istnieje możliwośc obciążenia istniejącego profilu kartowego z opcją multiwypłaty. Aby to zrobić do treści zapytania o obciążenie profilu kartowego należy dodać dane jak w punkcie 5.4 Multiwypłaty. \n\n#### Przykładowy Payload\n\n```json\n{\n    \"serviceId\": \"63f574ed-d4ad-407e-9981-39ed7584a7b7\",\n    \"paymentProfileId\": \"39ac1087-e632-41ff-acb8-8d661068a9d5\",\n    \"amount\": 303,\n    \"currency\": \"PLN\",\n    \"orderId\": \"test\",\n    \"data\": {\n        \"multipayout\": [\n            {\n                \"label\": \"1\",\n                \"iban\": \"PL01100010100000001010010000\",\n                \"amount\": 102\n            },\n            {\n                \"label\": \"2\",\n                \"iban\": \"PL00101000000000001000100000\",\n                \"amount\": 201\n            }\n        ]\n    }\n}\n```\n"},{"title":"8.3.2 Pobranie profilu o podanym `cid`","content":"Aby pobrać profil płatnika o przypisanym numerze `cid`, należy wysłać zapytanie `GET`, na adres: \n\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/profile/cid/{cid}\n```\n\ngdzie:\n* `merchantId` - identyfikator klienta.\n* `cid` - identyfikator płatnika nadany przez akceptanta,\n\n#### Treść odpowiedzi\n\n```json\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"paymentProfiles\": [\n            {\n                \"id\": \"949058db-fe93-4d70-4384-96f7fc5728d2\",\n                \"firstName\": \"Jan\",\n                \"lastName\": \"Kowalski\",\n                \"maskedNumber\": \"411111****1111\",\n                \"month\": \"12\",\n                \"year\": \"2029\",\n                \"organization\": \"MASTERCARD\",\n                \"isActive\": 1,\n                \"profile\": \"RECURRING\"\n            },\n            {\n                \"id\": \"949058db-ae07-4ce8-4d70-a1ea1f80b7c2\",\n                \"firstName\": \"Jan\",\n                \"lastName\": \"Kowalski\",\n                \"maskedNumber\": \"411111****1111\",\n                \"month\": \"12\",\n                \"year\": \"2029\",\n                \"organization\": \"MASTERCARD\",\n                \"isActive\": 1,\n                \"profile\": \"RECURRING\"\n            }\n        ],\n        \"iqZ\": \"k9I\"\n    }\n}\n\n```\n"},{"title":"8.3.3 Pobranie profilu kartowego o podanym `id`","content":"Aby pobrać informację o profilu kartowym, należy wysłać zapytanie `GET`, na adres:\n\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/profile/id/{paymentProfileId}\n```\n\ngdzie:\n* `merchantId` - identyfikator klienta.\n* `paymentProfileId` - identyfikator profilu kartowego,\n\n#### Treść odpowiedzi\n\n```json\n\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"paymentProfile\": {\n            \"id\": \"addcabf2-5229-4d70-a175-67f7fc5728d1\",\n            \"firstName\": \"Jan\",\n            \"lastName\": \"Kowalski\",\n            \"maskedNumber\": \"411111****1111\",\n            \"month\": \"12\",\n            \"year\": \"2029\",\n            \"organization\": \"MASTERCARD\",\n            \"isActive\": 1,\n            \"profile\": \"RECURRING\"\n        },\n        \"qtt\": \"GHb\"\n    }\n}\n\n```\n"},{"title":"8.3.4 Dezaktywacja  profilu kartowego o podanym `id`","content":"Aby dezaktywować profil kartowy o podanym `id`, należy wysłać zapytanie `DELETE`, na adres:\n\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/profile/id/{paymentProfileId}\n```\n\ngdzie:\n* `merchantId` - identyfikator klienta.\n* `paymentProfileId` - identyfikator profilu kartowego,\n\n#### Treść odpowiedzi\n\n```json\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"paymentProfile\": {\n            \"id\": \"rfgcabf2-5229-4d70-a175-96f7fc3458d5\",\n            \"firstName\": \"Jan\",\n            \"lastName\": \"Kowalski\",\n            \"maskedNumber\": \"411111****1111\",\n            \"month\": \"12\",\n            \"year\": \"2029\",\n            \"organization\": \"MASTERCARD\",\n            \"isActive\": 0,\n            \"profile\": \"RECURRING\"\n        },\n        \"Jcd\": \"sBR\"\n    }\n}\n```\n"},{"title":"9. Pobieranie danych płatności","content":"Aby pobrać dane płatności należy wysłać żądanie `GET` na adres:\n\n```\nhttps://api.axepta.pl/v1/merchant/{merchantId}/payment/{paymentId}\n```\n\ngdzie:  \n\n- `merchantId` - identyfikator klienta,\n- `paymentId` - unikalny identyfikator płatności\n"},{"title":"9.1 HTTP Request","content":"### Przykładowy adres na który należy wysłać żądanie GET\n\n```\nhttps://api.axepta.pl/v1/merchant/6yt3gjtm9p7b8h9xsdqz/payment/1572084b-4b63-40a7-90b1-17199172a385\n```\n"},{"title":"9.2 HTTP Response","content":"W przypadku wykonania poprawnego zapytania dotyczącego pobrania danych transakcji serwer odpowie statusem HTTP `200` oraz informacją o płatności.\n\n### Odpowiedź serwera\n\n```json\n{\n    \"status\": \"SUCCESS\",\n    \"data\": {\n        \"payment\": {\n            \"id\": \"1572084b-4b63-40a7-90b1-17199172a385\",\n            \"url\": \"https://paywall.axepta.pl/pay/1572084b-4b63-40a7-90b1-17199172a385\",\n            \"serviceId\": \"10af53c6-35ce-4713-81ba-883501277d40\",\n            \"orderId\": \"123123123\",\n            \"amount\": \"100\",\n            \"amountPaid\": 0,\n            \"amountRefunded\": 0,\n            \"amountSubmittedRefund\": 0,\n            \"currency\": \"PLN\",\n            \"status\": \"new\",\n            \"isActive\": true,\n            \"createdAt\": 1631540831,\n            \"modifiedAt\": 1631540831,\n            \"isGenerated\": false,\n            \"isUsed\": false,\n            \"isConfirmVisited\": false,\n            \"returnUrl\": \"https://domain.com/return\",\n            \"failureReturnUrl\": \"https://domain.com/failure\",\n            \"successReturnUrl\": \"https://domain.com/success\",\n            \"customer\": {\n                \"firstName\": \"Jan\",\n                \"lastName\": \"Kowalski\",\n                \"email\": \"jan.kowalski@example.com\",\n                \"phone\": \"501501501\",\n                \"locale\": \"pl\",\n                \"cid\": \"123\"\n            }\n        }\n    }\n}\n```\n"},{"title":"10. Raporty - Dokumentacja API Report","content":"API umożliwia generowanie raportów transakcji w formatach CSV. \nRaporty mogą być wysyłane na email lub przez webhook.\n"},{"title":"10.1. Raporty - Autoryzacja","content":"Wszystkie endpointy wymagają Basic Authentication.\n**Header**: `Authorization: Basic \u003ckey\u003e`\n\nKlucz API znajduje się w [panelu administracyjnym Axepta](https://axepta.bnpparibas.pl/) \n\nKlucz jest dostępny dla użytkownika o roli Administrator.\n\nUstawienia -\u003e zakładka 'klucze API' -\u003e 'default' -\u003e 'szczegóły' -\u003e pozycja 'token autoryzacyjny'.\nNależy wybrać klucz **Raportowy**.\n"},{"title":"10.2. Typy raportów","content":"Typy raportów zostały opisane w podrozdziałach"},{"title":"10.2.1 Raport transakcji (CSV)","content":"Podstawowy raport transakcji w formacie CSV.\n\n**Request Body**:\n```json\n{\n  \"taskName\": \"report_csv\",\n  \"type\": \"transaction\",\n  \"columns\": [\n    \"transactionInternalId\",\n    \"transactionAmount\",\n    \"transactionStatus\",\n    \"transactionCreated\"\n  ],\n  \"conditions\": {\n    \"date\": {\n      \"from\": 1609459200,\n      \"to\": 1612137599,\n      \"timezone\": \"Europe/Warsaw\"\n    },\n    \"language\": \"EN\",\n    \"filters\": {\n      \"serviceUuid\": [\"service-uuid-1\", \"service-uuid-2\"],\n      \"paymentMethodCode\": [\"card\", \"blik\"],\n      \"transactionIsPaidOut\": [\"payout\", \"partial\"],\n      \"transactionStatus\": [\"settled\", \"pending\"],\n      \"transactionType\": [\"sale\", \"refund\"]\n    }\n  },\n  \"formatting\": {\n    \"columnSeparator\": \",\",\n    \"numberSeparator\": \".\"\n  },\n  \"destination\": {\n    \"email\": [\"admin@example.com\", \"report@example.com\"],\n    \"callbackUrl\": \"https://your-domain.com/webhook/report\"\n  }\n}\n```\n\n**Pola**:\n- `taskName` (string, wymagany) - `\"report_csv\"`\n- `type` (string, wymagany) - `\"transaction\"`\n- `columns` (array, wymagany) - Lista kolumn do uwzględnienia (min. 1)\n- `conditions` (object, wymagany):\n  - `date` (object, wymagany):\n    - `from` (number, wymagany) - Timestamp Unix w sekundach\n    - `to` (number, wymagany) - Timestamp Unix w sekundach\n    - `timezone` (string, opcjonalny) - Strefa czasowa w formacie TZ database (np. `\"Europe/Warsaw\"`, `\"UTC\"`) - domyślnie `\"Europe/Warsaw\"`\n  - `language` (string, opcjonalny) - `\"EN\"` lub `\"PL\"` (domyślnie PL)\n  - `filters` (object, opcjonalny):\n    - `serviceUuid` (array[string], opcjonalny) - Lista UUID serwisów\n    - `paymentMethodCode` (array[enum], opcjonalny) - Metody płatności\n    - `transactionIsPaidOut` (array[enum], opcjonalny) - Status wypłaty\n    - `transactionStatus` (array[enum], opcjonalny) - Status transakcji\n    - `transactionType` (array[enum], opcjonalny) - Typ transakcji\n- `formatting` (object, opcjonalny):\n  - `columnSeparator` (string, opcjonalny) - Separator kolumn w pliku CSV (np. `\",\"`, `\";\"`, `\"|\"`)\n  - `numberSeparator` (string, opcjonalny) - Separator dziesiętny w liczbach (np. `\".\"`, `\",\")`\n- `destination` (object, opcjonalny):\n  - `email` (array[string], opcjonalny) - Lista adresów email (max 64 znaków każdy)\n  - `callbackUrl` (string, opcjonalny) - URL webhooka\n\n---\n"},{"title":"10.2.2. Raport transakcji po wypłacie(CSV)","content":"Raport transakcji powiązanych z wypłatami.\n\n**Dostępność**: Tylko Panel\n\n**Request Body**:\n```json\n{\n  \"taskName\": \"report_csv\",\n  \"type\": \"transaction_on_payout\",\n  \"columns\": [\n    \"transactionInternalId\",\n    \"transactionAmount\",\n    \"transactionIsPaidOut\"\n  ],\n  \"conditions\": {\n    \"date\": {\n      \"from\": 1609459200,\n      \"to\": 1612137599,\n      \"timezone\": \"Europe/Warsaw\"\n    },\n    \"language\": \"PL\",\n    \"filters\": {\n      \"serviceUuid\": [\"service-uuid-1\"],\n      \"paymentMethodCode\": [\"card\"],\n      \"transactionStatus\": [\"settled\"],\n      \"transactionType\": [\"sale\"]\n    }\n  },\n  \"formatting\": {\n    \"columnSeparator\": \";\",\n    \"numberSeparator\": \",\"\n  },\n  \"destination\": {\n    \"email\": [\"finance@example.com\"],\n    \"callbackUrl\": \"https://your-domain.com/webhook/report\"\n  }\n}\n```\n\n**Pola**:\n- `taskName` (string, wymagany) - `\"report_csv\"`\n- `type` (string, wymagany) - `\"transaction_on_payout\"`\n- `columns` (array, wymagany) - Lista kolumn (min. 1)\n- `conditions` (object, wymagany):\n  - `date` (object, wymagany)\n  - `language` (string, opcjonalny)\n  - `filters` (object, opcjonalny) - **Uwaga**: Brak `transactionIsPaidOut` w tym typie!\n- `formatting` (object, opcjonalny)\n- `destination` (object, opcjonalny) - Jak w raporcie transakcji\n\n**Uwaga**:\n- Ten raport **NIE** obsługuje filtra `transactionIsPaidOut`.\n\n---\n"},{"title":"10.2.3. Raport rozliczeniowy transakcji (CSV)","content":"\nRaport tylko rozliczonych transakcji.\n\n**Dostępność**: Tylko Panel\n\n**Request Body**:\n```json\n{\n  \"taskName\": \"report_csv\",\n  \"type\": \"transaction_settled\",\n  \"columns\": [\n    \"transactionInternalId\",\n    \"transactionAmount\",\n    \"transactionSettled\"\n  ],\n  \"conditions\": {\n    \"date\": {\n      \"from\": 1609459200,\n      \"to\": 1612137599,\n      \"timezone\": \"Europe/Warsaw\"\n    },\n    \"filters\": {\n      \"serviceUuid\": [\"service-uuid-1\"],\n      \"paymentMethodCode\": [\"card\", \"blik\"],\n      \"transactionIsPaidOut\": [\"payout\"],\n      \"transactionType\": [\"sale\"]\n    }\n  },\n  \"formatting\": {\n    \"columnSeparator\": \",\",\n    \"numberSeparator\": \".\"\n  },\n  \"destination\": {\n    \"email\": [\"accounting@example.com\"]\n  }\n}\n```\n\n**Pola**:\n- `taskName` (string, wymagany) - `\"report_csv\"`\n- `type` (string, wymagany) - `\"transaction_settled\"`\n- `columns` (array, wymagany) - Lista kolumn (min. 1)\n- `conditions` (object, wymagany):\n  - `date` (object, wymagany)\n  - `filters` (object, opcjonalny) - **Uwaga**: Brak `transactionStatus` w tym typie!\n- `destination` (object, opcjonalny)\n\n**Uwaga**:\n- Ten raport **NIE** obsługuje filtra `transactionStatus`.\n- Obsługuje formatowanie przez `timezone` (w `date`), `columnSeparator` i `numberSeparator` (w `formatting`).\n\n---\n"},{"title":"10.3. Raport - Enumy","content":"\n### ReportTaskNameEnum\nTyp zadania raportu:\n- `report_csv` - Raport w formacie CSV\n\n\n### ReportTypeEnum\nTyp raportu:\n- `transaction` - Podstawowy raport transakcji\n- `transaction_on_payout` - Transakcje na wypłacie\n- `transaction_settled` - Tylko rozliczone transakcje\n\n### ReportStatusEnum\nStatus raportu:\n- `new` - Nowy, oczekuje na przetworzenie\n- `preparing` - Przygotowywanie danych\n- `prepared` - Dane przygotowane\n- `generating` - Generowanie pliku\n- `generated` - Raport wygenerowany i gotowy\n- `error` - Błąd podczas generowania\n- `deleted` - Raport usunięty\n- `cancelled` - Raport anulowany\n\n### ReportColumnEnum\nDostępne kolumny (wszystkie opcjonalne, wybierz potrzebne):\n\n**Quota (Zamówienie)**:\n- `quotaUuid` - UUID zamówienia\n- `quotaStatus` - Status zamówienia\n- `quotaAmount` - Kwota zamówienia\n- `quotaPayerFirstName` - Imię płacącego\n- `quotaPayerLastName` - Nazwisko płacącego\n- `quotaPayerPhone` - Telefon płacącego\n- `quotaPayerEmail` - Email płacącego\n\n**Payer (Płatnik)**:\n- `payerAccountNumber` - Numer konta płatnika\n\n**Transaction (Transakcja)**:\n- `transactionInternalId` - ID transakcji\n- `transactionType` - Typ transakcji (sale/refund)\n- `transactionAmount` - Kwota transakcji\n- `transactionMerchantOrderId` - ID zamówienia merchanta\n- `transactionTitle` - Tytuł transakcji\n- `transactionStatus` - Status transakcji\n- `transactionIsPaidOut` - Czy wypłacona\n- `transactionSettled` - Timestamp rozliczenia\n- `transactionCreated` - Timestamp utworzenia\n- `transactionModified` - Timestamp modyfikacji\n- `transactionRelatedInternalId` - ID powiązanej transakcji\n- `transactionFeeAmount` - Kwota prowizji\n\n**Payment Method (Metoda płatności)**:\n- `paymentMethodName` - Nazwa metody płatności\n- `paymentMethodCode` - Kod metody płatności\n- `paymentMethodChannelName` - Nazwa kanału płatności\n- `paymentMethodChannelCode` - Kod kanału płatności\n\n**Service (Serwis)**:\n- `serviceUuid` - UUID serwisu\n- `serviceName` - Nazwa serwisu\n\n**Currency (Waluta)**:\n- `currencyIso4217` - Kod waluty ISO 4217\n\n\n\n### PaymentMethodCodeEnum\nMetody płatności:\n- `blik` - BLIK\n- `card` - Karta płatnicza\n- `pbl` - Przelew bankowy (Pay by Link)\n- `wallet` - Portfel elektroniczny\n\n### TransactionStatusEnum\nStatusy transakcji:\n- `new` - Nowa\n- `pending` - Oczekująca\n- `authorized` - Autoryzowana\n- `submitted_for_settlement` - Wysłana do rozliczenia\n- `settled` - Rozliczona\n- `rejected` - Odrzucona\n- `error` - Błąd\n- `cancelled` - Anulowana\n\n### TransactionTypeEnum\nTypy transakcji:\n- `sale` - Sprzedaż\n- `refund` - Zwrot\n\n### TransactionPaidOutEnum\nStatus wypłaty:\n- `payout` - Wypłacona w całości\n- `partial` - Częściowo wypłacona\n- `not_payout` - Nie wypłacona\n\n### ReportFrequencyEnum\nCzęstotliwość generowania zaplanowanych raportów:\n- `day` - Codziennie (raport za poprzedni dzień)\n- `week` - Co tydzień (raport za poprzedni tydzień)\n- `month` - Co miesiąc (raport za poprzedni miesiąc)\n\n**Uwaga**: Stosuje się tylko do zaplanowanych raportów (planned reports).\n\n### LanguageCode\nJęzyk raportu (nagłówki kolumn):\n- `EN` - Angielski\n- `PL` - Polski\n\n### Timezone\nStrefa czasowa używana do formatowania dat i czasu w raporcie:\n- **Lokalizacja**: W obiekcie `conditions.date.timezone`\n- Format: TZ database (np. `\"Europe/Warsaw\"`, `\"America/New_York\"`)\n- Domyślnie: `\"Europe/Warsaw\"`\n- Pełna lista dostępnych stref: [TZ database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)\n\n### Formatting (obiekt)\nObiekt `formatting` zawiera ustawienia formatowania pliku CSV:\n\n**Column Separator** (`columnSeparator`):\n- `,` (przecinek)\n- `;` (średnik)\n- `|` (pionowa kreska)\n- `\\t` (tabulacja)\n\n**Number Separator** (`numberSeparator`):\n- `.` (kropka)\n- `,` (przecinek)\n\n---\n"},{"title":"10.4. Webhook","content":"\nJeśli podasz `callbackUrl` w `destination`, system wyśle webhook po wygenerowaniu raportu.\n\n### Webhook Request\n\n**Method**: `POST`\n**URL**: Twój `callbackUrl`\n**Headers**:\n```\nContent-Type: application/json\n```\n\n**Body** (identyczny jak response GET):\n```json\n{\n  \"uuid\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"plannedReportUuid\": \"650e8400-e29b-41d4-a716-446655440001\",\n  \"taskName\": \"report_csv\",\n  \"type\": \"transaction\",\n  \"status\": \"generated\",\n  \"settings\": {\n    \"columns\": [\"transactionInternalId\", \"transactionAmount\"],\n    \"conditions\": {\n      \"date\": {\n        \"from\": 1609459200,\n        \"to\": 1612137599\n      },\n      \"filters\": {\n        \"transactionStatus\": [\"settled\"]\n      }\n    },\n    \"destination\": {\n      \"email\": [\"report@example.com\"]\n    }\n  },\n  \"generatedAt\": 1612137600\n}\n```\n\n**Uwaga**: Pole `plannedReportUuid` będzie obecne tylko jeśli raport został wygenerowany z zaplanowanego raportu. Dla raportów jednorazowych (utworzonych przez `POST /report`) pole to będzie `null` lub nieobecne.\n\n### Obsługa webhooka\n\n1. **Webhook jest wysyłany gdy**: `status` osiągnie stan końcowy (`generated`, `error`, `deleted`, `cancelled`)\n2. **Wymagana odpowiedź**: Serwer **MUSI** odpowiedzieć kodem HTTP **200** z body:\n  ```json\n  {\n    \"status\": \"ok\"\n  }\n  ```\n3. **Retry**: Jeśli webhook zwróci błąd (kod inny niż 200) lub timeout, system będzie automatycznie ponawiał wysyłkę\n\n**Przykład poprawnej obsługi webhooka** (Node.js/Express):\n```javascript\napp.post('/webhook/report', (req, res) =\u003e {\n  const report = req.body;\n\n  console.log(`Raport ${report.uuid} ma status: ${report.status}`);\n\n  if (report.status === 'generated') {\n    // Raport gotowy - pobierz plik lub wyślij powiadomienie\n    console.log(`Raport wygenerowany: ${report.generatedAt}`);\n  } else if (report.status === 'error') {\n    // Błąd generowania\n    console.error(`Błąd generowania raportu ${report.uuid}`);\n  }\n\n  // WAŻNE: MUSISZ odpowiedzieć 200 z { status: \"ok\" }\n  res.status(200).json({ status: 'ok' });\n});\n```\n\n---\n\n## Przykłady użycia\n\n### Prosty raport transakcji\n```bash\ncurl -X POST \"https://api.example.com/v1/merchant/MERCHANT123/report\" \\\n  -H \"Authorization: Basic dXNlcjpwYXNz\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"taskName\": \"report_csv\",\n    \"type\": \"transaction\",\n    \"columns\": [\"transactionInternalId\", \"transactionAmount\", \"transactionStatus\"],\n    \"conditions\": {\n      \"date\": {\n        \"from\": 1609459200,\n        \"to\": 1612137599,\n        \"timezone\": \"Europe/Warsaw\"\n      }\n    }\n  }'\n```\n\n### Raport z filtrowaniem i webhookiem\n```bash\ncurl -X POST \"https://api.example.com/v1/merchant/MERCHANT123/report\" \\\n  -H \"Authorization: Basic dXNlcjpwYXNz\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"taskName\": \"report_csv\",\n    \"type\": \"transaction\",\n    \"columns\": [\"transactionInternalId\", \"transactionAmount\", \"transactionStatus\"],\n    \"conditions\": {\n      \"date\": {\n        \"from\": 1609459200,\n        \"to\": 1612137599,\n        \"timezone\": \"Europe/Warsaw\"\n      },\n      \"language\": \"PL\",\n      \"filters\": {\n        \"paymentMethodCode\": [\"card\", \"blik\"],\n        \"transactionStatus\": [\"settled\"]\n      }\n    },\n    \"formatting\": {\n      \"columnSeparator\": \";\",\n      \"numberSeparator\": \",\"\n    },\n    \"destination\": {\n      \"email\": [\"report@example.com\"],\n      \"callbackUrl\": \"https://your-domain.com/webhook/report\"\n    }\n  }'\n```\n\n### Pobranie raportu\n```bash\ncurl -X GET \"https://api.example.com/v1/merchant/MERCHANT123/report/550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Authorization: Basic \u003ckey\u003e\"\n```\n\n### Pobranie pliku raportu\n```bash\ncurl -X GET \"https://api.example.com/v1/merchant/MERCHANT123/report/550e8400-e29b-41d4-a716-446655440000/download\" \\\n  -H \"Authorization: Basic \u003ckey\u003e\" \\\n  -o raport.csv\n```\n\n### Tworzenie zaplanowanego raportu\n```bash\ncurl -X POST \"https://api.example.com/v1/merchant/MERCHANT123/planned-report\" \\\n  -H \"Authorization: Basic \u003ckey\u003e\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"taskName\": \"report_csv\",\n    \"type\": \"transaction\",\n    \"columns\": [\"transactionInternalId\", \"transactionAmount\", \"transactionStatus\"],\n    \"conditions\": {\n      \"date\": {\n        \"timezone\": \"Europe/Warsaw\"\n      },\n      \"language\": \"PL\"\n    },\n    \"formatting\": {\n      \"columnSeparator\": \";\",\n      \"numberSeparator\": \",\"\n    },\n    \"destination\": {\n      \"email\": [\"report@example.com\"]\n    },\n    \"frequency\": \"day\",\n    \"activeFrom\": 1609459200,\n    \"isActive\": true,\n    \"name\": \"Dzienny raport transakcji\"\n  }'\n```\n\n### Aktualizacja zaplanowanego raportu\n```bash\ncurl -X PUT \"https://api.example.com/v1/merchant/MERCHANT123/planned-report/550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Authorization: Basic \u003ckey\u003e\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"isActive\": false,\n    \"frequency\": \"week\"\n  }'\n```\n"},{"title":"11. Sandbox","content":"Axepta oferuje tryb testowy sandbox w ramach weryfikacji poprawności działania integracji.\n\u003cbr\u003e\nŚrodowisko testowe sandbox można znaleźć przechodząc na stronę: [https://axepta.sandbox.bnpparibas.pl/](https://axepta.sandbox.bnpparibas.pl/)\n\u003cbr\u003e\nChcąc utworzyć nowe konto należy kliknąć `Utwórz konto Akceptanta`, a następnie podać adres e-mail, na który zostanie wysłany link do aktywacji konta.\nPo aktywacji konta wystarczy zalogować się wygenerowanym loginem oraz nadanym wcześniej hasłem.\nDo konta zostanie przypisany sklep testowy, który posiadać będzie swoje klucze integracyjne.\n\n**Sandbox URL:** `https://api.sandbox.axepta.pl`\n"},{"title":"11.1. Karty na środowisku sandbox.","content":"W celu przetestowania płatności kartą, należy użyć poniższych danych.\n\n| Card issuer | Number           | Month | Year | CVV | 3-D Secure  | Behavior                    |\n|-------------|------------------|-------|------|-----|-------------|-----------------------------|\n| Visa        | 4012001007002005 | 12    | 29   | 123 | no          | Błąd dostawcy               |\n| Visa        | 4111111111111111 | 12    | 29   | 123 | no          | Płatność zrealizowana       |\n"},{"title":"11.2. Transakcje PBL na środowisku sandbox.","content":"W celu przetestowania transakcji PBL, należy użyć poniższych danych.\n\n| Title         | Behavior                                      |\n|---------------|-----------------------------------------------|\n| TEST-100010   | Błąd dostawcy                                 |\n"},{"title":"11.3. BLIK na środowisku sandbox.","content":"W celu przetestowania transakcji BLIK, należy użyć poniższych danych.\n\n| Code          | Odpowiedź                                      |\n|---------------|------------------------------------------------|\n| 777000        | Zrealizowana                                   |\n\n# Testowanie błędów asynchronicznych\n      API Axepta umożliwia testowanie płatności Blik poprzez symulację błędów asynchronicznych za pomocą parametrów kwoty, tytułu i 'blikCode'.\n\n# Testowanie błędów asynchronicznych za pomocą `blikCode`\n      Oto tabela przedstawiająca dostarczone kody Blik i ich statusy:\n\n| blikCode  | Status                            | Kod statusu        |\n|-----------|-----------------------------------|----------------------|\n| 999000    | SETTLED    |                      |\n| 912111    | REJECTED   | ALIAS_DECLINED       |\n| 927111    | REJECTED   | TAS_DECLINED         |\n| 934111    | REJECTED   | USER_DECLINED        |\n| 969111    | REJECTED   | SEC_DECLINED         |\n| 956111    | REJECTED   | SYSTEM_ERROR         |\n| 961111    | REJECTED   | GENERAL_ERROR        |\n| 960111    | REJECTED   | INSUFFICIENT_FUNDS   |\n| 989111    | REJECTED   | TIMEOUT              |\n| 990111    | REJECTED   | LIMIT_EXCEEDED       |\n| 949111    | REJECTED   | USER_TIMEOUT         |\n| 902111    | REJECTED   | ISSUER_DECLINED      |\n\n- Ważna uwaga!\n\n\u003ePomimo że status transakcji jest ustawiony na \"Odrzucona\", na końcu procesu transakcji wysyłane jest dodatkowe asynchroniczne powiadomienie. To powiadomienie zawiera odpowiednie `StatusCode`.\n\n#Testowanie błędów asynchronicznych za pomocą `amount`\n    Oto tabela przedstawiająca wartości podanych wartości i ich statusy. \n    Do testowania błędów z ilościami powinieneś użyć 'blikCode': 777 xxx (gdzie xxx może mieć dowolną cyfrę)..\n\n| amount | Status                          | Kod statusu         |\n|-----------|---------------------------------|----------------------|\n| 28800     | REJECTED   | ALIAS_DECLINED       |\n| 19200     | REJECTED   | TAS_DECLINED         |\n| 14400     | REJECTED   | USER_DECLINED        |\n| 21600     | REJECTED   | SEC_DECLINED         |\n| 26400     | REJECTED   | SYSTEM_ERROR         |\n| 36000     | REJECTED   | GENERAL_ERROR        |\n| 12000     | REJECTED   | INSUFFICIENT_FUNDS   |\n| 31200     | REJECTED   | TIMEOUT              |\n| 9600      | REJECTED   | LIMIT_EXCEEDED       |\n| 33600     | REJECTED   | USER_TIMEOUT         |\n| 16800     | REJECTED   | ISSUER_DECLINED      |\n\n#Testowanie błędów synchronicznych\n    API Axepta umożliwia testowanie płatności Blik poprzez symulację błędów synchronicznych za pomocą wartości 'blikCode'.\n\n#Generowanie błędów synchronicznych za pomocą 'blikCode'\n    Oto tabela przedstawiająca wartości i statusy transakcji w 'blikCode':\n    \n| blikCode  | Status                          | Status Code          |\n|-----------|---------------------------------|----------------------|\n| 123444    | REJECTED    | ER_WRONG_TICKET                     | \n"},{"title":"12. Minimalne i maksymalne wartości kwot transakcji, zwrotów.","content":"Dla każdej metody płatności obowiązują następujące limity:\n\n| Metoda płatności            | Minimalna kwota płatności (PLN) | Maksymalna kwota płatności (PLN) |\n|-----------------------------|---------------------------------| ---------------------------------|\n| Przelewy online Pay-By-Link | 0.37 (0.50)*                    | 999 999.99                       |\n| Płatność za pomocą BLIK     | 0.1                             | 50 000                           |     \n| Płatność kartą              | 0.05                            | 999 999.99                       |\n| Płatność walletami          | 0.05                            | 999 999.99                       |\n| Płatność oneclick           | 0.05                            | 999 999.99                       |\n| Płatność recurring          | 0.05                            | 999 999.99                       |\n\n\n(*) Dla nestPrzelew, Płacę z Plus Bank oraz Spółdzielcza Grupa Bankowa wynosi 0.50 PLN\n\n\n| Metoda płatności            | Minimalna kwota płatności (EUR) | Maksymalna kwota płatności (EUR) |\n|-----------------------------|---------------------------------| ---------------------------------|\n| Płatność kartą              | 0.01                            | 999 999.99                       |\n| Płatność walletami          | 0.01                            | 999 999.99                       |\n| Płatność oneclick           | 0.01                            | 999 999.99                       |\n| Płatność recurring          | 0.01                            | 999 999.99                       |\n\n\u003cb\u003ePoza tymi progami dana metoda płatności nie jest dostępna. \u003cb\u003e\n"},{"title":"Kolekcja postman","content":"[Pobierz kolekcje postmana.](https://data.axepta.pl/example/axepta_postman.zip)\n\nAby korzystać z zamieszczone kolekcji postmana należy dodać swoje klucze ze środowiska testowego.\n\n\u003e [Opis sandbox](https://bump.sh/pgw/doc/axepta-api/pl/topic/topic-11-sandbox)\n"}]}