API

Tworzenie wniosku kredytowego

Tworzy nowy wniosek kredytowy wraz z danymi koszyka i klienta.

Tworzenie wniosku kredytowego

  • Wszystkie kwoty przesyłane do API muszą być typu int i podane w groszach.
  • Zapytanie jest weryfikowane pod kątem poprawności przesyłanych wartości.
  • Zamówienie może zawierać rabaty, które pomniejszają wartość koszyka i kredytu.
  • Zamówienie może zawierać dodatkowe koszty wynikające z obsługi zamówienia.
  • W szczególnych przypadkach możliwa jest późniejsza zmiana kwoty zamówienia.

Zapytanie:

curl -X POST 'http://{HOST_API}/v1/orders' \
--header 'API-KEY: {API-KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "notifyUrl": "https://your-shop.tld/notify",
  "returnUrl": "https://your-shop.tld/thanks",
  "orderId": "{twój_identyfikator_zamówienia}",
  "loanParameters": {
      "term": 123,
      "type": "INSTALLMENTS_ZERO_PERCENT",
      "allowedProductTypes": ["INSTALLMENTS_ZERO_PERCENT","PAY_LATER"]
  },
  "cart": {
      "category": "KATEGORIA ZE SŁOWNIKA",
      "totalAmount": 443907,
      "deliveryCost": 1230,
      "deliveryNetCost": 1000,
      "deliveryCostVatRate": 23,
      "deliveryCostVatAmount": 230,
      "products": [
          {
              "name": "Lenovo Ideapad 120S-14IAP",
              "quantity": 1,
              "price": 246000,
              "netPrice": 200000,
              "vatRate": 23,
              "vatAmount": 46000,
              "photoUrl": "01e5f8",
              "ean": "9002490100070",
              "externalId": "123",
              "category": "productCategory"
          },
          {
              "name": "Lenovo Ideapad 120S-14IAP",
              "quantity": 1,
              "price": 196677,
              "netPrice": 159900,
              "vatRate": 23,
              "vatAmount": 36777,
              "photoUrl": "01e5f8",
              "ean": "9002490100070",
              "externalId": "123",
              "category": "productCategory"
          }
      ]
  },
  "customer": {
      "firstName": "John",
      "lastName": "John",
      "taxId": null,
      "email": "customer@example.com",
      "phoneNumber": "312213213",
      "ip": "ip klienta",
      "regular": false,
      "logged": false,
      "address": {
          "street": "Różana",
          "buildingNumber": "1",
          "apartmentNumber": "1",
          "postalCode": "10-899",
          "city": "Warszawa",
          "countryCode": "PL"
      }
  },
  "seller": {
      "taxId": "1234567890"
  },
  "accountNumber": "75114011244753619198148640",
  "transferTitle": "Płatność za zamówienie 1234ABCDE"
}'

Parametry żądania

PoleTypWymaganeOpis
notifyUrlstringnieURL powiadomień (max. 255 znaków alfanumerycznych).
returnUrlstringtakURL powrotu po zakończeniu wniosku (max. 255 znaków alfanumerycznych).
orderIdstringtakIdentyfikator zamówienia (max. 36 znaków alfanumerycznych).
loanParametersobjecttakParametry kredytu w formacie JSON.
cartobjecttakKoszyk w formacie JSON.
customerobjecttakDane klienta w formacie JSON.
sellerobjectnieDane sprzedawcy w formacie JSON. Dla konta merchant pomijane; dla marketplace wymagane — NIP musi być wcześniej zdefiniowany metodą sale-point-add.
accountNumberstringnieNumer konta bankowego (max. 26 cyfr).
transferTitlestring, nullnieTytuł przelewu od Comfino do sklepu (max. 140 znaków). Jeśli nie podano, Comfino użyje wartości pola orderId.

loanParameters

PoleTypWymaganeOpis
termint, nullnieLiczba rat (wartość numeryczna lub null).
typestring, nullnieTyp produktu — null lub wartość ze słownika typów.
allowedProductTypesarray, nullnieTablica typów ze słownika ograniczająca listę ofert na wniosku. Wartość null znosi ograniczenia; pusta tablica [] blokuje wyświetlanie ofert.

cart

PoleTypWymaganeOpis
categorystringnieKategoria koszyka (znaki alfanumeryczne).
totalAmountinttakSuma brutto wszystkich produktów wraz z kosztem dostawy w groszach.
deliveryCostint, nullnieKoszt dostawy brutto w groszach.
deliveryNetCostint, nullnieKoszt dostawy netto w groszach.
deliveryCostVatRateint, nullnieStawka VAT kosztu dostawy (null — VAT ZW).
deliveryCostVatAmountint, nullnieWartość VAT kosztu dostawy w groszach.
productsarraytakLista produktów w formacie JSON.

cart.product

PoleTypWymaganeOpis
namestringtakNazwa produktu (znaki alfanumeryczne).
quantityinttakIlość sztuk.
priceinttakCena brutto w groszach.
netPriceint, nullnieCena netto w groszach.
vatRateint, nullnieStawka VAT (null — VAT ZW).
vatAmountint, nullnieWartość VAT w groszach.
photoUrlstring, nullnieURL zdjęcia produktu.
eanstring, nullnieKod EAN produktu.
externalIdstring, nullnieZewnętrzny identyfikator produktu.
categorystring, nullnieKategoria produktu lub wartości związane z dodatkowymi opłatami i rabatami.

customer

