alopeyk/alopeyk-api-php

此软件包已被废弃,不再维护。未建议替代软件包。

AloPeyk Api PHP 处理器

安装: 384

依赖关系: 0

建议者: 0

安全: 0

星星: 10

关注者: 6

分支: 4

开放问题: 3

类型:软件包

v1.4.0 2024-02-20 08:33 UTC

README

License Latest Stable Version Monthly Downloads

此软件包旨在简化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

在此,免费许可任何获得此软件及其相关文档副本(“软件”)的人,在不限制包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是受以下条件约束

上述版权声明和本许可声明应包含在软件的副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他方式产生的,无论是源于、因与软件或软件的使用或其他操作相关。