В ходе работы над одним из наших проектов, написанном на Symfony 2, встала необходимость реализации взаимодействия с сервисом обмена заказами такси NowTaxi (nowtaxi.ru), а так как готовых решений не нашлось, что, собственно, не удивительно, я решил реализовать функционал взаимодействия с ним в отдельном бандле. Так и возник тот код, которым я бы хотел с вами поделиться.
В бандле реализованы все предоставляемые на данный момент сервисом методы:
Они доступны через сервис ‘htc_now_taxi.order_management.service’. Ниже приведен некий абстрактный пример работы с сервисом:
// AcmeBundle/Controller/TestController.php namespace AcmeBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; /** * Class TestController * @package AcmeBundle\Controller */ class TestController extends Controller { /** * @return \Symfony\Component\HttpFoundation\Response */ public function testAction() { $service = $this->get('htc_now_taxi.order_management.service'); $orderData = []; // Возвращает список тарифов в виде ассоциативного массива $service->tariffListAsArray(); // Создает новый заказ $order = $service->putOrder($orderData); // Оценка качества заказа $service->rateOrder($order->id, 4, 'Поездка прошла хорошо'); // Возвращает информацию о заказе $service->getOrder($order->id); // Отменяет заказ $service->cancelOrder($order->id, 'Клиент отказался от поездки'); return new Response(); } }
События
В бандле имеется несколько событий, которые поджигаются при создании, изменении статуса и отмене заказа, а так же при изменении местоположения водителей на заказах:
-
«htc_now_taxi.order_created» (Htc\NowTaxiBundle\Event\OrderEvent) — поджигается после создания заказа
-
«htc_now_taxi.order_changed» (Htc\NowTaxiBundle\Event\OrderEvent) — поджигается при изменении статуса заказа
-
«htc_now_taxi.order_cancelled» (Htc\NowTaxiBundle\Event\OrderEvent) — поджигается при отмене заказа
-
«htc_now_taxi.drivers_position_changed» (Htc\NowTaxiBundle\Event\DriversPositionEvent) — поджигается при изменении местоположения водителей на заказах
Более подробное описание установки и конфигурации бандла можно найти в документации на гитхабе.
Приятного использования! :)
Метки: API, bundle, nowtaxi integration, php, Symfony