vismutx / laravel-spapi

一个基于 Laravel 的 Amazon Selling Partner API 包装器(via jlevers/selling-partner-api)

dev-main 2023-07-06 18:07 UTC

This package is auto-updated.

Last update: 2024-09-06 20:42:30 UTC


README

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 库,包括市场、直销供应商、内容提供者和仓库供应商 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 --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider" --tag="config"
  1. 将这些环境变量添加到您的 .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());
        }
    }
}

多卖家模式

设置

  1. 发布配置文件
# Publish config/spapi.php file
$ php artisan vendor:publish --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider" --tag="config"
  1. 更新配置以支持多卖家使用。

    • config/spapi.php 中的 installation_type 更改为 multi
    • 如果您打算使用的卖家凭证集合不是与同一组AWS凭证(访问密钥ID、秘密访问密钥,以及可选的角色ARN)相关联,请确保将aws.dynamic键设置为true。如果您在运行迁移(下一步)之前没有进行此更改,则不会将AWS凭证字段添加到数据库中。(如果您不确定此更改是否适用于您,那么可能不适用。)
  2. 发布多卖家迁移

# Publish migrations to database/migrations/
$ php artisan vendor:publish --provider="HighsideLabs\LaravelSpApi\SellingPartnerApiServiceProvider" --tag="multi"
  1. 运行数据库迁移以设置spapi_sellersspapi_credentials表(分别对应于HighsideLabs\LaravelSpApi\Models\SellerHighsideLabs\LaravelSpApi\Models\Credentials模型)
$ php artisan migrate
  1. 将这些环境变量添加到您的.env文件中(除非您在第2步中已将aws.dynamic配置标志更改为true
SPAPI_AWS_ACCESS_KEY_ID=
SPAPI_AWS_SECRET_ACCESS_KEY=

用法

首先,您需要创建一个Seller以及为其创建一些Credentials。与任何其他Laravel模型一样,SellerCredentials模型工作。

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);