Do podstawowego zapytania tworzącego transakcję zgodnie z opisem punktu Utworzenie płatności 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
$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
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
$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
H4sIAAAAAAAACm2QXU+DMBSG/4rp9eaAQjRcSfBmiUOSodE4s3TQaUM/EE51jPDfPe3inZfneT/6phMR+tuImq8bkpIg3q3CaLeKKFmQgx15T9KJwNhxFPPHTZkVr6iIprqg56zar+89Kaw6ODtJaBJHNKG3N8i5YkIi1Oz8w46iV+MdPzHVSX5dG4WGo5WyYMqVFc5z5U0oDNBzDoifpKgZglrAiOdGsAEM3p0ZgMncNC4bRksaJ85lrIZ+dDiT3SeLUCwf/ML8f2n2VQKE0QNJ3ybc6ueUvWlsC77Tv9FdwDIIkX1ZpsEvChfEauGWbs9gW4EisNMWWOtCVfay97/50ZthyJTbgJmIBoH3/REH5vf5FyK2JcWPAQAA
Przykładowa zawartość formularza
<input type="hidden" value="63f574ed-d90d-4abe-9cs1-39117584a7b7" name="serviceId">
<input type="hidden" value="6yt3gjtm9p1odfgx8491" name="merchantId">
<input type="hidden" value="12300" name="amount">
<input type="hidden" value="PLN" name="currency">
<input type="hidden" value="Split payment" name="orderId">
<input type="hidden" value="Split payment" name="orderDescription">
<input type="hidden" value="Jan" name="customerFirstName">
<input type="hidden" value="Kowalski" name="customerLastName">
<input type="hidden" value="jan.kowalski@example.com" name="customerEmail">
<input type="hidden" value="501501501" name="customerPhone">
<input type="hidden" value="wt" name="visibleMethod">
<input type="hidden" value="https://domain.com/success" name="urlSuccess">
<input type="hidden" value="https://domain.com/failure" name="urlFailure">
<input type="hidden" value="https://domain.com/return" name="urlReturn">
<input type="hidden" value="<?= $invoice ?>" name="invoice">