# ING Księgowość Opcja dostępna w przypadku **włączonej** usługi ING Księgowość. 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 | |-------------------|-----------------------------------------------|-|-| | `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 lub 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`.**| | `discountAmount` | integer | `NIE` | Wartość upustu | W przypadku zwolnienia z podatku, odpowiednie dane należy przekazać w zapytaniu, korzystając z obiektu `basisForVatExemption` z parametrami: | Parametr | Typ | Parametr wymagany | Opis | |-------------------|-----------------------------------------------|-|-| | `type` | string | `NIE` | **Dostępne wartości:**
`DENTAL_TECHNICAN_SERVICES`,
`DOCTOR_DENTIST_SERVICES`,
`PHYSIOTHERAPY_SERVICES`,
`NURSING_SERVICES`,
`PSYCHOLOGICAL_SERVICES`,
`MEDICAL_TRANSPORT_SERVICES`,
`CARE_SERVICES`,
`TUTORING`,
`TEACHING_FOREIGN_LANGUAGES`,
`ARTISTS`,
`RENTING_PROPERTY`,
`INSURANCE_SERVICES`,
`CREDITS_AND_LOANS_SERVICES`,
`GUARANTIEES`,
`SPECIAL_CONDITIONS_FOR_EXEMPTION`,
`UE_TRANSACTIONS`,
`SUBJECTIVE_EXEMPTIONS`,
`OTHER`,
`OTHER_OBJECTIVE_EXEMPTIONS` | | `text` | string | `NIE` | Opis. Parametr niezbędny w przypadku podania w parametrze `type` wartości `OTHER` Dodatkowo możliwe jest wskazanie, czy faktura ma być automatycznie wysyłana za pomocą parmetru: | Parametr | Typ | Parametr wymagany | Opis | |-------------------|-----------------------------------------------|-|-| | `issueInvoice` | boolean | `NIE` | Automatyczna wysyłka faktury | ## Przykładowa struktura danych ```php $invoiceData = [ "buyer" => [ "type" => "PERSON", "email" => "jan.kowalski@example.com", "fullName" => "Jan Kowalski", "street" => "Street", "city" => "City", "postalCode" => "12-345", "countryCodeAlpha2" => "PL", ], "positions" => [ [ "name" => "Produkt", "code" => "produkt-01", "quantity" => 1, "unit" => "Sztuki", "taxStake" => "TAX_23", "grossAmount" => 12300, ], ], ]; ``` 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 = [ "buyer" => [ "type" => "PERSON", "email" => "jan.kowalski@example.com", "fullName" => "Jan Kowalski", "street" => "Street", "city" => "City", "postalCode" => "12-345", "countryCodeAlpha2" => "PL", ], "positions" => [ [ "name" => "Produkt", "code" => "produkt-01", "quantity" => 1, "unit" => "Sztuki", "taxStake" => "TAX_23", "grossAmount" => 12300, ], ], ]; $invoice = base64_encode(gzencode(json_encode($invoiceData), 5)); $fields = [ 'serviceId' => '63f574ed-d90d-4abe-9cs1-39117584a7b7', 'merchantId' => '6yt3gjtm9p1odfgx8491', 'amount' => '12300', 'currency' => 'PLN', 'orderId' => '123', 'orderDescription' => '#Example transaction', 'customerFirstName' => 'Jan', 'customerLastName' => 'Kowalski', 'customerEmail' => 'jan.kowalski@example.com', 'customerPhone' => '515515515', 'urlSuccess' => 'https://your-shop.com/success', 'urlFailure' => 'https://your-shop.com/failure', 'urlReturn' => 'https://your-shop.com/return', 'invoice' => $invoice, ]; $serviceKey = 'eAyhFLuHgwl5hu-32GM8QVlCVMWRU0dGjH1c'; $hashMethod = 'sha256'; $signature= createSignature( $fields, $serviceKey, $hashMethod ) . ';' . $hashMethod; ``` ## Przykład zakodowanego obiektu invoice ```php H4sIAAAAAAAAA0WOQQvCNAyF/4rkPGWbenAnh3gTFedBEJGqVcu6dq4pOMf+u8MYeAnJl/fy0sDF17KCpAGsSwkJbJe7bLOGAGQhlCaA0uGcy6jUhO9e67UoZL8zcCHssJISfzAiclVY9zNNpXUo9MLe2BjFw/KkyhrrDVY141SXTxHzAytoO71CZY2D5NiA+QfGna07M6P25YXBLikKwBvFL2Qf9LmiJYp3hiJn7T49nENCj8o6lxacS5ZpGLan9gsKdX5sBQEAAA== ``` ## Przykładowa zawartość formularza ```html ```