highsidelabs / laravel-spapi
Amazon Selling Partner API 的 Laravel 封装 (通过 jlevers/selling-partner-api)
Requires
- php: >=8.2
- illuminate/cache: ^11.0
- illuminate/database: ^11.0
- illuminate/support: ^11.0
- jlevers/selling-partner-api: ^7.1
Requires (Dev)
- laravel/pint: ^1.17
- orchestra/testbench: ^9.2
- phpunit/phpunit: ^11.2
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 库,包括 Marketplace、Drop Ship Vendor、Content Provider 和 Warehouse Supplier 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 --tag="spapi-config"
- 将这些环境变量添加到您的
.env
SPAPI_LWA_CLIENT_ID= SPAPI_LWA_CLIENT_SECRET= SPAPI_LWA_REFRESH_TOKEN= # Optional # SPAPI_ENDPOINT_REGION=
将 SPAPI_ENDPOINT_REGION
设置为您想要使用的端点所在区域的代码(欧洲为 EU,远东为 FE,北美为 NA)。默认为北美。
使用方法
SellerConnector
和 VendorConnector
可以进行类型提示,并可以使用这些连接器类来创建由 jlevers/selling-partner-api 支持的所有 API 的实例。此示例假设您可以访问 SP API 应用配置中的 Selling Partner Insights
角色(因此您可以调用 SellingPartnerApi\Seller\SellersV1\Api::getMarketplaceParticipations()
),但是同样的原则也适用于调用任何其他 Selling Partner API 端点。
use Illuminate\Http\JsonResponse; use Saloon\Exceptions\Request\RequestException; use SellingPartnerApi\Seller\SellerConnector; class SpApiController extends Controller { public function index(SellerConnector $connector): JsonResponse { try { $api = $connector->sellersV1(); $result = $api->getMarketplaceParticipations(); return response()->json($result->json()); } catch (RequestException $e) { $response = $e->getResponse(); return response()->json($response->json(), $e->getStatus()); } } }
多卖家模式
设置
- 发布配置文件
# Publish config/spapi.php file $ php artisan vendor:publish --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider"
-
将
config/spapi.php
中的installation_type
更改为multi
。 -
发布多卖家迁移
# Publish migrations to database/migrations/ $ php artisan vendor:publish --tag="spapi-multi-seller"
- 运行数据库迁移以设置
spapi_sellers
和spapi_credentials
表(分别对应于HighsideLabs\LaravelSpApi\Models\Seller
和HighsideLabs\LaravelSpApi\Models\Credentials
模型)
$ php artisan migrate
使用方法
首先您需要创建一个 Seller
,并为该卖家创建一些 Credentials
。Seller
和 Credentials
模型与其他 Laravel 模型的工作方式相同。
use HighsideLabs\LaravelSpApi\Models\Credentials; use HighsideLabs\LaravelSpApi\Models\Seller; $seller = Seller::create(['name' => 'My Seller']); $credentials = 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|....', ]);
一旦数据库中有凭证,您就可以使用它们来检索 SellerConnector
实例,从而可以获取任何卖家 API 的实例
use HighsideLabs\LaravelSpApi\Models\Credentials; use Illuminate\Http\JsonResponse; use Saloon\Exceptions\Request\RequestException; $creds = Credentials::first(); /** @var SellingPartnerApi\Seller\SellersV1\Api $api */ $api = $creds->sellerConnector()->sellersV1(); try { $result = $api->getMarketplaceParticipations(); $dto = $result->dto(); } catch (RequestException $e) { $responseBody = $e->getResponse()->json(); }
对 VendorConnector
实例也适用
use HighsideLabs\LaravelSpApi\Models\Credentials; use Illuminate\Http\JsonResponse; use Saloon\Exceptions\Request\RequestException; $creds = Credentials::first(); /** @var SellingPartnerApi\Vendor\DirectFulfillmentShippingV1\Api $api */ $api = $creds->vendorConnector()->directFulfillmentShippingV1();
故障排除
如果您遇到类似 String data, right truncated: 7 ERROR: value too long for type character varying(255)
的错误,那可能是因为您正在使用 Laravel 的数据库缓存,默认情况下,缓存键和值的长度限制为 255 个字符。此库提供了一个迁移来解决此问题
$ php artisan vendor:publish --tag="spapi-database-cache"
$ php artisan migrate