nilsenj/uber

laravel 的简单 Uber PHP SDK 实现

dev-master 2018-02-04 23:05 UTC

This package is not auto-updated.

Last update: 2024-09-20 08:01:01 UTC


README

uber api v1.* for Laravel 5.*

首先 前往 Uber 控制台

并获取 server_token

安装

  1. 运行 composer require nilsenj/uber 或在 composer.json 中的 require 键中添加 "nilsenj/uber": "dev-master",然后运行 composer install

  2. \nilsenj\Uber\UberServiceProvider::class, 添加到 config/app.php 文件中的 providers

  3. 'Uber' => \nilsenj\Uber\Facades\UberFacade::class, 添加到 config/app.php 文件中的 aliases

  4. 运行 php artisan vendor:publish 以发布配置。您可以在 config/uber.php 中查看它

用法

#####使用合约

protected $uber;

    /**
     * UberController constructor.
     * @param UberContract $uber
     */
    public function __construct(UberContract $uber)
    {
        $this->uber = $uber;
    }
    
    public function index() {
        $this->uber->someMethod();
    }
    

#####方法列表

获取产品

按位置

$products = app('UberContract')->getProductsByLocation($latitude, $longitude);

https://developer.uber.com/docs/riders/references/api/v1.2/products-get

按 ID

$product = app('UberContract')->getProductsById($productId);

https://developer.uber.com/docs/riders/references/api/v1.2/products-product_id-get

获取价格估计

$estimates = app('UberContract')->getPriceEstimates($start_latitude, $start_longitude, $end_latitude, $end_longitude);

https://developer.uber.com/docs/riders/references/api/v1.2/estimates-price-get

获取时间估计

$estimates = app('UberContract')->getTimeEstimates($start_latitude, $start_longitude);

https://developer.uber.com/docs/riders/references/api/v1.2/estimates-time-get

获取促销

$promotions = app('UberContract')->getPromotions($start_latitude, $start_longitude, $end_latitude, $end_longitude);

https://developer.uber.com/docs/riders/ride-promotions/introduction

获取用户活动

此功能仅从版本 1.1 开始提供。

$history = app('UberContract')->getUserActivity();

https://developer.uber.com/docs/riders/references/api/v1.2/history-get

获取用户资料

$profile = app('UberContract')->getUserProfile();

https://developer.uber.com/docs/riders/references/api/v1.2/me-get

更新用户资料

$attributes = array('applied_promotion_codes' => 'PROMO_CODE');
$profileResponse = app('UberContract')->updateUserProfile($attributes);

https://developer.uber.com/docs/riders/references/api/v1.2/me-patch

获取支付方式

$paymentMethods = app('UberContract')->getPaymentMethods();

https://developer.uber.com/docs/riders/references/api/v1.2/payment-methods-get

获取地点

$placeId = 'home';
$place = app('UberContract')->getPlace($placeId);

https://developer.uber.com/docs/riders/references/api/v1.2/places-place_id-get

更新地点

$placeId = 'home';
$attributes = array('address' => '685 Market St, San Francisco, CA 94103, USA');
$place = app('UberContract')->updatePlace($placeId, $attributes);

https://developer.uber.com/docs/riders/references/api/v1.2/places-place_id-put

请求行程

$request = app('UberContract')->requestToRide($start_latitude, $start_longitude, $end_latitude, 
                $end_longitude, $product_id = null, $surge_confirmation_id = null, $payment_method_id = null);

https://developer.uber.com/docs/riders/ride-requests/tutorials/api/best-practices#handling-surge-pricing

获取当前行程详情

$request = app('UberContract')->getCurrentRideDetails();

https://developer.uber.com/docs/riders/references/api/v1.2/requests-current-get

获取行程详情

$request = app('UberContract')->getRideDetails($requestId);

https://developer.uber.com/docs/riders/references/api/v1.2/requests-request_id-get

更新当前行程详情

$end_address= '685 Market St, San Francisco, CA 94103, USA',
$end_nickname = 'da crib',
$end_place_id = 'home',
$end_latitude = '41.87499492',
$end_longitude = '-87.67126465'

$updateRequest = app('UberContract')->updateCurrentRideDetails($end_address, $end_nickname, $end_place_id,
                                                                    $end_latitude, $end_longitude);

https://developer.uber.com/docs/riders/references/api/v1.2/requests-current-patch

更新行程详情

$requestId = '4bfc6c57-98c0-424f-a72e-c1e2a1d49939'

$end_address = '685 Market St, San Francisco, CA 94103, USA',
$end_nickname = 'da crib',
$end_place_id = 'home',
$end_latitude = '41.87499492',
$end_longitude = '-87.67126465'

