alopeyk / alopeyk-api-php
AloPeyk Api PHP 处理器
Requires
- php: >=5.5.9
This package is auto-updated.
Last update: 2024-03-17 13:45:22 UTC
README
此软件包旨在简化AloPeyk RESTful API的应用程序开发。有关此API的更多信息,请访问AloPeyk 文档
安装
首先,您需要一个访问令牌。所有Alopeyk API端点都支持JWT认证协议。要开始发送经过身份验证的HTTP请求,您需要使用发送给您的JWT授权令牌。然后,您可以通过运行以下命令使用Composer安装此软件包
composer require alopeyk/alopeyk-api-php
到Packagist的链接:https://packagist.org.cn/packages/alopeyk/alopeyk-api-php
使用方法
1. 认证
use AloPeyk\AloPeykApiHandler; $apiResponse = AloPeykApiHandler::authenticate(); if ($apiResponse && $apiResponse->status == "success") { $user = $apiResponse->object->user; echo $user->firstname . " " . $user->lastname; }
示例 API 响应
{ "status": "success", "object": { "user": { "id": 99, "phone": "09701234567", "firstname": "john", "lastname": "doe", "type": "CUSTOMER", "email": "john_doe@gmail.com", "email_verified": 0, "verify": 1, "found_us": "", "referral_code": null, "referred_by": null, "created_at": "2017-09-16T17:06:28+04:30", "updated_at": "2017-09-18T16:07:02+04:30", "deleted_at": null, "jwt_token": **YOUR_TOKEN**, "avatar": { "url": "/uploads/user/99/avatar.jpg?var=1505744313" }, "last_online": null, "is_online": null, "banks": [] } } }
2. 获取地址
此端点通过经纬度检索地点信息。
use AloPeyk\Model\Location; $apiResponse = Location::getAddress("35.732595", "51.413379"); if ($apiResponse && $apiResponse->status == "success") { echo $apiResponse->object->district; }
示例 API 响应
{ "status": "success", "message": "findPlace", "object": { "address": [ "چهاردهم", "وزرا", "تهران", "" ], "region": "آرژانتین", "district": "منطقه ۶", "city": "tehran" } }
3. 位置建议
此端点通过搜索输入检索建议。结果将是一个建议数组。每个建议包括检索地点的区域和名称,并为此项提供坐标。
use AloPeyk\Model\Location; // $locationName = null; // returns AloPeyk Exception // $locationName = ''; // returns AloPeyk Exception $locationName = "أرژ"; $apiResponse = Location::getSuggestions($locationName); if ($apiResponse && $apiResponse->status == "success") { $locations = $apiResponse->object; echo "<ol>"; foreach ($locations as $location) { echo "<li>"; echo $location->region . ": " . $location->title; echo "</li>"; } echo "</ol>"; }
示例 API 响应
{ "status": "success", "message": "autoComplete", "object": [ { "title": "میدان آرژانتین", "region": "آرژانتین", "lat": "35.737079296849799", "lng": "51.415392387445699", "district": "منطقه ۶", "city": "tehran" }, { "title": "آرژانتین", "region": "میدان ولی عصر", "lat": "35.703254842325698", "lng": "51.413370921404997", "district": "منطقه ۶", "city": "tehran" }, { "title": "ارژنگ", "region": "آذربایجان", "lat": "35.69489505", "lng": "51.3973145", "district": "منطقه ۱۱", "city": "tehran" }, { "title": "ارژنگ", "region": "پارک لاله", "lat": "35.712177826056703", "lng": "51.406424628191502", "district": "منطقه ۶", "city": "tehran" } ] }
4. 获取价格
请求具有起始地址和目的地地址的订单的报价。
use AloPeyk\Model\Address; use AloPeyk\Model\Order; /* * Create Origin Address */ $origin = new Address('origin', '35.723711', '51.410547'); /* * Create First Destination */ $firstDest = new Address('destination', '35.728457', '51.436969'); /* * Create Second Destination */ $secondDest = new Address('destination', '35.729379', '51.418151'); /* * Create New Order */ $order = new Order('motor_taxi', $origin, [$firstDest, $secondDest]); $order->setHasReturn(true); $apiResponse = $order->getPrice(); if ($apiResponse && $apiResponse->status == "success") { $addresses = $apiResponse->object->addresses; $origin = $addresses[0]; echo "ORIGIN: {$origin->city} ({$origin->lat} , {$origin->lng})"; echo "<br/>"; echo "Transport Type: " . $apiResponse->object->transport_type; echo "<hr/>"; $destinations = array_shift($addresses); echo "<table border='1' cellspacing='0'> <thead> <tr style='background: #bddaf5'> <th>#</th> <th>City</th> <th>Distance</th> <th>Duration</th> <th>Price</th> </tr> </thead> <tbody> "; foreach ($addresses as $destination) { echo "<tr> <td>{$destination->priority}</td> <td>{$destination->city}</td> <td>{$destination->distance}</td> <td>{$destination->duration}</td> <td>{$destination->price}</td> </tr>"; } echo "<tr style='background: #7ab2a5; text-align: center'> <td colspan='2'>Total</td> <td>{$apiResponse->object->distance}(meters)</td> <td>{$apiResponse->object->duration}(seconds)</td> <td>{$apiResponse->object->price}(toman)</td> </tr>"; }
示例 API 响应
{ "status": "success", "message": null, "object": { "addresses": [ { "city": "tehran", "type": "origin", "lat": 35.75546, "lng": 51.416874, "priority": 0 }, { "city": "tehran", "type": "destination", "lat": 35.758495, "lng": 51.44255, "priority": 1, "distance": 2341, "duration": 288, "price": 3000 }, { "city": "tehran", "type": "destination", "lat": 35.895452, "lng": 51.589632, "priority": 2, "distance": 20192, "duration": 2492, "price": 16000 } ], "price": 31500, "credit": false, "distance": 22533, "duration": 2780, "status": "OK", "user_credit": "0", "delay": 0, "city": "tehran", "transport_type": "motor_taxi", "has_return": false, "cashed": false, "price_with_return": 47250 } }
5. 创建订单
一旦您计算出订单的价格,您可以使用此端点创建新订单。
use AloPeyk\Model\Address; use AloPeyk\Model\Order; /* * Create Origin: Behjat Abad */ $origin = new Address('origin', '35.755460', '51.416874'); $origin->setDescription("Behjat Abad"); // optional $origin->setUnit("44"); // optional $origin->setNumber("1"); // optional $origin->setPersonFullname("Leonardo DiCaprio"); // optional $origin->setPersonPhone("09370000000"); // optional /* * Create First Destination: N Sohrevardi Ave */ $firstDest = new Address('destination', '35.758495', '51.442550'); $firstDest->setDescription("N Sohrevardi Ave"); // optional $firstDest->setUnit("55"); // optional $firstDest->setNumber("2"); // optional $firstDest->setPersonFullname("Eddie Redmayne"); // optional $firstDest->setPersonPhone("09380000000"); // optional /* * Create Second Destination: Ahmad Qasir Bokharest St */ $secondDest = new Address('destination', '35.895452', '51.589632'); $secondDest->setDescription("Ahmad Qasir Bokharest St"); // optional $secondDest->setUnit("66"); // optional $secondDest->setNumber("3"); // optional $secondDest->setPersonFullname("Matt Damon"); // optional $secondDest->setPersonPhone("09390000000"); // optional $order = new Order('motor_taxi', $origin, [$firstDest, $secondDest]); $order->setHasReturn(true); $apiResponse = $order->create($order); var_dump($apiResponse);
示例 API 响应
{ "status": "success", "message": null, "object": { "city": "tehran", "transport_type": "motor_taxi", "customer_id": 99, "status": "new", "launched_at": "2017-09-19T12:26:08+04:30", "delay": 0, "price": 31500, "credit": false, "cashed": false, "has_return": false, "distance": 22533, "duration": 2780, "invoice_number": "LKH3LN", "pay_at_dest": false, "device_id": null, "weight": 20, "is_api": true, "updated_at": "2017-09-19T12:26:08+04:30", "created_at": "2017-09-19T12:26:08+04:30", "id": 300, "signature": null, "order_token": "099c68a4a300ga2165445145a8eg992375433db", "nprice": null, "subsidy": null, "signed_by": null, "addresses": [ { "id": 568522, "order_id": 300, "customer_id": 99, "courier_id": null, "lat": 35.75546, "lng": 51.416874, "type": "origin", "priority": 0, "city": "tehran", "status": "pending", "address": "address of order s origin", "description": "some description for origin", "unit": "unit of origin address", "number": "number of origin address", "person_fullname": "sender s name", "person_phone": "sender s phone", "signed_by": null, "distance": null, "google_distance": null, "duration": null, "google_duration": null, "arrived_at": null, "handled_at": null, "created_at": "2017-09-19T12:26:08+04:30", "updated_at": "2017-09-19T12:26:08+04:30", "deleted_at": null, "arrive_lat": null, "arrive_lng": null, "handle_lat": null, "handle_lng": null, "signature": null }, { "id": 568523, "order_id": 300, "customer_id": 99, "courier_id": null, "lat": 35.758495, "lng": 51.44255, "type": "destination", "priority": 1, "city": "tehran", "status": "pending", "address": "address of order s origin", "description": "some description for origin", "unit": "unit of origin address", "number": "number of origin address", "person_fullname": "sender s name", "person_phone": "sender s phone", "signed_by": null, "distance": 2341, "google_distance": null, "duration": 288, "google_duration": null, "arrived_at": null, "handled_at": null, "created_at": "2017-09-19T12:26:08+04:30", "updated_at": "2017-09-19T12:26:08+04:30", "deleted_at": null, "arrive_lat": null, "arrive_lng": null, "handle_lat": null, "handle_lng": null, "signature": null }, { "id": 568524, "order_id": 300, "customer_id": 99, "courier_id": null, "lat": 35.895452, "lng": 51.589632, "type": "destination", "priority": 2, "city": "tehran", "status": "pending", "address": "address of order s origin", "description": "some description for origin", "unit": "unit of origin address", "number": "number of origin address", "person_fullname": "sender s name", "person_phone": "sender s phone", "signed_by": null, "distance": 20192, "google_distance": null, "duration": 2492, "google_duration": null, "arrived_at": null, "handled_at": null, "created_at": "2017-09-19T12:26:08+04:30", "updated_at": "2017-09-19T12:26:08+04:30", "deleted_at": null, "arrive_lat": null, "arrive_lng": null, "handle_lat": null, "handle_lng": null, "signature": null } ] } }
6. 获取订单详情
为了获取订单详情,调用此方法。
use AloPeyk\Model\Order; // $orderID = " 309 "; // $orderID = " 309<p>"; // $orderID = ''; // $orderID = null; $orderID = 309; $apiResponse = Order::getDetails($orderID); var_dump($apiResponse);
示例 API 响应
"status": "success", "message": null, "object": { "id": 309, "invoice_number": "DT63AL", "customer_id": 99, "device_id": null, "courier_id": 130, "cancelled_by": null, "status": "delivered", "distance": 22533, "duration": 2780, "price": 31500, "credit": false, "cashed": false, "has_return": false, "pay_at_dest": false, "delay": 0, "transport_type": "motor_taxi", "city": "tehran", "is_api": true, "weight": 20, "accept_lat": 35.748778183994, "accept_lng": 51.411911191127, "rate": 0, "comment": null, "scheduled_at": null, "launched_at": "2017-09-20T11:32:34+04:30", "accepted_at": "2017-09-20T11:32:37+04:30", "delivered_at": "2017-09-20T11:39:38+04:30", "finished_at": null, "stopped_at": null, "removed_at": null, "created_at": "2017-09-20T11:32:34+04:30", "updated_at": "2017-09-20T11:39:38+04:30", "deleted_at": null, "picking_at": "2017-09-20T11:33:37+04:30", "delivering_at": "2017-09-20T11:34:37+04:30", "addresses": [ { "lat": "35.75546", "lng": "51.416874", "type": "origin", "priority": 0, "arrived_at": "2017-09-20T11:33:37+04:30", "handled_at": "2017-09-20T11:34:37+04:30", "id": 568548, "city": "tehran", "order_id": "309", "customer_id": "99", "courier_id": "130", "status": "handled", "address": "address of order s origin", "description": "some description for origin", "unit": "unit of origin address", "number": "number of origin address", "person_fullname": "sender s name", "person_phone": "sender s phone", "signed_by": "", "distance": "868", "duration": "107", "created_at": "2017-09-20T11:32:34+04:30", "updated_at": "2017-09-20T11:34:37+04:30", "deleted_at": "", "arrive_lat": "35.750245509478695", "arrive_lng": "51.397214392844006", "handle_lat": "35.7501112063621", "handle_lng": "51.41630904680925", "signature": { "url": "/uploads/order/309/address/568548/signature.jpg?var=1506000110" } }, { "lat": "35.758495", "lng": "51.44255", "type": "destination", "priority": 1, "arrived_at": "2017-09-20T11:35:38+04:30", "handled_at": "2017-09-20T11:36:38+04:30", "id": 568549, "city": "tehran", "order_id": "309", "customer_id": "99", "courier_id": "130", "status": "handled", "address": "address of order s origin", "description": "some description for origin", "unit": "unit of origin address", "number": "number of origin address", "person_fullname": "sender s name", "person_phone": "sender s phone", "signed_by": "", "distance": "2341", "duration": "288", "created_at": "2017-09-20T11:32:34+04:30", "updated_at": "2017-09-20T11:36:38+04:30", "deleted_at": "", "arrive_lat": "35.7581975033594", "arrive_lng": "51.41919184233538", "handle_lat": "35.76113384396972", "handle_lng": "51.414348540631", "signature": { "url": "/uploads/order/309/address/568549/signature.jpg?var=1506000110" } }, { "lat": "35.895452", "lng": "51.589632", "type": "destination", "priority": 2, "arrived_at": "2017-09-20T11:37:38+04:30", "handled_at": "2017-09-20T11:39:38+04:30", "id": 568550, "city": "tehran", "order_id": "309", "customer_id": "99", "courier_id": "130", "status": "handled", "address": "address of order s origin", "description": "some description for origin", "unit": "unit of origin address", "number": "number of origin address", "person_fullname": "sender s name", "person_phone": "sender s phone", "signed_by": "", "distance": "20192", "duration": "2492", "created_at": "2017-09-20T11:32:34+04:30", "updated_at": "2017-09-20T11:39:38+04:30", "deleted_at": "", "arrive_lat": "35.76024827733142", "arrive_lng": "51.3950500507545", "handle_lat": "35.75058415169185", "handle_lng": "51.40547057923416", "signature": { "url": "/uploads/order/309/address/568550/signature.jpg?var=1506000110" } } ], "screenshot": { "url": "https:screenshots.alopeyk.com/?size=640x330&maptype=roadmap&language=fa&markers=icon:https:api.alopeyk.com/images/marker-origin.png%7C35.75546,51.416874&markers=icon:https:api.alopeyk.com/images/marker-destination.png%7C35.758495,51.44255&markers=icon:https:api.alopeyk.com/images/marker-destination.png%7C35.895452,51.589632" }, "progress": "1.0000", "courier": { "id": 130, "phone": "09499359023", "firstname": "محمد رضا", "lastname": "نورشی", "email": "", "avatar": { "url": "/uploads/user/130/avatar.jpg?var=1506000110" }, "last_online": null, "is_online": null }, "customer": { "id": 99, "phone": "09701234567", "firstname": "mohammad hassan", "lastname": "daneshvar", "email": "daneshvar.email@gmail.com", "avatar": { "url": "/uploads/user/99/avatar.jpg?var=1506000110" }, "last_online": null, "is_online": null }, "last_position_minimal": null, "eta_minimal": { "id": 46, "last_position_id": 55, "duration": 0, "distance": 0, "action": "handle", "address_id": "568550", "updated_at": "2017-09-20 11:36:39" }, "signature": { "url": "/uploads/order/309/address/568550/signature.jpg?var=1506000110" }, "order_token": "69b9e3f08309g2b19e2458fa429g99734670660", "nprice": null, "subsidy": null, "signed_by": "" } }
7. 取消订单
您可以在快递员到达之前(在接受状态之前)取消任何订单。
use AloPeyk\Model\Order; // $orderID = " 300 "; // works fine as 300 // $orderID = " 300<p>"; // works fine as 300 // $orderID = ''; // throws AloPeykException // $orderID = null; // throws AloPeykException $orderID = 300; $apiResponse = Order::cancel($orderID); var_dump($apiResponse);
示例 API 响应
{ "status": "success", "message": null, "object": { "id": 300, "status": "cancelled", "courier_id": 121, "customer_id": 99, "signature": { "url": "/uploads/order/300/signature.jpg?var=1505807816" }, "order_token": null, "nprice": null, "subsidy": null, "signed_by": "" } }
8. 获取批量价格
此端点与正常价格相同,但不同之处在于您可以在一个请求中计算多达15对正常价格。
use AloPeyk\Model\Address; use AloPeyk\Model\Order; /* * Create Origin Address */ $origin = new Address('origin', '35.723711', '51.410547'); /* * Create First Destination */ $firstDest = new Address('destination', '35.728457', '51.436969'); /* * Create Second Destination */ $secondDest = new Address('destination', '35.729379', '51.418151'); /* * Create New Order */ $orders[] = new Order('motor_taxi', $origin, [$firstDest, $secondDest]); $orders[] = new Order('car', $origin, [$firstDest, $secondDest]); $orders[] = new Order('cargo_s', $origin, [$firstDest, $secondDest]); $orders[] = new Order('cargo', $origin, [$firstDest, $secondDest]); $apiResponse = AloPeykApiHandler::getBatchPrice($orders);
许可证
此软件包根据MIT许可证发布。
版权(c)2012-2017 Markus Poerschke
在此,免费许可任何获得此软件及其相关文档副本(“软件”)的人,在不限制包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是受以下条件约束
上述版权声明和本许可声明应包含在软件的副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他方式产生的,无论是源于、因与软件或软件的使用或其他操作相关。