vismutx / laravel-spapi
一个基于 Laravel 的 Amazon Selling Partner API 包装器(via jlevers/selling-partner-api)
Requires
- php: >=7.4
- haydenpierce/class-finder: ^0.4.4
- illuminate/cache: ^8.41|^9.41|^10.0
- illuminate/database: ^8.41|^9.41|^10.0
- illuminate/support: ^8.41|^9.41|^10.0
- jlevers/selling-partner-api: ^5.9
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.13
This package is auto-updated.
Last update: 2024-09-06 20:42:30 UTC
README
Laravel 的 Selling Partner API 包装器
使用 Laravel 简化连接到 Selling Partner API。底层使用 jlevers/selling-partner-api。
相关包
jlevers/selling-partner-api
:Amazon Selling Partner API 的 PHP 库。highsidelabs/laravel-spapi
是围绕jlevers/selling-partner-api
的 Laravel 包装器。highsidelabs/walmart-api
:用于 Walmart 卖家和供应商 API 的 PHP 库,包括市场、直销供应商、内容提供者和仓库供应商 API。highsidelabs/amazon-business-api
:用于 Amazon Business API 的 PHP 库,接口与jlevers/selling-partner-api
非常相似。
此包由 Highside Labs 开发和维护。如果您需要支持与 Amazon(或任何其他电子商务平台的)API 集成,我们将很乐意提供帮助!请通过 hi@highsidelabs.co 发送电子邮件给我们。我们很高兴收到您的反馈 :)
如果您觉得我们的包很有用,请考虑 成为赞助者,或通过下面的按钮捐款。我们感激您提供的任何支持!
在我们的博客上有一个更详细的指南 使用此包。
安装
$ composer require highsidelabs/laravel-spapi
目录
概述
此库有两种模式
- 单一卖家模式,如果您只计划使用一组凭证向 Selling Partner API 发送请求,则应使用此模式(大多数人属于此类别,所以如果您不确定,这可能是您)。
- 多卖家模式,这使得您在使用多个 SP API 凭证时,可以轻松地在 Laravel 中向 Selling Partner API 发送请求(例如,如果您经营多个卖家账户,或在多个地区经营一个卖家账户)。
单一卖家模式
设置
- 发布配置文件
$ php artisan vendor:publish --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider" --tag="config"
- 将这些环境变量添加到您的
.env
SPAPI_AWS_ACCESS_KEY_ID= SPAPI_AWS_SECRET_ACCESS_KEY= SPAPI_LWA_CLIENT_ID= SPAPI_LWA_CLIENT_SECRET= SPAPI_LWA_REFRESH_TOKEN= # Optional # SPAPI_AWS_ROLE_ARN= # SPAPI_ENDPOINT_REGION=
如果在卖家中心,您使用 IAM 角色ARN而不是 IAM 用户ARN配置了 SP API 应用程序,则需要将那个 ARN 放在 SPAPI_AWS_ROLE_ARN
环境变量中。否则,您可以留空。将 SPAPI_ENDPOINT_REGION
设置为要使用端点的区域代码(欧洲为 EU,远东为 FE,北美为 NA)。
您已经准备好出发了!
用法
jlevers/selling-partner-api 支持的所有 API 类都可以进行类型提示。此示例假设您有权访问您的 SP API 应用程序配置中的 Selling Partner Insights
角色(因此您可以通过 SellersV1Api::getMarketplaceParticipations()
调用它),但对于类型提示任何其他 Selling Partner API 类,原理相同。
use Illuminate\Http\JsonResponse; use SellingPartnerApi\Api\SellersV1Api as SellersApi; use SellingPartnerApi\ApiException; class SpApiController extends Controller { public function index(SellersApi $api): JsonResponse { try { $result = $api->getMarketplaceParticipations(); return response()->json($result); } catch (ApiException $e) { $jsonBody = json_decode($e->getResponseBody()); return response()->json($jsonBody, $e->getCode()); } } }
多卖家模式
设置
- 发布配置文件
# Publish config/spapi.php file $ php artisan vendor:publish --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider" --tag="config"
-
更新配置以支持多卖家使用。
- 将
config/spapi.php
中的installation_type
更改为multi
。 - 如果您打算使用的卖家凭证集合不是与同一组AWS凭证(访问密钥ID、秘密访问密钥,以及可选的角色ARN)相关联,请确保将
aws.dynamic
键设置为true。如果您在运行迁移(下一步)之前没有进行此更改,则不会将AWS凭证字段添加到数据库中。(如果您不确定此更改是否适用于您,那么可能不适用。)
- 将
-
发布多卖家迁移
# Publish migrations to database/migrations/ $ php artisan vendor:publish --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider" --tag="multi"
- 运行数据库迁移以设置
spapi_sellers
和spapi_credentials
表(分别对应于HighsideLabs\LaravelSpApi\Models\Seller
和HighsideLabs\LaravelSpApi\Models\Credentials
模型)
$ php artisan migrate
- 将这些环境变量添加到您的
.env
文件中(除非您在第2步中已将aws.dynamic
配置标志更改为true
)
SPAPI_AWS_ACCESS_KEY_ID= SPAPI_AWS_SECRET_ACCESS_KEY=
用法
首先,您需要创建一个Seller
以及为其创建一些Credentials
。与任何其他Laravel模型一样,Seller
和Credentials
模型工作。
use HighsideLabs\LaravelSpApi\Models; $seller = Models\Seller::create(['name' => 'MySeller']); $credentials = Models\Credentials::create([ 'seller_id' => $seller->id, // You can find your selling partner ID/merchant ID by going to // https://<regional-seller-central-domain>/sw/AccountInfo/MerchantToken/step/MerchantToken 'selling_partner_id' => '<AMAZON SELLER ID>', // Can be NA, EU, or FE 'region' => 'NA', // The LWA client ID and client secret for the SP API application these credentials were created with 'client_id' => 'amzn....', 'client_secret' => 'fec9/aw....', // The LWA refresh token for this seller 'refresh_token' => 'IWeB|....', // If you have the `aws.dynamic` config flag set to true, you'll also need these attributes: // 'access_key_id' => 'AKIA....', // 'secret_access_key' => '23pasdf....', // // Only necessary if you configured your SP API setup with an IAM role ARN, otherwise can be omitted // // 'role_arn' => 'arn:aws:iam::....', ]);
一旦您在数据库中有了凭证,您就可以这样使用它们
use HighsideLabs\LaravelSpApi\Models\Credentials; use Illuminate\Http\JsonResponse; use SellingPartnerApi\Api\SellersV1Api as SellersApi; use SellingPartnerApi\ApiException; class SpApiController extends Controller { public function __construct(SellersApi $api) { // Retrieve the credentials we just created $creds = Credentials::first(); $this->api = $creds->useOn($api); // You can now make calls to the SP API with $creds using $this->api! } public function index(): JsonResponse { try { $result = $this->api->getMarketplaceParticipations(); return response()->json($result); } catch (ApiException $e) { $jsonBody = json_decode($e->getResponseBody()); return response()->json($jsonBody, $e->getCode()); } } }
或者,如果您想不自动注入而使用Selling Partner API类,您可以快速创建一个,如下所示
use HighsideLabs\LaravelSpApi\SellingPartnerApi; use SellingPartnerApi\Api\SellersV1Api as SellersApi; $creds = Credentials::first(); $api = SellingPartnerApi::makeApi(SellersApi::class, $creds);