一.下载程序
<?php
namespace app\admin\controller;
use app\common\controller\Backend;
use app\admin\model\Store as StoreModel;
use SellingPartnerApi\Api\CatalogItemsV0Api;
use SellingPartnerApi\Configuration;
use SellingPartnerApi\Endpoint;
use SellingPartnerApi\Api\SellersV1Api as SellersApi;
use SellingPartnerApi\Api\OrdersV0Api;
use SellingPartnerApi\Api\TokensV20210301Api;
use SellingPartnerApi\Model\TokensV20210301\CreateRestrictedDataTokenRequest;
class Store extends Backend
{
protected $model = null;
protected $preExcludeFields = ['id', 'create_time', 'update_time'];
protected $quickSearchField = ['id', 'title'];
public function initialize()
{
parent::initialize();
$this->model = new \app\admin\model\Store;
}
public function getOrder()
{
$storeName = '店铺名';
$storeModel = new StoreModel();
$store = $storeModel->where("title", $storeName)->find()->toArray();
$conf = [
'access_key' => $store['spapi_access_key'],
'access_secret' => $store['spapi_access_secret'],
'role_arn' => $store['spapi_role_arn'],
'refresh_token' => $store['spapi_refresh_token'],
'client_id' => $store['spapi_client_id'],
'client_secret' => $store['spapi_client_secret'],
'endpoint' => $store['spapi_endpoint'],
'marketplaceId' => $store['spapi_marketplaceid'],
'asin' => 'ASIN01',
'order_id' => '123-1234567-1234567',
];
switch ($conf['endpoint']) {
case 'NA':
$endpoint = Endpoint::NA;
break;
case 'EU':
$endpoint = Endpoint::EU;
break;
case 'FE':
$endpoint = Endpoint::FE;
break;
}
$connect = new Configuration([
"lwaClientId" => $conf['client_id'],
"lwaClientSecret" => $conf['client_secret'],
"lwaRefreshToken" => $conf['refresh_token'],
"awsAccessKeyId" => $conf['access_key'],
"awsSecretAccessKey" => $conf['access_secret'],
"endpoint" => $endpoint,
"roleArn" => $conf['role_arn'],
]);
$list = $this->getOrders($connect, $conf, false, 2, '2023-05-01 00:00:00');
}
public function getOrderByOrderSn($connect, $orderSn, $is_fbm = true)
{
$apiInstance = new OrdersV0Api($connect);
$data_elements = null;
if ($is_fbm) {
$data_elements = ['buyerInfo', 'shippingAddress'];
}
try {
$result = $apiInstance->getOrder($orderSn, $data_elements);
$result = json_decode($result, true);
dd($result);
} catch (Exception $e) {
echo 'Exception when calling OrdersV0Api->getOrder: ', $e->getMessage(), PHP_EOL;
}
}
public function getOrders($connect, $conf, $is_fbm = true, $limit = 2, $stime)
{
$apiInstance = new OrdersV0Api($connect);
$marketplace_ids = [$conf['marketplaceId']];
$format = "Y-m-d\TH:i:s.\\0\\0\\0\\Z";
$created_after = gmdate($format, strtotime($stime));
try {
if ($is_fbm) {
$data_elements = ['buyerInfo', 'shippingAddress'];
$fulfillment_channels = 'MFN';
} else {
$data_elements = null;
$fulfillment_channels = 'AFN';
}
$result = $apiInstance->getOrders($marketplace_ids, $created_after, null, null, null, null, $fulfillment_channels, null, null, null, $limit, null, null, null, null, null, null, $data_elements);
$result = json_decode($result, true);
$list = $result['payload']['Orders'];
foreach ($list as $key=>$item) {
echo $item['AmazonOrderId'] . PHP_EOL;
$result = $apiInstance->getOrderItems($item['AmazonOrderId']);
$list[$key]['order_goods'] = $result['payload']['order_items'];
foreach ($list[$key]['order_goods'] as $k=>$v) {
}
}
echo '<pre>';
var_dump(json_encode($list));
exit;
} catch (Exception $e) {
echo 'Exception when calling OrdersV0Api->getOrders: ', $e->getMessage(), PHP_EOL;
}
}
二.订单数据格式
[
{
"AmazonOrderId": "123-1234567-1234567",
"SellerOrderId": "123-1234567-1234567",
"PurchaseDate": "2023-04-30T20:06:49Z",
"LastUpdateDate": "2023-05-01T05:30:58Z",
"OrderStatus": "Shipped",
"FulfillmentChannel": "AFN",
"SalesChannel": "Amazon.ca",
"ShipServiceLevel": "Expedited",
"OrderTotal": {
"CurrencyCode": "CAD",
"Amount": "88.88"
},
"NumberOfItemsShipped": 1,
"NumberOfItemsUnshipped": 0,
"PaymentMethod": "Other",
"PaymentMethodDetails": [
"Standard"
],
"MarketplaceId": "A2EUQ1WTGCTBG2",
"ShipmentServiceLevelCategory": "Expedited",
"OrderType": "StandardOrder",
"EarliestShipDate": "2023-05-01T06:59:59Z",
"LatestShipDate": "2023-05-01T06:59:59Z",
"IsBusinessOrder": false,
"IsPrime": false,
"IsPremiumOrder": false,
"IsGlobalExpressEnabled": false,
"IsReplacementOrder": false,
"IsSoldByAB": false,
"IsISPU": false,
"IsAccessPointOrder": false,
"ShippingAddress": {
"City": "Toronto",
"StateOrRegion": "Ontario",
"PostalCode": "M4C 5S7",
"CountryCode": "CA"
},
"BuyerInfo": {
"BuyerEmail": "user@marketplace.amazon.ca"
},
"HasRegulatedItems": false,
"order_goods": [
{
"ASIN": "ASIN001",
"SellerSKU": "SKU001",
"OrderItemId": "12345123451234",
"Title": "goods title in amazon",
"QuantityOrdered": 1,
"QuantityShipped": 1,
"ProductInfo": {
"NumberOfItems": 1
},
"ItemPrice": {
"CurrencyCode": "CAD",
"Amount": "88.88"
},
"ItemTax": {
"CurrencyCode": "CAD",
"Amount": "8.88"
},
"PromotionDiscount": {
"CurrencyCode": "CAD",
"Amount": "0.00"
},
"PromotionDiscountTax": {
"CurrencyCode": "CAD",
"Amount": "0.00"
},
"IsGift": false,
"IsTransparency": false,
"DeemedResellerCategory": "CA_TEST",
"BuyerInfo": {}
}
]
},
]