API Delivety
En Delivety intentamos mantener las cosas lo más sencillas posible. Así lo es la API de Delivety.
En esta guía, encontrará información completa sobre cómo utilizar la API de Delivety para comenzar a enviar los pedidos desde su sitio web o aplicación existente a su aplicación web de Delivety.
Nos gustaría ayudarle a empezar a trabajar con Delivety API lo antes posible, así que si tiene alguna pregunta, estamos aquí para ayudarle.
Introducción
La API de Delivety es un servicio web RESTful para que los desarrolladores envíen datos de pedidos desde su sitio web o aplicación existente a la URL del webhook de Delivety.
Web-hook URL Delivety
Para interactuar con la API de Delivety, deberá registrarse para obtener una cuenta Delivety. Una vez que haya creado una cuenta con nosotros, abra la sección de Dominio de su Panel Admin de Delivety, luego seleccione el dominio con el que le gustaría tener su sitio web o aplicación integrada (o cree un nuevo dominio, si aún no tiene uno). A continuación, seleccione "Recibir pedidos desde el sitio web existente". Aparecerá la URL del webhook dedicado. Ahora es el momento de hacer que su sitio web o app envíe los datos de los pedidos a esa URL del webhook.
Usando webhooks
Su sitio web o aplicación tiene que enviar una devolución de llamada HTTPS a la URL del webhook de Delivety cada vez que el cliente realiza el pedido en su sitio web o aplicación. Si se recibe con éxito, entonces Delivety responde con 2xxHTTP y el pedido aparecerá inmediatamente en el Panel del Operador. Tenga en cuenta que hay requisitos para que la devolución de llamada HTTPS sea procesada con éxito.
Use siempre HTTPS
Las llamadas realizadas a través de HTTP simple fallarán. Las solicitudes de la API que no tengan parámetros obligatorios también fallarán.
Throttling
No puede realizar más de 10 peticiones por segundo en todas las URLs de webhooks de su empresa. Si supera el umbral de 10 solicitudes por segundo, recibirá primero un error 426. Si no disminuye su tasa de solicitudes puede resultar en un bloqueo temporal
Seguridad
Usted es responsable del uso seguro de las URL de los webhooks que le proporcionamos. En caso de que comprometa una, puede regenerar la nueva para el dominio correspondiente en la sección Dominio de su Panel Admin de Delivety. No olvide que, a partir de ese momento, deberá enviar la solicitud POST a la nueva URL de webhook que ha creado.
Tipos de Datos y Formatos
Salvo contadas excepciones, los números son números y no cadenas. La API se adhiere estrictamente a la representación más natural de los datos subyacentes, y siempre se devuelve null para las propiedades opcionales a las que aún no se ha asignado un valor.
Las coordenadas geográficas están formateadas como [ longitude, latitude ]
, según el estándar GeoJSON.
Los timestamps se consumen y producen en formato de tiempo de época Unix, con precisión de milisegundos.
Los números de teléfono se devolverán siempre en formato E.164; sin embargo, pueden proporcionarse en E.164 o en un formato localizado que sea válido según la configuración del país de su empresa. Si desea proporcionar números de países distintos al de su empresa, deberá utilizar únicamente E.164. Recomendamos encarecidamente el uso de bibliotecas como libphonenumber para gestionar la validación y el formato de los números de teléfono.
Cómo Enviar Datos
Post Request
Envíe los datos como una solicitud POST con un cuerpo que contenga los siguientes parámetros:
Parámetro | Descripción |
---|---|
phone | Número de teléfono del cliente, sólo se aceptan símbolos numéricos. Sirve como identificación del cliente.
|
id | ID de pedido según el sistema de identificación de pedidos de su web o app.
|
first_name | Nombre del cliente. Aquí también puede incluir su apellido (opcional).
|
Correo electrónico del cliente (opcional).
| |
address | Dirección del cliente (opcional).
|
comment | Nota o comentario del cliente (opcional).
|
delivery_date | La fecha en que el pedido debe ser entregado. Este es un parámetro opcional. El pedido recibirá la fecha de entrega HOY si falta el parámetro. |
delivery_time | La hora a la que debe entregarse el pedido. Este es un parámetro opcional. El pedido recibirá la hora de entrega ASAP (Lo más rápido posible) si falta el parámetro. |
product | Productos solicitados (array, ver más abajo) |
payment | Datos de pago (array opcional, ver más abajo). El pedido obtendrá el estado UNPAID si falta el array. |
promotion | Datos de promoción (array opcional, ver más abajo) |
Array de Productos
El array de productos debe contener los siguientes parámetros:
Parámetro | Descripción |
---|---|
api_id | El ID del plato según el sistema de identificación de platos de su sitio web o aplicación. Debe establecer los mismos ID de API que los ID de producto para cada plato en su Creador de Menús de Delivety |
count | La cantidad de platos del api_id en particular |
price | El precio del plato del api_id en particular |
Array de Pagos
El array de pagos debe contener los siguientes parámetros:
Parametro
| Descripción
|
---|---|
type | El método de pago utilizado para este pedido. El valor debe contener:
“1” si la orden de pago es en efectivo, o “2” si el pedido pagado es con tarjeta, o “3” si el pedido pagado es con tarjeta en la entrega |
status | El estado del pago con tarjeta utilizado para este pedido. El valor debe contener:
“-1” si se reembolsa el pago “0” si se ha cancelado el pago “1” si el pago aún no ha sido procesado “2” si el pago se ha procesado con éxito |
sum | La suma de los precios de todos los artículos del pedido. En la mayoría de los casos, es el importe total del pedido antes de deducir los descuentos y/o las tasas de procesamiento de pagos (reciver_commission). |
amount | El importe total pagado (o por pagar) por el pedido. En la mayoría de los casos, el importe es igual a la suma menos el descuento y la comisión del procesador de pagos (reciver_commission) |
public_key | El parámetro opcional para los pagos con tarjeta para identificar el número de cuenta a la que procesar el pago. Este parámetro se utiliza si tiene más de una cuenta bancaria y/o utiliza varios procesadores de pago y prefiere distinguirlos en Delivety. |
reciver_commission | La comisión del procesador de pagos, si existe. |
Array de Promoción
El array de promoción debe contener los siguientes parámetros:
Parámetro | Descripción |
---|---|
discount | El parámetro opcional que contiene el importe total del descuento en el pedido. |
discount_percent | El parámetro opcional que contiene el porcentaje de descuento en el pedido. |
discount_code | El parámetro opcional que contiene el código de cupón alfanumérico aplicado al pedido. |
involved_dishes | El array opcional que contiene los platos involucrados en la promoción. |
resulted_dishes | El array opcional que contiene los platos que son el resultado de la promoción. |
Array de Platos Resultantes
El array resulted_dishes debe contener los siguientes parámetros opcionales:
Parámetro | Descripción |
---|---|
api_id | El id del plato resultante de la promoción. No debe enviar este plato en la matriz de productos |
count | La cantidad de platos del api_id en particular |
modification | La modificación del precio del plato resultante de la promoción |
Post Request
El ejemplo del código PHP de solicitud POST exitosa que se muestra a continuación ilustra el pedido, con los dos platos solicitados (api_id = 139, api_id = 385) con un 10% de descuento y uno obtenido de forma gratuita, en el resultado de la reducción del precio:
$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);