looxis / laravel-amazon-mws
为 Laravel 定制的简单 Amazon MWS API 包
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.0
- spatie/array-to-xml: ^3.0
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ^0.2.0
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.3
README
为 Laravel 定制的简单 Amazon 市场网络服务 API 包
此包正在开发中。目前我们只实现了我们正在使用的端点。您可以自由添加您需要的端点(贡献)。您可以在端点路线图下查看所有可用的端点列表。
🚨 亚马逊推出了新的 销售伙伴 API 一个基于标准的现代化 REST API 套件。 Github 文档 laravel-amazon-mws 包仅提供 Amazon MWS 服务的函数。我们将在明年(2021年)添加一个用于 SP-Api 的 laravel 包。
内容
安装
此包需要 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 订单的运费。
获取有资格的运输服务
返回可用的运输服务报价列表。 MWS 获取合格运输服务文档
使用 ShipmentRequestDetails 和 ShippingOfferingFilter 填充 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仍在开发中。我们只添加了我们目前自己使用的端点。我们决定在这个早期阶段发布它,以便您可以帮忙添加一些端点或使用现有的端点。
端点列表
- 订单(MWS文档概述)
- ListOrders
- ListOrdersByNextToken
- GetOrder
- ListOrderItems
- ListOrderItemsByNextToken
- GetServiceStatus
- 订单数据类型
- 报告(MWS文档概述)
- SubmitFeed
- Submit Invoice VAT Feed
- GetFeedSubmissionList
- GetFeedSubmissionListByNextToken
- GetFeedSubmissionCount
- CancelFeedSubmissions
- GetFeedSubmissionResult
- Easy Ship(MWS文档概述)
- 财务(MWS文档概述)
- Fulfillment Inbound Shipment(MWS文档概述)
- Fulfillment Inventory(MWS文档概述)
- Fulfillment Outbound Shipment(MWS文档概述)
- Merchant Fulfillment(MWS文档概述)
- GetEligibleShippingServices
- GetAdditionalSellerInputs
- CreateShipment
- GetShipment
- CancelShipment
- GetServiceStatus
- 产品(MWS文档概述)
- 建议 (MWS 文档概述)
- 报告 (MWS 文档概述)
- 卖家 (MWS 文档概述)
- 货运发票 (MWS 文档概述)
- 订阅 (MWS 文档概述)
测试
composer test
变更日志
请查看 CHANGELOG 获取最近变更的更多信息。
贡献
欢迎提交拉取请求。对于重大变更,请先提交一个问题来讨论您想更改的内容。
请确保适当更新测试。
安全性
如果您发现任何安全相关的问题,请通过电子邮件发送到 dev@looxis.com 而不是使用问题跟踪器。
致谢
关于我们
LOOXIS GmbH,总部位于德国明登。
LOOXIS 是个性化礼品制造商,其产品在欧洲的(照片)专业商店以及通过我们的在线商店在 www.looxis.com 销售。