jasara / laravel-selling-partner-api
Laravel 的 Amazon Selling Partner API SDK 封装器
v4.0.0
2024-09-09 20:17 UTC
Requires
- php: ^8.1
- illuminate/http: ^10.0 || ^11.0
- illuminate/support: ^10.0 || ^11.0
- jasara/php-amzn-selling-partner-api: >=0.5.3 <0.7
- spatie/laravel-package-tools: ^1.11.0
Requires (Dev)
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9
- spatie/laravel-ray: ^1.23
README
本包是围绕 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;