looxis/laravel-amazon-mws

为 Laravel 定制的简单 Amazon MWS API 包

0.3.0 2021-06-12 12:14 UTC

This package is auto-updated.

Last update: 2024-09-12 20:03:19 UTC


README

Software License Latest Version on Packagist Build Status StyleCI Scrutinizer Code Quality

为 Laravel 定制的简单 Amazon 市场网络服务 API 包

此包正在开发中。目前我们只实现了我们正在使用的端点。您可以自由添加您需要的端点(贡献)。您可以在端点路线图下查看所有可用的端点列表。

🚨 亚马逊推出了新的 销售伙伴 API 一个基于标准的现代化 REST API 套件。 Github 文档 laravel-amazon-mws 包仅提供 Amazon MWS 服务的函数。我们将在明年(2021年)添加一个用于 SP-Api 的 laravel 包。

内容

链接到官方 Amazon MWS 文档

安装

此包需要 PHP 7.3 和 Laravel 8.0 或更高版本。对于旧版 Laravel 版本,请安装最新的 0.1.x 版本。

使用 composer 安装包

composer require looxis/laravel-amazon-mws

包将自动注册自身。

将您的 MWS 环境变量添加到 .env 文件中。变量名称列在 amazon-mws.php 配置文件 中。

配置

要成功认证 Amazon 市场网络服务,您需要将环境变量添加到您的 .env 文件中。变量名称列在 amazon-mws.php 配置文件 中。您还可以设置默认市场。

您可以选择使用以下方式发布配置

$ php artisan vendor:publish --provider="Looxis\LaravelAmazonMWS\AmazonMWSServiceProvider" --tag="config"

这将在您的配置目录中创建一个 amazon-mws.php

包含环境变量的配置文件内容

<?php

return [
    'access_key_id' => env('MWS_ACCESS_KEY_ID'),
    'secret_key' => env('MWS_SECRET_KEY'),
    'seller_id' => env('MWS_SELLER_ID'),
    'mws_auth_token' => env('MWS_AUTH_TOKEN'),
    'default_market_place' => env('MWS_DEFAULT_MARKET_PLACE', 'DE'),
];

使用

身份验证

Amazon MWS 通过 规范化的查询字符串 对您进行身份验证。Laravel Amazon MWS 包为您处理此操作并为每个请求添加字符串。您只需将您的卖家特定凭据添加到 .env 文件中(配置)。

市场

如果您需要更改市场,只需通过 MWS Facade 在您的代码中设置国家/地区即可。为了简化,此包通过提供的国家选择正确的端点和市场 ID。您不必自己设置它们。(Amazon MWS 端点和市场 ID 概览)如果缺少某些内容,请毫不犹豫地创建一个问题。

AmazonMWS::setMarketplaces('FR');

AmazonMWS::setMarketplaces('DE', 'FR');  //to append multiple marketplaces to your request query strings.

订单

检索您需要的订单信息。Amazon MWS 订单文档概述

列出订单

返回您指定时间段内创建或更新的订单。 MWS 列出订单文档

$response = AmazonMWS::orders()->list([
    'CreatedAfter' => '2020-04-09T18:56:29+02:00'
]);

// List Order By Next Token
$response = AmazonMWS::orders()->list([
    'NextToken' => '27u07N+WSfaaJkJYLDm0ZAmQazDrhw3C...'
]);
限速
  • 最大请求配额为六个,每分钟恢复一个请求。 MWS 限速算法
  • 抛出包含 请求被限速 的 ServerException

获取订单

根据您指定的 AmazonOrderId 返回订单。 MWS 获取订单文档

$response = AmazonMWS::orders()->get("1234-1234-1234"); //get amazon order by id

$response = AmazonMWS::orders()->get("1234-1234-1234", "123-123-123"); //get multiple orders
限速
  • 最大请求配额为六个,每分钟恢复一个请求。 MWS 限速算法
  • 抛出包含 请求被限速 的 ServerException

列出订单项

根据您指定的 AmazonOrderId 返回订单项。 MWS 列出订单项文档

