Delivety API
W Delivety staramy się, aby wszystko było tak proste, jak to tylko możliwe.
Tak więc API Delivety to.
W tym przewodniku znajdziesz wyczerpujące informacje na temat korzystania z interfejsu API Delivety, aby rozpocząć wysyłanie zamówień z istniejącej strony lub aplikacji do aplikacji internetowej Delivety.
Chcielibyśmy pomóc Ci rozpocząć pracę z Delivety API tak szybko, jak to możliwe, więc jeśli masz jakiekolwiek pytania, jesteśmy tutaj, aby Ci pomóc
Wprowadzenie
Interfejs API Delivety to usługa sieciowa RESTful dla programistów umożliwiająca wysyłanie danych zamówień z istniejącej strony lub aplikacji do adresu URL webhook Delivety.
Delivety webhook URL
Aby korzystać z interfejsu API Delivety, należy założyć konto Delivety. Po utworzeniu konta otwórz sekcję Domena w panelu administracyjnym Delivety, a następnie wybierz domenę, z którą chcesz zintegrować swoją stronę lub aplikację (lub utwórz nową domenę, jeśli jeszcze jej nie masz). Następnie wybierz opcję "Odbieraj zamówienia z istniejącej strony". Pojawi się dedykowany adres URL webhook. Teraz nadszedł czas, aby Twoja strona lub aplikacja wysyłała dane zamówień do tego adresu URL webhook.
Korzystanie z webhooków
Twoja strona lub aplikacja musi wysyłać wywołanie zwrotne HTTPS do adresu URL webhook Delivety za każdym razem, gdy klient składa zamówienie w Twojej stronie lub aplikacji. Jeśli zostanie ono pomyślnie odebrane, Delivety odpowie komunikatem 2xxHTTP, a zamówienie natychmiast pojawi się w panelu operatora. Należy pamiętać, że istnieją wymagania dotyczące pomyślnego przetworzenia wywołania zwrotnego HTTPS....
Zawsze używaj HTTPS
Wywołania wykonane za pośrednictwem zwykłego protokołu HTTP zakończą się niepowodzeniem. Żądania API, w których brakuje obowiązkowych parametrów, również zakończą się niepowodzeniem.
Dławienie
Nie można wykonać więcej niż 10 żądań na sekundę we wszystkich adresach URL webhooków firmy. Jeśli przekroczysz próg 10 żądań na sekundę, najpierw otrzymasz błąd 426. Niezastosowanie się do tego wymogu może skutkować tymczasowym zablokowaniem konta.
Bezpieczeństwo
Użytkownik jest odpowiedzialny za bezpieczne korzystanie z adresów URL webhooków, które mu udostępniamy. W przypadku naruszenia jednego z nich, możesz zregenerować nowy dla odpowiedniej domeny w sekcji Domeny Pulpitu Administracyjnego Delivety. Nie zapominaj, że od tego momentu będziesz musiał wysyłać żądanie POST do nowego adresu URL webhook, który utworzyłeś.
Typy i formaty danych
Z nielicznymi wyjątkami, liczby są liczbami, a nie ciągami znaków. API ściśle przestrzega najbardziej naturalnej reprezentacji danych bazowych, a wartość null jest zawsze zwracana dla opcjonalnych właściwości, którym nie przypisano jeszcze wartości.
Współrzędne geograficzne są sformatowane jako [ długość geograficzna, szerokość geograficzna ], zgodnie ze standardem GeoJSON.
Znaczniki czasu są pobierane i tworzone w formacie czasu epoki systemu Unix, z dokładnością do milisekund.
Numery telefonów będą zawsze zwracane w formacie E.164; mogą być jednak dostarczane w formacie E.164 lub zlokalizowanym formacie, który jest ważny w oparciu o konfigurację kraju firmy. Jeśli chcesz podać numery z krajów innych niż kraj Twojej firmy, musisz użyć tylko E.164. Zdecydowanie zalecamy korzystanie z bibliotek takich jak libphonenumber do zarządzania walidacją i formatowaniem numerów telefonów.
Jak wysyłać dane
Żądanie postu
Wyślij dane jako żądanie POST z treścią zawierającą następujące parametry:
Parameter | Opis
|
---|---|
phone | Numer telefonu klienta, akceptowane są tylko symbole numeryczne. Służy jako identyfikator klienta.
|
id | Identyfikator zamówienia zgodnie z systemem identyfikacji zamówienia na stronie internetowej lub w aplikacji.
|
first_name | Imię klienta. Możesz również podać jego nazwisko (opcjonalnie).
|
Adres e-mail klienta (opcjonalnie).
| |
address | Adres klienta (opcjonalnie).
|
comment | Notatka lub komentarz klienta (opcjonalnie).
|
delivery_date | Data, kiedy zamówienie ma zostać dostarczone. Jest to parametr opcjonalny. W przypadku braku tego parametru zamówienie otrzyma datę dostawy TODAY.
|
delivery_time | Czas, w którym zamówienie ma zostać dostarczone. Jest to parametr opcjonalny. W przypadku braku tego parametru zamówienie otrzyma czas dostawy ASAP.
|
product | Zamówione produkty (tablica, patrz poniżej)
|
payment | Dane płatności (opcjonalna tablica, patrz poniżej).
W przypadku braku tablicy zamówienie otrzyma status UNPAID. |
promotion | Dane promocji (opcjonalna tablica, patrz poniżej)
|
Zestawienie produktów
Tablica produktów musi zawierać następujące parametry:
Parametr | Opis
|
---|---|
api_id | Identyfikator potrawy zgodnie z systemem identyfikacji potrawy w stronie lub aplikacji. Musisz ustawić te same identyfikatory API, co identyfikatory produktów dla każdego dania w Konstruktorze Menu Delivety
|
count | Ilość dań dla danego api_id
|
price | Cena dania o określonym api_id
|
Tablica płatności
Tablica płatności musi zawierać następujące parametry:
Parametr | Opis
|
---|---|
type | Metoda płatności użyta dla tego zamówienia. Wartość musi zawierać: "1", jeśli zamówienie zostało opłacone gotówką, lub "2", jeśli zamówienie zostało opłacone kartą, lub "3", jeśli zamówienie zostało opłacone kartą przy odbiorze |
status | Status płatności kartą użytej do tego zamówienia. Wartość musi zawierać: "-1", jeśli płatność została zwrócona "0", jeśli płatność została anulowana "1", jeśli płatność nie została jeszcze przetworzona. "2", jeśli płatność została pomyślnie przetworzona. |
sum | Suma cen wszystkich pozycji w zamówieniu. W większości przypadków jest to całkowita kwota zamówienia przed odliczeniem wszelkich rabatów i/lub opłat za przetwarzanie płatności (reciver_commission).
|
amount | Całkowita kwota zapłacona (lub do zapłaty) za zamówienie. W większości przypadków kwota jest równa sumie pomniejszonej o rabat i prowizję procesora płatności (reciver_commission).
|
public_key | Opcjonalny parametr dla płatności kartą służący do identyfikacji numeru konta, na które ma zostać przetworzona płatność. Ten parametr jest używany, jeśli masz więcej niż jedno konto bankowe i/lub korzystasz z wielu procesorów płatności i wolisz je rozróżniać w Delivety.
|
reciver_commission | Ewentualna prowizja procesora płatności.
|
Macierz promocji
Tablica promocyjna musi zawierać następujące parametry:
Parametr | Opis
|
---|---|
discount | Opcjonalny parametr zawierający całkowitą kwotę rabatu w zamówieniu.
|
discount_percent | Opcjonalny parametr zawierający procent zniżki w zamówieniu.
|
discount_code | Opcjonalny parametr zawierający alfanumeryczny kod kuponu zastosowany do zamówienia.
|
involved_dishes | Opcjonalna tablica zawierająca dania objęte promocją.
|
resulted_dishes | Opcjonalna tablica zawierająca dania będące wynikiem promocji.
|
Wynikowa tablica naczyń
Tablica resulted_dishes musi zawierać następujące opcjonalne parametry:
Parameter | Opis
|
---|---|
api_id | Identyfikator dania, które jest wynikiem promocji. Nie wolno wysyłać tego dania w tablicy produktów
|
count | Ilość dań dla danego api_id
|
modification | Modyfikacja ceny dania, która jest wynikiem promocji
|
Żądanie postu
Przykład kodu PHP udanego żądania POST pokazany poniżej ilustruje zamówienie, z dwoma zamówionymi daniami (api_id = 139, api_id = 385) z 10% rabatem i jednym otrzymanym za darmo, w wyniku obniżenia ceny:
$url = 'https://delivety.com/hooks/catch/sdf34asdv1';
$incoming_order = [
"access_token" => "ACCESS_TOKEN_HERE",
"phone" => '123680000000',
"id" => 123456,
"first_name" => 'John Dowe',
"email" => '[email protected]',
"address" => '123, Sunset blvd',
"comment" => 'no sesame please',
"delvery_date" => '2021-12-31',
"delvery_time" => '18:45:00',
"products" => [
[
"api_id" => 139,
"count" => 1,
"price" => 15
],
[
"api_id" => 385,
"count" => 1,
"price" => 18
],
],
"payment" => [
"type" => 2,
"status" => 2,
"sum" => 33,
"amount" => 28.95,
"receiver_commision" => 1.05
],
"promotion" => [
"discount_percent" => 10,
"involved _dishes" => [
[
"api_id" => 139,
"count" => 1
],
[
"api_id" => 385,
"count" => 1
]
],
"resulted _dishes" => [
[
"api_id" => 598,
"count" => 1,
"modification" => -12
]
]
]
];
$data = sendRequest($url, 'post', $incoming_order);