coopcycle/coopcycle-php-sdk

v1.0.2 2021-03-26 05:58 UTC

This package is auto-updated.

Last update: 2024-09-26 14:00:59 UTC


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);
    }
}