$response = AmazonMWS::orders()->getItems("1234-1234-1234");
限速
  • ListOrderItems 和 ListOrderItemsByNextToken 具有相同的限速
  • 最大请求配额为 30,每两秒恢复一个请求。 MWS 限速算法
  • 抛出包含 请求被限速 的 ServerException

馈送

Feeds API 允许您将库存和订单数据上传到 Amazon Amazon MWS 订单文档概述

提交馈送

上传用于由 Amazon MWS 处理的饲料。

您必须设置饲料类型和内容才能成功提交饲料。xml 的内容取决于 FeedType

$feedXmlContent = '<?xml version="1.0"?> ...';
$response = AmazonMWS::feeds()
                ->setType("_POST_ORDER_ACKNOWLEDGEMENT_DATA_")
                ->setContent($xml)
                ->submit();
限速
  • 最大请求配额为 15,每两分钟恢复一个请求。
  • 每小时请求配额:30 MWS 限速算法
  • 抛出包含 请求被限速 的 ServerException

提交发票饲料(增值税)

您可以使用 UPLOAD_VAT_INVOICE 饲料类型通过 Feeds API 上传发票。使用以下参数的 SubmitFeed 操作提交订单的发票。

发票上传器开发者文档

// File Content
$invoiceFileContent = \File::get(storage_path('invoice.pdf'));

// Feed Options
$params = [
    'orderid' => 'XXX-XXXXXXX-XXXXXXX', //Amazon Order Id
    'invoicenumber' => 'R21-1234', //Your Invoice Number
    'documenttype' => 'Invoice'
];

// Generate Feed Option metadata from params
$feedOptions = collect($params)->map(function($param, $key) {
            return "metadata:{$key}={$param}";
        })->values()->implode(';');
        
// Submit
$response = AmazonMWS::feeds()
                ->setType("_UPLOAD_VAT_INVOICE_")
                ->setContent($invoiceFileContent)
                ->setParams([
                    'FeedOptions' => $feedOptions
                ])
                ->submit();
限速

对于饲料类型 UPLOAD_VAT_INVOICE,限速限制为每 3 秒上传 1 张发票,或每分钟 20 张发票,或每小时 1200 张发票,或每天 28800 张发票。

响应

Amazon MWS XML 响应将被解析并将转换为方便的数组结构。要检查饲料是否成功,您需要通过 GetSubmissionFeedResult 端点检查结果。

SubmitFeedResponse 示例

[
    "request_id" => "e86f7299-9712-43e3-b290-b659da85b527"
    "data" => [
        "FeedSubmissionId" => "2291326430"
        "FeedType" => "_POST_ORDER_ACKNOWLEDGEMENT_DATA_"
        "SubmittedDate" => "2020-03-04T14:54:14+00:00"
        "FeedProcessingStatus" => "_SUBMITTED_"
    ]
]

获取馈送提交结果

返回饲料处理报告和 Content-MD5 标头。

将 Feed 提交 ID 作为参数传递以检索 Amazon MWS 描述 GetFeedSubmissionResult

警告:发票饲料提交结果返回空白字符串而不是 SubmitFeedResponse

$response = AmazonMWS::feeds()
                ->getFeedSubmissionResult($feedSubmissionId);
限速
  • 最大请求配额为 15,每分钟恢复一个请求。
  • 每小时请求配额:60 MWS 限速算法
  • 抛出包含 请求被限速 的 ServerException
响应

Feed 提交结果响应将被解析并将转换为方便的结构。

SubmitFeedResponse 示例

[
    "status_code" => "Complete",
    "processing_summary" => [
        "MessagesProcessed" => "2"
        "MessagesSuccessful" => "2"
        "MessagesWithError" => "0"
        "MessagesWithWarning" => "0"
    ],
    "result" => null
]

商家履行

使用 Merchant Fulfillment 服务,您可以构建应用程序,让卖家使用 Amazon 的 Buy Shipping Services 购买非 Prime 和 Prime 订单的运费。

