coopcycle / coopcycle-php-sdk
v1.0.2
2021-03-26 05:58 UTC
Requires
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpunit/phpunit: ^6.5.5 || ^7.0
README
安装
推荐通过composer安装 coopcycle-php-sdk。
在命令行中运行以下命令
php composer require coopcycle/coopcycle-php-sdk
用法
要实例化客户端,您需要一个客户端ID和一个客户端密钥。
use CoopCycle\Client; $client = new Client([ 'base_uri' => 'https://acme.coopcycle.org', 'client_id' => 'YourClientId', 'client_secret' => 'YourClientSecret' ]);
创建配送任务
您可以使用客户端创建配送任务。
$request = [ 'pickup' => [ 'address' => '50, Rue de Rivoli, Paris' ], 'dropoff' => [ 'address' => '90, Rue de Rivoli, Paris', 'before' => 'today 13:00' ], ]; $response = $client->deliveries->create($request);
创建webhooks
您还可以使用客户端订阅webhooks。
$data = [ 'event' => 'delivery.completed', 'url' => 'https://coopcycle.org/webhook', ]; $response = $client->webhooks->create($data);
验证webhooks签名
当您创建webhook时,响应对象将包含一个 secret 属性。请确保在您的系统中的某个地方存储此 secret,以便稍后验证签名。
{
"@context":"/api/contexts/Webhook",
"@id":"/api/webhooks/1",
"@type":"Webhook",
"url":"https://example.com/webhook",
"event":"delivery.completed",
"secret":"4mCOyJ7UAa371oUjYcC2R9BZRx5eQT08qTzLAnh4e8M="
}
当您在端点接收到webhook时,X-CoopCycle-Signature 标头将包含一个HMAC签名。
以下是一个示例Symfony控制器
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class WebhookHandler { public function __invoke(Request $request) { $payload = $request->getContent(); $signature = $request->headers->get('X-CoopCycle-Signature'); // You will probably restore the secret from your database instead $secret = "4mCOyJ7UAa371oUjYcC2R9BZRx5eQT08qTzLAnh4e8M="; if (!$client->webhooks->verifySignature($payload, $signature, $secret)) { return new Response('Invalid webhook signature', 400); } return new Response('OK', 200); } }