# 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
```