aglipanci / postmates-api
Postmates API Client for PHP
Installs: 16 536
Dependents: 0
Suggesters: 0
Security: 0
Stars: 16
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- php: ^5.6 || ~7.0
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- phpunit/phpunit: ~4.6
README
A PHP client for consuming the Postmates API.
Install
Via Composer
$ composer require aglipanci/postmates-api
Note that the minimum required version of PHP is 5.6
Usage
Create client
$client = new Postmates\PostmatesClient([ 'customer_id' => 'some_customer_id', 'api_key' => 'production_or_test_api_key' ]);
Retrieve an API Key here after creating a developer account.
Get a Delivery Quote
$delivery_quote = new Postmates\Resources\DeliveryQuote($client); $delivery_quote->getQuote('501-525 Brannan St, San Francisco, CA 94107', '6 Colin P Kelly Jr St, San Francisco, CA 94107');
https://postmates.com/developer/docs/endpoints#get_quote
Get Delivery Zones
$delivery_zones = new Postmates\Resources\DeliveryZones($client); $delivery_zones->listZones();
https://postmates.com/developer/docs/endpoints#get_zones
Create a Delivery
$delivery = new Postmates\Resources\Delivery($client); $params = [ 'manifest' => 'test manifest', 'pickup_name' => 'test pickup nanme', 'pickup_address' => '501-525 Brannan St, San Francisco, CA 94107', 'pickup_phone_number' => '222 551 1234', 'dropoff_name' => 'test dropoff name', 'dropoff_address' => '6 Colin P Kelly Jr St, San Francisco, CA 94107', 'dropoff_phone_number' => '222 555 5432', ]; $delivery->create($params);
https://postmates.com/developer/docs/endpoints#create_delivery
List Deliveries
$delivery = new Postmates\Resources\Delivery($client); $delivery->listDeliveries();
https://postmates.com/developer/docs/endpoints#list_deliveries
Get a Delivery
$delivery = new Postmates\Resources\Delivery($client); $delivery->get('del_LAPCo_EAxDv6z-');
https://postmates.com/developer/docs/endpoints#get_delivery
Cancel a Delivery
$delivery = new Postmates\Resources\Delivery($client); $delivery->cancel('del_LAPCo_EAxDv6a-');
https://postmates.com/developer/docs/endpoints#cancel_delivery
Add Tip to a Delivery
$delivery = new Postmates\Resources\Delivery($client); $delivery->addTip('del_LAPCo_EAxDv6a-', 1000); // amount in cents
https://postmates.com/developer/docs/endpoints#tip_delivery
Handing WebHooks
$webhook = new Postmates\PostmatesWebhook('signature_secret_key'); $webhook_request = $webhook->parseRequest() // this will validate and return the webhook request if($webhook_request['kind'] == Delivery::EVENT_DELIVERY_STATUS) { //this is a delivery status event } if($webhook_request['kind'] == Delivery::EVENT_COURIER_UPDATE) { //this is a courrier update event }
if you want to just validate the request but handing it on your own:
$webhook = new Postmates\PostmatesWebhook('signature_secret_key'); $webhook_request_is_valid = $webhook->validateRequest($payload, $key)
https://postmates.com/developer/docs#webhooks
Errors
All requests will throw an Postmates\PostmatesException in case API returns an Error. An Example:
$params = [ 'manifest' => 'test manifest', 'pickup_name' => 'test pickup nanme', 'pickup_address' => '501-525 Brannan St, San Francisco, CA 94107', 'pickup_phone_number' => '222 551 1234', 'dropoff_name' => 'test dropoff name', 'dropoff_address' => '6 Colin P Kelly Jr St, San Francisco, CA 94107', 'dropoff_phone_number' => '222 555 5432', ]; try { $delivery->create($params); } catch (Postmates\PostmatesException $e) { $e->getMessage(); $e->getInvalidParams(); }
Testing
$ ./vendor/bin/phpunit
Credits
WooCommerce Integration
WooCommerce Postmates Integration Plugin
License
The MIT License (MIT).