Amazon MWS 商户履行文档概述

获取有资格的运输服务

返回可用的运输服务报价列表。 MWS 获取合格运输服务文档

使用 ShipmentRequestDetailsShippingOfferingFilter 填充 params

$params = [
    'ShipmentRequestDetails' => [...],
    'ShippingOfferingFilter' => [...]
];
$response = AmazonMWS::merchantFulfillment()->getEligibleShippingServices($params);
限速
  • 最大请求配额为10,每秒恢复5个请求。 MWS限速算法
  • 抛出包含 请求被限速 的 ServerException

获取运输

根据给定的标识符返回现有运输。 MWS获取运输文档

$response = AmazonMWS::merchantFulfillment()->getShipment($shipmentId);
限速
  • 最大请求配额为10,每秒恢复5个请求。 MWS限速算法
  • 抛出包含 请求被限速 的 ServerException

创建运输

创建运输操作购买运输,并根据承运商返回PDF、PNG或ZPL格式的运输标签文档数据。 MWS创建运输文档

$data = [
    'ShippingServiceId' => 'shipment-service-id', //get the shipment id with getEligibleShippingServices()
    'ShipmentRequestDetails' => [...],
];
$response = AmazonMWS::merchantFulfillment()->createShipment($data);
限速
  • 最大请求配额为10,每秒恢复5个请求。 MWS限速算法
  • 抛出包含 请求被限速 的 ServerException

取消运输

取消现有运输。 MWS取消运输文档

$shipmentId = '1234xx1231xx1234';
$response = AmazonMWS::merchantFulfillment()->cancelShipment($shipmentId);
限速
  • 最大请求配额为10,每秒恢复5个请求。 MWS限速算法
  • 抛出包含 请求被限速 的 ServerException

获取附加卖家输入

返回需要从卖家处获取的附加卖家输入列表,以购买您指定的运输服务。 MWS获取附加卖家输入文档

$data = [
    'OrderId' => 'XXX-XXXXXXX-XXXXXXX',
    'ShippingServiceId' => 'shipment-service-id', //get the shipment id with getEligibleShippingServices()
    'ShippingFromAddress' => [...],
];
$response = AmazonMWS::merchantFulfillment()->getAdditionalSellerInputs($data);
限速
  • 最大请求配额为10,每秒恢复5个请求。 MWS限速算法
  • 抛出包含 请求被限速 的 ServerException

获取服务状态

返回Merchant Fulfillment服务的操作状态。 MWS获取服务状态文档

$response = AmazonMWS::merchantFulfillment()->getServiceStatus();
限速
  • 最大请求配额为2,每5秒恢复1个请求。 MWS限速算法
  • 抛出包含 请求被限速 的 ServerException

通用响应

响应格式文档 亚马逊MWS XML响应将被解析并转换为方便的数组结构。GetOrder响应示例

[
    "request_id" => "be781aff-3c63-485a-aec8-951ed3be2ba4",
    "data" => [
        "AmazonOrderId" => "902-3159896-1390916",
        ...
    ]
]

异常

Laravel Amazon MWS包不会捕获guzzle返回的异常。例如,对于限速的ServerExceptions或缺失参数的ClientExceptions。

端点路线图

Laravel Amazon MWS仍在开发中。我们只添加了我们目前自己使用的端点。我们决定在这个早期阶段发布它,以便您可以帮忙添加一些端点或使用现有的端点。

端点列表

测试

composer test

变更日志

请查看 CHANGELOG 获取最近变更的更多信息。

贡献

欢迎提交拉取请求。对于重大变更,请先提交一个问题来讨论您想更改的内容。

请确保适当更新测试。

安全性

如果您发现任何安全相关的问题,请通过电子邮件发送到 dev@looxis.com 而不是使用问题跟踪器。

致谢

关于我们

LOOXIS GmbH,总部位于德国明登。

LOOXIS 是个性化礼品制造商,其产品在欧洲的(照片)专业商店以及通过我们的在线商店在 www.looxis.com 销售。

许可

MIT