PoleTypWymaganeOpis
firstNamestring, nulltakImię (min. 2, max. 63 znaki). Jeśli sklep przechowuje imię i nazwisko w jednym polu, przekazuje pierwszy człon po podziale po spacji.
lastNamestring, nulltakNazwisko (min. 2, max. 63 znaki). Jeśli sklep przechowuje imię i nazwisko w jednym polu, przekazuje wszystko od drugiego członu.
taxIdstring, nullnieNIP klienta.
emailstringtakAdres e-mail klienta.
phoneNumberstringtakNumer telefonu (9 cyfr).
ipstringtakAdres IP klienta (IPv4 lub IPv6).
regularbool, nullnieStały klient / ponowny zakup.
loggedbool, nullnieCzy klient jest zalogowany.
addressobject, nullnieAdres klienta w formacie JSON.

customer.address

PoleTypWymaganeOpis
streetstring, nullnieUlica.
buildingNumberstring, nullnieNumer budynku.
apartmentNumberstring, nullnieNumer lokalu.
postalCodestring, nullnieKod pocztowy.
citystring, nullnieMiasto.
countryCodestring, nullnieKod kraju.

seller

PoleTypWymaganeOpis
taxIdstring, nullnieNIP sprzedawcy (10 znaków alfanumerycznych).

Dodatkowe koszty i rabaty

Dodatkowe koszty obsługi płatności i przesyłki

Aby doliczyć dodatkowe koszty do wartości kredytu, dodaj produkt o kategorii ADDITIONAL_FEE z odpowiednią wartością. Suma wszystkich wartości w koszyku pomnożona przez ilość musi być równa totalAmount.

curl -X POST 'http://{HOST_API}/v1/orders' \
--header 'API-KEY: {API-KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "notifyUrl": "https://your-shop.tld/notify",
  "returnUrl": "https://your-shop.tld/thanks",
  "orderId": "{twój_identyfikator_zamówienia}",
  "loanParameters": {
    "term": 10,
    "type": "INSTALLMENTS_ZERO_PERCENT"
  },
  "cart": {
      "category": "KATEGORIA Z SŁOWNIKA",
      "totalAmount": 36000,
      "deliveryCost": 1000,
      "products": [
          {
              "name": "Lenovo Ideapad 120S-14IAP",
              "quantity": 1,
              "price": 10000,
              "photoUrl": "01e5f8",
              "ean": "9002490100070",
              "externalId": "123",
              "category": "productCategory"
          },
          {
              "name": "Lenovo Ideapad 120S-14IAP",
              "quantity": 1,
              "price": 20000,
              "photoUrl": "01e5f8",
              "ean": "9002490100070",
              "externalId": "123",
              "category": "productCategory"
          },
          {
            "name": "Dopłata rodzaj płatności",
            "quantity": 1,
            "price": 5000,
            "category": "ADDITIONAL_FEE"
          }
      ]
  },
  "customer": {
    "firstName": "John",
    "lastName": "John",
    "taxId": null,
    "email": "customer@example.com",
    "phoneNumber": "312213213",
    "ip": "ip klienta",
    "regular": false,
    "logged": false,
    "address": {
      "street": "Rowowa",
      "buildingNumber": "1",
      "apartmentNumber": "1",
      "postalCode": "10-899",
      "city": "Karłowice",
      "countryCode": "PL"
    }
  },
  "seller": {
    "taxId": "1234567890"
  },
  "accountNumber": "75114011244753619198148640",
  "transferTitle": "Płatność za zamówienie 1234ABCDE"
}'

Rabaty

Aby pomniejszyć wartość kredytu o rabat, dodaj produkt o kategorii DISCOUNT z ujemną kwotą. Suma wszystkich wartości w koszyku pomnożona przez ilość musi być równa totalAmount.

curl -X POST 'http://{HOST_API}/v1/orders' \
--header 'API-KEY: {API-KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "notifyUrl": "https://your-shop.tld/notify",
  "returnUrl": "https://your-shop.tld/thanks",
  "orderId": "{twój_identyfikator_zamówienia}",
  "loanParameters": {
    "term": 10,
    "type": "INSTALLMENTS_ZERO_PERCENT"
  },
  "cart": {
      "category": "KATEGORIA Z SŁOWNIKA",
      "totalAmount": 26000,
      "deliveryCost": 1000,
      "products": [
          {
              "name": "Lenovo Ideapad 120S-14IAP",
              "quantity": 1,
              "price": 10000,
              "photoUrl": "01e5f8",
              "ean": "9002490100070",
              "externalId": "123",
              "category": "productCategory"
          },
          {
              "name": "Lenovo Ideapad 120S-14IAP",
              "quantity": 1,
              "price": 20000,
              "photoUrl": "01e5f8",
              "ean": "9002490100070",
              "externalId": "123",
              "category": "productCategory"
          },
          {
            "name": "Nazwa rabatu",
            "quantity": 1,
            "price": -5000,
            "category": "DISCOUNT"
          }
      ]
  },
  "customer": {
    "firstName": "John",
    "lastName": "John",
    "taxId": null,
    "email": "customer@example.com",
    "phoneNumber": "312213213",
    "ip": "ip klienta",
    "regular": false,
    "logged": false,
    "address": {
      "street": "Rowowa",
      "buildingNumber": "1",
      "apartmentNumber": "1",
      "postalCode": "10-899",
      "city": "Karłowice",
      "countryCode": "PL"
    }
  },
  "seller": {
    "taxId": "1234567890"
  },
  "accountNumber": "75114011244753619198148640",
  "transferTitle": "Płatność za zamówienie 1234ABCDE"
}'

Odpowiedź

{
    "status": "CREATED",
    "externalId": "{twój_identyfikator_zamówienia}",
    "applicationUrl": "{url_do_przekierowania_na_stronę_formularza}"
}

Kody odpowiedzi serwera

  • 201 Created
  • 400 Bad Request
  • 401 Unauthorized
  • 405 Method Not Allowed
  • 500 Internal Server Error