# Przelewy tradycyjne Split Payment Do podstawowego zapytania tworzącego transakcję zgodnie z opisem punktu [Utworzenie płatności](#topic-utworzenie-platnosci) należy załączyć obiekt `invoice`. Obiekt ten składa się z obiektu `buyer` oraz tablicy `positions` z następujacymi parametrami: Obiekt `buyer`: | Parametr | Typ | Parametr wymagany | Opis | |-----------------------|-------------|-------------------|------| | `invoiceId` | string | `TAK` | Numer faktury | | `type` | string | `TAK` | Przyjmuje wartość `PERSON` (*odbiorca indywidualny*) lub `COMPANY` (*firma*) | | `email` | string(200) | `TAK` | Adres e-mail w formacie zgodnym ze standardem RFC 5322 oraz RFC 6531 | | `fullName` | string(200) | `TAK` | Imię i nazwisko nabywcy/nazwa firmy,
**dopuszczalne znaki:** A-Za-z0-9#_-./ oraz znak spacji(0x20) i znaki z zakresu UNICODE 00C0 - 02C0 (m.in. polskie znaki diakrytyczne), 0400 - 04FF (cyrylica) | | `street` | string(200) | `TAK` | Ulica | | `city` | string(100) | `TAK` | Miasto | | `postalCode` | string(30) | `TAK` | Kod pocztowy | | `countryCodeAlpha2` | string(2) | `TAK` | Kod kraju `Alpha2` | | `idCountryCodeAlpha2` | string(2) | `NIE` | Identyfikator kodu kraju `Alpha2`. Wymagane dla wartości `VAT_ID` parametru `idType` | | `idType` | string | `NIE` | Typ numeru identyfikacyjnego. Wymagane dla wartości `COMPANY` parametru `type`. Przyjmuje wartość `ID` (*PESEL*) lub `VAT_ID` (*NIP*) | | `idNumber` | string(30) | `NIE` | NIP lub numer PESEL. Wymagane w przypadku wartości `COMPANY` dla parametru `type` | Tablica `positions`: | Parametr | Typ | Parametr wymagany | Opis | |------------------|----------------|-------------------|------| | `name` | string | `TAK` | Nazwa produktu | | `code` | string | `TAK` | Kod produktu | | `quantity` | number | `TAK` | Ilość. **Minimalna wartość to 0** | | `unit` | string | `TAK` | Jednostka | | `grossAmount` | integer | `TAK` | Wartość jednostkowa brutto | | `taxStake` | string, number | `TAK` | Stawka podatku. **Dostępne wartości**: `TAX_23`, `TAX_22`, `TAX_8`, `TAX_7`, `TAX_5`, `TAX_3`, `TAX_0`, `TAX_EXEMPT`, `TAX_NOT_LIABLE`, `TAX_REVERSE_CHARGE`, `TAX_EXCLUDING`. **Typ string** dla `TAX_23` lub **numeryczny dla `23`.**| | `taxAmount` | integer | `TAK` | Wartość podatku w groszach | | `discountAmount` | integer | `NIE` | Wartość upustu | ### Przykładowa struktura danych ```php $invoiceData = [ "invoiceId" => "04/12/23", "buyer" => [ "type" => "COMPANY", "idType" => "VAT_ID", "idNumber" => "5354235387", "email" => "nazwafirmy@example.com", "fullName" => "Nazwa firmy", "street" => "Ulica", "city" => "Miasto", "postalCode" => "12-345", "countryCodeAlpha2" => "PL", "idCountryCodeAlpha2" => "PL" ], "positions" => [ [ "name" => "Produkt", "code" => "produkt-01", "quantity" => 1, "unit" => "Sztuki", "taxStake" => "TAX_23", "grossAmount" => 12300, "taxAmount" => 2300 ], ], ]; ``` Powyższe parametry należy uwzględnić podczas wyliczania sygnatury zgodnie z punktem [Autoryzacja](#topic-autoryzacja) ### Przygotowanie obiektu invoice ### Za pomocą funkcji PHP Dane zebrane z powyższych parametrów należy zakodować za pomocą funkcji: `base64_encode(gzencode(json_encode($invoiceData), 5));` gdzie: `$invoiceData` - przygotowane wcześniej parametry ```php $invoiceData = [ "invoiceId" => "04/12/23", "buyer" => [ "type" => "COMPANY", "idType" => "VAT_ID", "idNumber" => "5354235387", "email" => "nazwafirmy@example.com", "fullName" => "Nazwa firmy", "street" => "Ulica", "city" => "Miasto", "postalCode" => "12-345", "countryCodeAlpha2" => "PL", "idCountryCodeAlpha2" => "PL" ], "positions" => [ [ "name" => "Produkt", "code" => "produkt-01", "quantity" => 1, "unit" => "Sztuki", "taxStake" => "TAX_23", "grossAmount" => 12300, "taxAmount" => 2300 ], ], ]; $invoice = base64_encode(gzencode(json_encode($invoiceData), 5)); $fields = [ 'serviceId' => '63f574ed-d90d-4abe-9cs1-39117584a7b7', 'merchantId' => '6yt3gjtm9p1odfgx8491', 'amount' => '12300', 'currency' => 'PLN', 'orderId' => 'Split payment', 'orderDescription' => 'Split payment', 'customerFirstName' => 'Jan', 'customerLastName' => 'Kowalski', 'customerEmail' => 'jan.kowalski@example.com', 'customerPhone' => '501501501', 'visibleMethod' => 'wt', 'urlSuccess' => 'https://domain.com/success', 'urlFailure' => 'https://domain.com/failure', 'urlReturn' => 'https://domain.com/return', 'invoice' => $invoice, ]; $serviceKey = 'eAyhFLuHgwl5hu-32GM8QVlCVMWRU0dGjH1c'; $hashMethod = 'sha256'; $signature= createSignature( $fields, $serviceKey, $hashMethod ) . ';' . $hashMethod; ``` ### Przykład zakodowanego obiektu invoice ```php H4sIAAAAAAAACm2QXU+DMBSG/4rp9eaAQjRcSfBmiUOSodE4s3TQaUM/EE51jPDfPe3inZfneT/6phMR+tuImq8bkpIg3q3CaLeKKFmQgx15T9KJwNhxFPPHTZkVr6iIprqg56zar+89Kaw6ODtJaBJHNKG3N8i5YkIi1Oz8w46iV+MdPzHVSX5dG4WGo5WyYMqVFc5z5U0oDNBzDoifpKgZglrAiOdGsAEM3p0ZgMncNC4bRksaJ85lrIZ+dDiT3SeLUCwf/ML8f2n2VQKE0QNJ3ybc6ueUvWlsC77Tv9FdwDIIkX1ZpsEvChfEauGWbs9gW4EisNMWWOtCVfay97/50ZthyJTbgJmIBoH3/REH5vf5FyK2JcWPAQAA ``` ### Przykładowa zawartość formularza ```html ```