jasara/laravel-selling-partner-api

Laravel 的 Amazon Selling Partner API SDK 封装器

v4.0.0 2024-09-09 20:17 UTC

This package is auto-updated.

Last update: 2024-09-09 20:23:34 UTC


README

Latest Version on Packagist GitHub Tests Action Status Code coverage Total Downloads

本包是围绕 Jasara 的 Amazon Selling Partner API PHP SDK 的 Laravel 封装器。

许可协议

虽然此包有 MIT 许可协议,但核心 PHP SDK 包没有商业许可。如果您在商业上使用此包,请参阅核心 PHP SDK 包的 许可部分

安装

您可以通过 composer 安装此包

composer require jasara/laravel-selling-partner-api

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Jasara\LaravelAmznSPA\LaravelAmznSPAServiceProvider" --tag="laravel-selling-partner-api-config"

这是已发布配置文件的内容

return [
    'marketplace_id' => env('AMZN_SPA_MARKETPLACE_ID'),
    'application_id' => env('AMZN_SPA_APPLICATION_ID'),
    'redirect_url' => env('AMZN_SPA_REDIRECT_URL'),
    'use_test_endpoints' => env('AMZN_SPA_USE_TEST_ENDPOINTS'),
    'aws_access_key' => env('AMZN_SPA_AWS_ACCESS_KEY'),
    'aws_secret_key' => env('AMZN_SPA_AWS_SECRET_KEY'),
    'lwa_client_id' => env('AMZN_SPA_LWA_CLIENT_ID'),
    'lwa_client_secret' => env('AMZN_SPA_LWA_CLIENT_SECRET'),
];

使用方法

有关完整的使用信息,请参阅 文档网站

在此 Laravel 封装器中,当您设置以下环境变量时,底层库将自动配置

AMZN_SPA_MARKETPLACE_ID=ATVPDKIKX0DER
AMZN_SPA_APPLICATION_ID=amzn1.sellerapps.app.appid-1234-5678-a1b2-a1b2c3d4e5f6
AMZN_SPA_REDIRECT_URL=yourapp.com/amazon/oauth/redirect
AMZN_SPA_USE_TEST_ENDPOINTS=true
AMZN_SPA_AWS_ACCESS_KEY=AKIASECRETKEY
AMZN_SPA_AWS_SECRET_KEY=rf7x7rpjqq1tlcbbv2r9iahcmm6mluaqn8deitcl
AMZN_SPA_LWA_CLIENT_ID=17r2r9iahcmm6mlubv2r9iahcmm6mluaqnlcbbv2r9iahiahcmm6mluaqn8de
AMZN_SPA_LWA_CLIENT_SECRET=Atzr|1tlcbbv2r9iahcmm6mluaqn8d-secret

要调用 Amazon API,首先实例化 Laravel 封装器类,将任何配置参数(例如客户端授权令牌)传递给构造函数。

$amzn = new \Jasara\LaravelAmznSPA\LaravelAmznSPA(
    tokens: new \Jasara\AmznSPA\DataTransferObjects\AuthTokensDTO(
        access_token: $access_token, // optional if there is a refresh token
        expires_at: $expires_at, // optional, instance of CarbonImmutable
        refresh_token: $refresh_token, // optional if there is an access token, Passing in the refresh token will automatically generate a new access token when needed
    ),
    http: $http, // instance of Illuminate\Http\Client\Factory - if you would like to stub tests, you can pass in a faked HTTP instance
    grantless_token: new \Jasara\AmznSPA\DataTransferObjects\GrantlessTokenDTO(
        access_token: $access_token, // optional, a new token will be automatically generated if not passed in
        expires_at: $expires_at, // optional, instance of CarbonImmutable
    ),
    marketplace_id: $marketplace_id, // e.g. ATVPDKIKX0DER
);

然后,您可以直接调用底层库资源,例如 Notifications 资源。响应是一个遵循 Amazon 架构的数据传输对象。

$amzn->notifications->getDestinations();
$destination_id = $response->payload[0]->destination_id;