$updateRequest = Uber::updateRideDetails($requestId, $end_address, $end_nickname, $end_place_id,
                                                             $end_latitude, $end_longitude);

https://developer.uber.com/docs/riders/references/api/v1.2/requests-request_id-patch

获取行程估计

$product_id = '4bfc6c57-98c0-424f-a72e-c1e2a1d49939',
$start_latitude = '41.85582993',
$start_longitude = '-87.62730337',
$end_latitude = '41.87499492', // optional
$end_longitude = '-87.67126465', // optional

$requestEstimate = app('UberContract')->getRideEstimate($product_id, $start_latitude, 
                    $start_longitude, $end_latitude, $end_longitude);

https://developer.uber.com/docs/riders/references/api/v1.2/requests-estimate-post

获取行程地图

$map = Uber::getRideMap($requestId);

https://developer.uber.com/docs/riders/references/api/v1.2/requests-request_id-map-get

获取行程收据

$receipt = app('UberContract')->getRideReceipt($requestId);

https://developer.uber.com/docs/riders/references/api/v1.2/requests-current-delete

取消行程

$request = app('UberContract')->cancelRide($requestId);

https://developer.uber.com/docs/riders/references/api/v1.2/requests-request_id-delete

创建提醒

$attributes = array(
    'reminder_time' => '1429294463',
    'phone_number' => '555-555-5555',
    'event' => array(
        'time' => '1429294463',
        'name' => 'Frisbee with friends',
        'location' => 'Dolores Park',
        'latitude' => '37.759773',
        'longitude' => '-122.427063',
    ),
    'product_id' => 'a1111c8c-c720-46c3-8534-2fcdd730040d',
    'trip_branding' => array(
        'link_text' => 'View team roster',
        'partner_deeplink' => 'partner://team/9383',
    )
);
$reminder = app('UberContract')->createReminder($attributes)

https://developer.uber.com/docs/riders/references/api/v1.2/reminders-post

获取提醒

$reminderId = '4bfc6c57-98c0-424f-a72e-c1e2a1d49939';
$reminder = app('UberContract')->getReminder($reminderId);

https://developer.uber.com/docs/riders/references/api/v1.2/reminders-reminder_id-get

更新提醒

$reminderId = '4bfc6c57-98c0-424f-a72e-c1e2a1d49939';
$attributes = array(
    'reminder_time' => '1429294463',
    'phone_number' => '555-555-5555',
    'event' => array(
        'time' => '1429294463',
        'name' => 'Frisbee with friends',
        'location' => 'Dolores Park',
        'latitude' => '37.759773',
        'longitude' => '-122.427063',
    ),
    'product_id' => 'a1111c8c-c720-46c3-8534-2fcdd730040d',
    'trip_branding' => array(
        'link_text' => 'View team roster',
        'partner_deeplink' => 'partner://team/9383',
    )
);
$reminder = Uber::updateReminder($reminderId, $attributes);

https://developer.uber.com/docs/riders/references/api/v1.2/reminders-reminder_id-patch

取消提醒

$reminderId = '4bfc6c57-98c0-424f-a72e-c1e2a1d49939';
$reminder = app('UberContract')->cancelReminder($reminderId);

https://developer.uber.com/docs/riders/references/api/v1.2/reminders-reminder_id-delete

速率限制

此功能仅支持 API 的 v1 版本。

速率限制是基于特定客户端的秘密令牌实现的。默认情况下,每个秘密令牌每小时可以发起 1,000 个请求。

当使用此包消耗服务时,您的速率限制状态将在客户端中可用。

$rateLimit = app('UberContract')->rateLimiting($productId);
will return an array
["limit" => , "remaining" => , "reset" => ]

这些值将在每次请求后更新。在客户端创建后和第一个成功请求之前,getRateLimit 将返回 null。

https://developer.uber.com/v1/api-reference/#rate-limiting

使用沙盒

修改正在进行的沙盒请求的状态。

当客户端不在沙盒模式下调用这些方法时,将抛出 Stevenmaguire\Uber\Exception。除非您正在使用沙盒环境,否则底层API端点没有任何效果。

$product_id = '4bfc6c57-98c0-424f-a72e-c1e2a1d49939',
$start_latitude = '41.85582993',
$start_longitude = '-87.62730337',
$end_latitude = '41.87499492',
$end_longitude = '-87.67126465'

$updateRequest = app('UberContract')->modifyOngoingStatusRequestSandbox(
                 $product_id, $start_latitude, $start_longitude, $end_latitude,
                 $end_longitude, $status = '');