highsidelabs/laravel-spapi

Amazon Selling Partner API 的 Laravel 封装 (通过 jlevers/selling-partner-api)

v2.0.2 2024-09-11 12:11 UTC

This package is auto-updated.

Last update: 2024-09-11 12:14:26 UTC


README

Highside Labs logo

Total downloads Latest stable version License

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。我们很乐意听到您的声音 :)

如果您觉得我们的包很有用,请考虑 成为赞助商,或通过下面的按钮进行捐赠。我们感激您提供的任何形式的支持!

Donate to Highside Labs

在我们的博客上提供了使用此包的更深入指南 在此

安装

$ composer require highsidelabs/laravel-spapi

目录

概述

此库有两种模式

  1. 单卖家模式,如果您只计划使用一组凭证向 Selling Partner API 发送请求(大多数人属于此类,如果您不确定,这可能是您),则应使用该模式。
  2. 多卖家模式,当您有多组 SP API 凭证时,它使您能够轻松地从 Laravel 内部向 Selling Partner API 发送请求(例如,如果您经营多个卖家账户,或在多个区域经营一个卖家账户)。

单卖家模式

设置

  1. 发布配置文件
$ php artisan vendor:publish --tag="spapi-config"
  1. 将这些环境变量添加到您的 .env
SPAPI_LWA_CLIENT_ID=
SPAPI_LWA_CLIENT_SECRET=
SPAPI_LWA_REFRESH_TOKEN=

# Optional
# SPAPI_ENDPOINT_REGION=

SPAPI_ENDPOINT_REGION 设置为您想要使用的端点所在区域的代码(欧洲为 EU,远东为 FE,北美为 NA)。默认为北美。

使用方法

SellerConnectorVendorConnector 可以进行类型提示,并可以使用这些连接器类来创建由 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());
        }
    }
}

多卖家模式

设置

  1. 发布配置文件
# Publish config/spapi.php file
$ php artisan vendor:publish --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider"
  1. config/spapi.php 中的 installation_type 更改为 multi

  2. 发布多卖家迁移

# Publish migrations to database/migrations/
$ php artisan vendor:publish --tag="spapi-multi-seller"
  1. 运行数据库迁移以设置 spapi_sellersspapi_credentials 表(分别对应于 HighsideLabs\LaravelSpApi\Models\SellerHighsideLabs\LaravelSpApi\Models\Credentials 模型)
$ php artisan migrate

使用方法

首先您需要创建一个 Seller,并为该卖家创建一些 CredentialsSellerCredentials 模型与其他 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