delivereo / delivereo-sdk-php
dev-master
2020-08-18 23:17 UTC
Requires
- guzzlehttp/guzzle: ^6.3
This package is auto-updated.
Last update: 2024-09-19 07:56:26 UTC
README
Delivereo PHP SDK库
这是用于与Delivereo API集成的官方SDK库。您可以在swagger文档链接或API文档链接中找到有关我们的API的更多信息。
安装
使用以下命令安装最新版本:
$ composer require delivereo/delivereo-sdk-php @dev
基本用法/示例
<?php
include_once 'vendor/autoload.php';
use \Delivereo_sdk\BusinessClient;
use \Delivereo_sdk\enums\ServerEnvironment;
use \Delivereo_sdk\enums\Language;
use \Delivereo_sdk\enums\City;
use \Delivereo_sdk\enums\PaymentMode;
use \Delivereo_sdk\enums\RatingLowReason;
use \Delivereo_sdk\enums\CancelReason;
use \Delivereo_sdk\request\create\CreateOrder;
use \Delivereo_sdk\request\create\CreateOrderItem;
try {
/**
* Crear una instancia del cliente de business. En server environment deberia apuntar a TEST
*/
$businessClient = new BusinessClient(ServerEnvironment::TEST, Language::SPANISH);
/**
* Logearse con las credenciales
*/
$loginResponse = $businessClient->login('69982032-DD5', 'info@delivereo.com', '1792715083001');
/**
* Si el login es exitoso, podemos usar el JWT token de la respuesta de login para poder ejecutar cualquier otra accion en el API
*/
if ($loginResponse->statusCode == 200) {
/**
* TOMAR EN CUENTA: Si el JWT token expira (al mandar una peticion que no sea login o renew token te devuelve codigo 403).
* Se puede generar un nuevo token volviendose a logear o usando el metodo siguiente
*/
$renewTokenResponse = $businessClient->tokenRenewal($loginResponse->contents->jwtToken, 'info@delivereo.com');
/*if ($renewTokenResponse->statusCode == 200) {
// echo 'Nuevo jwt Token: ' . $renewTokenResponse->contents->jwtToken;
}*/
/**
* Calcular el costo de una carrera usando puntos geograficos
*/
$calculatePoints = calculateBookingWithPoints($businessClient, $loginResponse->contents->jwtToken);
/**
* Calcular el costo de una carrera usando direcciones
*/
$calculateAddress = calculateBookingWithAddresses($businessClient, $loginResponse->contents->jwtToken);
/**
* No es necesario calcular el costo de una carrera si se va a crear una. Es solo referencial
* De igual manera se puede crear una carrera usando puntos geograficos o direcciones, la mejor opcion es
* usar direcciones por facilidad
*/
/**
* Crear carrera usando puntos geograficos
*/
$createWithPoints = createBookingWithPoints($businessClient, $loginResponse->contents->jwtToken);
/**
* Despues de que la carrera fue atendida por un deliverer, esta puede ser calificada usando el
* siguiente metodo. No es obligatorio el calificar el conductor, pero se recomienda hacerlo si es
* posible. En una nueva version del API se va a generar una calificacion automatica, quitando esta
* opcion
*/
$rateBooking = rateBooking($businessClient, $loginResponse->contents->jwtToken, $createWithAddress->contents->bookingId);
/**
* Para obtener el detalle de una carrera se puede utilizar el siguiente metodo
*/
$detailBooking = detailBooking($businessClient, $loginResponse->contents->jwtToken, $createWithPoints->contents->bookingId);
/**
* Si una carrera no puede ser atendida por alguno de nuestro delivererers, se puede reintentar usando el siguiente metodo
*/
$retryBooking = retryBooking($businessClient, $loginResponse->contents->jwtToken, 28191);
/**
* Para cancelar una carrera, se puede utilizar el siguiente metodo
*/
$cancelBooking = cancelBooking($businessClient, $loginResponse->contents->jwtToken, $createWithPoints->contents->bookingId);
/**
* Crear booking Domicilio
*/
$createBookingDomicile = createBookingDomicile($businessClient, $loginResponse->contents->jwtToken);
/**
* Crear booking Farmacia
*/
$createBookingDomicilePharmacy = createBookingDomicilePharmacy($businessClient, $loginResponse->contents->jwtToken);
}
} catch ( Exception $exception) {
}
使用积分计算预订
<?php
/**
* Calcular Bookings con Puntos
* @param $businessClient
* @param $jwtToken
* @return mixed
*/
function calculateBookingWithPoints($businessClient, $jwtToken)
{
$points = [];
$points[] = [
'pointOrder' => 1, 'pointLatitude' => -0.19045013, 'pointLongitude' => -78.48059853
];
$points[] = [
'pointOrder' => 2, 'pointLatitude' => -0.172213, 'pointLongitude' => -78.486467
];
$points[] = [
'pointOrder' => 3, 'pointLatitude' => -0.20963146, 'pointLongitude' => -78.43948563
];
return $businessClient->calculateBookingCostUsingPoints($jwtToken, City::QUITO, $points);
}
使用地址计算预订
<?php
/**
* Calcular Bookings con direcciones
* @param $businessClient
* @param $jwtToken
* @return mixed
*/
function calculateBookingWithAddresses($businessClient, $jwtToken)
{
$addresses = [];
$addresses[] = [
'addressOrder' => 1, 'addressMainStreet' => 'Amazonas', 'addressCrossingStreet' => 'Veintimilla', 'countryCode' => 'EC'
];
$addresses[] = [
'addressOrder' => 2, 'addressMainStreet' => 'Francisco Dalmau', 'addressCrossingStreet' => 'Calle 1', 'countryCode' => 'EC'
];
return $businessClient->calculateBookingCostUsingAddresses($jwtToken, City::QUITO, $addresses);
}
使用积分创建预订
<?php
/**
* Crear Bookings con Puntos
* @param $businessClient
* @param $jwtToken
* @return mixed
*/
function createBookingWithPoints($businessClient, $jwtToken)
{
$points = [];
$points[] = [
'pointOrder' => 1, 'pointLatitude' => -0.19045013, 'pointLongitude' => -78.48059853,
'senderRecipientName' => 'Jorge Cardenas', 'address' => 'Amazonas y Veintimilla E32A-32',
'reference' => 'Edificio Tez Apartamento 200'
];
$points[] = [
'pointOrder' => 2, 'pointLatitude' => -0.172213, 'pointLongitude' => -78.486467,
'senderRecipientName' => 'Marcelo Bonilla', 'address' => 'Diego de Vazquez y Bellavista E34-23',
'reference' => 'Condominio Carmen 2 casa 34'
];
$points[] = [
'pointOrder' => 3, 'pointLatitude' => -0.20963146, 'pointLongitude' =>-78.43948563,
'senderRecipientName' => 'Pablo Mancero', 'address' => 'Naciones Unidas e Inaquito Esquina',
'reference' => 'Edificio Metropolitan Oficina 409'
];
$orderItem_1 = new CreateOrderItem('cod_123', 'hamburguesa pollo', 'Hamburguesa de pollo',
2, 1, 12, 2, 2.25);
$orderItem_2 = new CreateOrderItem('cod_124', 'hamburguesa carne', 'Hamburguesa de carne',
2, 1, 12, 2, 2.25);
$order = new CreateOrder('123456', 10, PaymentMode::CREDIT_CARD, 1.2, 11.2,
[$orderItem_1->toArray(), $orderItem_2->toArray()]);
return $businessClient->createBookingUsingPoints($jwtToken, City::QUITO, $points,
'Compra hamburguesa de pollo y hamburguesa de carne', 11.2, $order->toArray(), 'stefano@delivereo.com');
}
使用地址计算预订
<?php
/**
* Crear Bookings con Direcciones
* @param $businessClient
* @param $jwtToken
* @return mixed
*/
function createBookingWithAddresses($businessClient, $jwtToken)
{
$addresses = [];
$addresses[] = [
'addressOrder' => 1, 'addressMainStreet' => 'Amazonas', 'addressCrossingStreet' => 'Veintimilla',
'countryCode'=>'EC', 'senderRecipientName' => 'Jorge Cardenas', 'address' => 'Amazonas y Veintimilla E32A-32',
'reference' => 'Edificio Tez Apartamento 200'
];
$addresses[] = [
'addressOrder' => 2, 'addressMainStreet' => 'Francisco Dalmau', 'addressCrossingStreet' => 'Francisco Dalmau',
'countryCode'=>'EC', 'senderRecipientName' => 'Daniel Mancero', 'address' => 'Francisco Dalmau y Calle 1 OE32',
'reference' => 'Frente al Supermaxi'
];
$order = new CreateOrder('123456', 10, PaymentMode::CREDIT_CARD, 1.2, 11.2, []);
return $businessClient->createBookingUsingAddresses($jwtToken, City::QUITO, $addresses,
'Compra hamburguesa de pollo y hamburguesa de carne', 11.2, $order->toArray(), 'stefano@delivereo.com');
}
评分预订
<?php
/**
* Calificacion del Bookings
* @param $businessClient
* @param $jwtToken
* @param $bookingId
* @return mixed
*/
function rateBooking($businessClient, $jwtToken, $bookingId)
{
return $businessClient->rateDriverForBookingById($jwtToken, $bookingId, 0, RatingLowReason::NONE, 'Everything OK');
}
预订详细信息
<?php
/**
* Detalles del Bookings
* @param $businessClient
* @param $jwtToken
* @param $bookingId
* @return mixed
*/
function detailBooking($businessClient, $jwtToken, $bookingId)
{
return $businessClient->getBookingFullDetailById($jwtToken, $bookingId);
}
重试预订
<?php
/**
* Procesar de nuevo el Bookings
* @param $businessClient
* @param $jwtToken
* @param $bookingId
* @return mixed
*/
function retryBooking($businessClient, $jwtToken, $bookingId)
{
return $businessClient->retryBookingById($jwtToken, $bookingId);
}
取消预订
<?php
/**
* Cancelar Bookings
* @param $businessClient
* @param $jwtToken
* @param $bookingId
* @return mixed
*/
function cancelBooking($businessClient, $jwtToken, $bookingId)
{
return $businessClient->cancelBookingById($jwtToken, $bookingId, CancelReason::NOT_NEEDED_ANYMORE, 'Another option was found');
}
创建宅配预订
<?php
/**
* Crear Booking Domicilio
* @param $businessClient
* @param $jwtToken
* @return mixed
*/
function createBookingDomicile($businessClient, $jwtToken)
{
return $businessClient->createBookingDomicilePharmacy($jwtToken, 'CCI Quito', [], 'stefano@delivereo.com', '12345',
'1715245933', 'Daniel Mancero', 'Amazonas y Naciones Unidas', PaymentMode::CREDIT_CARD, 'EC');
}
创建药房预订
<?php
/**
* Crear Booking Farmacia. Los parametros mobil y referencia del cliente no son obligatorios
* @param $businessClient
* @param $jwtToken
* @return mixed
*/
function createBookingDomicile($businessClient, $jwtToken)
{
$booingCreatedWithMobilAndReference = null;
$booingCreatedWithoutMobilAndReference = null;
/*
* Crear booking con movil del Cliente y la referencia
*
*/
$booingCreatedWithMobilAndReference = $businessClient->createBookingDomicilePharmacy($jwtToken, 'CCI Quito', ['Inca Quito'], 'stefano@delivereo.com', '12345',
'1715245933', 'Daniel Mancero', 'Amazonas y Naciones Unidas', PaymentMode::CREDIT_CARD, 'EC',
'+593-123456789', 'Edificio Argos');
// OR
/*
* Crear booking sin movil del Cliente y la referencia
*
*/
$booingCreatedWithoutMobilAndReference = $businessClient->createBookingDomicilePharmacy($jwtToken, 'CCI Quito', ['Inca Quito'], 'stefano@delivereo.com', '12345',
'1715245933', 'Daniel Mancero', 'Amazonas y Naciones Unidas', PaymentMode::CREDIT_CARD, 'EC');
return ($booingCreatedWithMobilAndReference != null) ? $booingCreatedWithMobilAndReference : $booingCreatedWithoutMobilAndReference;
}