一.设计数据表
- amazon_order(订单表), amazon_order_items(订单商品表)
# 1.订单表
CREATE TABLE `cc_order` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`amazon_order_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Amazon订单ID',
`seller_order_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '卖家订单ID',
`purchase_date` timestamp NULL DEFAULT NULL COMMENT '购买日期',
`last_update_date` timestamp NULL DEFAULT NULL COMMENT '最后更新日期',
`order_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单状态',
`fulfillment_channel` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '履行渠道',
`sales_channel` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '销售渠道',
`order_channel` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单渠道',
`ship_service_level` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配送服务级别',
`order_total_currency_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单总额货币代码',
`order_total_amount` decimal(10,2) DEFAULT NULL COMMENT '订单总额金额',
`number_of_items_shipped` int(11) DEFAULT NULL COMMENT '已发货商品数量',
`number_of_items_unshipped` int(11) DEFAULT NULL COMMENT '未发货商品数量',
`payment_execution_detail` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '付款执行细节',
`payment_method` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '付款方法',
`payment_method_details` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '付款方法详细信息',
`marketplace_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '市场ID',
`shipment_service_level_category` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配送服务级别类别',
`easy_ship_shipment_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Easy Ship配送状态',
`cba_displayable_shipping_label` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'CBA可显示的配送标签',
`order_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单类型',
`earliest_ship_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最早发货日期',
`latest_ship_date` timestamp NULL DEFAULT NULL COMMENT '最晚发货日期',
`earliest_delivery_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最早交货日期',
`latest_delivery_date` timestamp NULL DEFAULT NULL COMMENT '最晚交货日期',
`is_business_order` tinyint(1) DEFAULT NULL COMMENT '是否商业订单',
`is_prime` tinyint(1) DEFAULT NULL COMMENT '是否Prime会员订单',
`is_premium_order` tinyint(1) DEFAULT NULL COMMENT '是否高级订单',
`is_global_express_enabled` tinyint(1) DEFAULT NULL COMMENT '是否启用全球快递',
`replaced_order_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '替换的订单ID',
`is_replacement_order` tinyint(1) DEFAULT NULL COMMENT '是否替换订单',
`promise_response_due_date` timestamp NULL DEFAULT NULL COMMENT '承诺响应截止日期',
`is_estimated_ship_date_set` tinyint(1) DEFAULT NULL COMMENT '是否设置了预计发货日期',
`is_sold_by_ab` tinyint(1) DEFAULT NULL COMMENT '是否由AB出售',
`is_iba` tinyint(1) DEFAULT NULL COMMENT '是否IBA',
`default_ship_from_location_address` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '默认发货地址',
`buyer_invoice_preference` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家发票偏好',
`buyer_tax_information` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家税务信息',
`fulfillment_instruction` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '履行指示',
`is_ispu` tinyint(1) DEFAULT NULL COMMENT '是否ISPU',
`is_access_point_order` tinyint(1) DEFAULT NULL COMMENT '是否Access Point订单',
`marketplace_tax_info` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '市场税务信息',
`seller_display_name` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '卖家显示名称',
`shipping_address_name` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-姓名',
`shipping_address_line1` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-街道地址行1',
`shipping_address_line2` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-街道地址行2',
`shipping_address_line3` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-街道地址行3',
`shipping_address_city` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-城市',
`shipping_address_county` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-县',
`shipping_address_district` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-区',
`shipping_address_state_or_region` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-州/省/地区',
`shipping_address_municipality` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-市',
`shipping_address_postal_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-邮政编码',
`shipping_address_country_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-国家代码',
`shipping_address_phone` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-电话号码',
`shipping_address_type` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发货地址-地址类型',
`buyer_email` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家电子邮件',
`buyer_name` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家姓名',
`buyer_county` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家县',
`buyer_tax_info` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家税务信息',
`purchase_order_number` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '采购订单号',
`automated_shipping_settings` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '自动化配送设置',
`has_regulated_items` tinyint(1) DEFAULT NULL COMMENT '是否有受管制物品',
`electronic_invoice_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '电子发票状态',
`item_approval_types` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品批准类型',
`item_approval_status` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品批准状态',
`create_time` timestamp NULL DEFAULT NULL,
`update_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `order_sn` (`amazon_order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表';
# 2.订单商品
CREATE TABLE `cc_order_items` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`order_id` int(11) DEFAULT '0' COMMENT '订单ID',
`order_sn` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单号',
`asin` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'ASIN(亚马逊标准识别号)',
`seller_sku` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '卖家SKU',
`order_item_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单项ID',
`title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品标题',
`quantity_ordered` int(11) DEFAULT NULL COMMENT '订购数量',
`quantity_shipped` int(11) DEFAULT NULL COMMENT '发货数量',
`product_info_number_of_items` int(11) DEFAULT NULL COMMENT '商品数量',
`points_granted` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '授予的积分',
`item_price_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品价格的货币代码',
`item_price_amount` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品价格的金额',
`shipping_price_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运费价格',
`shipping_price_amount` decimal(10,2) DEFAULT NULL,
`item_tax_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品税金的货币代码',
`item_tax_amount` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品税金的金额',
`shipping_tax_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运费税金',
`shipping_tax_amount` decimal(10,2) DEFAULT NULL,
`shipping_discount_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运费折扣',
`shipping_discount_amount` decimal(10,2) DEFAULT NULL,
`shipping_discount_tax_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运费折扣税金',
`shipping_discount_tax_amount` decimal(10,2) DEFAULT NULL,
`promotion_discount_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '促销折扣的货币代码',
`promotion_discount_amount` decimal(10,2) DEFAULT NULL COMMENT '促销折扣的金额',
`promotion_discount_tax_currency_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '促销折扣税金的货币代码',
`promotion_discount_tax_amount` decimal(10,2) DEFAULT NULL COMMENT '促销折扣税金的金额',
`promotion_ids` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '促销ID',
`cod_fee` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '货到付款费用',
`cod_fee_discount` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '货到付款费用折扣',
`is_gift` tinyint(1) DEFAULT NULL COMMENT '是否为礼品',
`condition_note` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品状况说明',
`condition_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品状况ID',
`condition_subtype_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品状况子类型ID',
`scheduled_delivery_start_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '预计交付开始日期',
`scheduled_delivery_end_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '预计交付结束日期',
`price_designation` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '价格指定',
`tax_collection` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '税收信息',
`serial_number_required` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '是否需要序列号',
`is_transparency` tinyint(1) DEFAULT NULL COMMENT '是否支持透明度',
`ioss_number` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'IOSS编号',
`store_chain_store_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '店铺连锁店ID',
`deemed_reseller_category` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '认定为转售商类别',
`buyer_info_buyer_customized_info` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家定制信息',
`buyer_info_gift_wrap_price` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '礼品包装价格',
`buyer_info_gift_wrap_tax` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '礼品包装税金',
`buyer_info_gift_message_text` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '礼品留言文本',
`buyer_info_gift_wrap_level` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '礼品包装级别',
`buyer_requested_cancel` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '买家请求取消订单',
`item_approval_context` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品审批上下文',
`serial_numbers` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '序列号列表',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
二.数据格式
{
"amazon_order_id": "123-1234567-1234567",
"seller_order_id": "123-1234567-1234567",
"purchase_date": "2022-01-01T21:00:24Z",
"last_update_date": "2022-01-04T02:44:13Z",
"order_status": "Shipped",
"fulfillment_channel": "AFN",
"sales_channel": "Amazon.de",
"order_channel": null,
"ship_service_level": "Standard",
"order_total": {
"currency_code": "EUR",
"amount": "99.99"
},
"number_of_items_shipped": 1,
"number_of_items_unshipped": 0,
"payment_execution_detail": null,
"payment_method": "Other",
"payment_method_details": [
"Standard"
],
"marketplace_id": "A1PA6795UKMFR9",
"shipment_service_level_category": "Standard",
"easy_ship_shipment_status": null,
"cba_displayable_shipping_label": null,
"order_type": "StandardOrder",
"earliest_ship_date": "2022-01-02T22:59:59Z",
"latest_ship_date": "2022-01-02T22:59:59Z",
"earliest_delivery_date": null,
"latest_delivery_date": null,
"is_business_order": false,
"is_prime": false,
"is_premium_order": false,
"is_global_express_enabled": false,
"replaced_order_id": null,
"is_replacement_order": false,
"promise_response_due_date": null,
"is_estimated_ship_date_set": null,
"is_sold_by_ab": false,
"is_iba": null,
"default_ship_from_location_address": null,
"buyer_invoice_preference": null,
"buyer_tax_information": null,
"fulfillment_instruction": null,
"is_ispu": false,
"is_access_point_order": false,
"marketplace_tax_info": null,
"seller_display_name": null,
"shipping_address": {
"name": null,
"address_line1": null,
"address_line2": null,
"address_line3": null,
"city": "Lörrace",
"county": null,
"district": null,
"state_or_region": null,
"municipality": null,
"postal_code": "79538",
"country_code": "DE",
"phone": null,
"address_type": null
},
"buyer_info": {
"buyer_email": "admin@marketplace.amazon.de",
"buyer_name": null,
"buyer_county": null,
"buyer_tax_info": null,
"purchase_order_number": null
},
"automated_shipping_settings": null,
"has_regulated_items": false,
"electronic_invoice_status": null,
"item_approval_types": null,
"item_approval_status": null,
"order_items": {
"asin": "ASIN0001",
"seller_sku": "SKU-SKU-SKU",
"order_item_id": "441234567812",
"title": "DASDJASLDJALSDASD DASJDASJDK UODOS12D AJSDLASJDLASD JDOAJSDLJASDJL DJOASJDOAJSODJOASJDOJASODJ 123JDAS 123JDLASJDLAJSDLJJDALS",
"quantity_ordered": 1,
"quantity_shipped": 1,
"product_info": {
"number_of_items": 1
},
"points_granted": null,
"item_price": {
"currency_code": "EUR",
"amount": "99.99"
},
"shipping_price": {
"currency_code": "EUR",
"amount": "99.99"
},
"item_tax": {
"currency_code": "EUR",
"amount": "99.99"
},
"shipping_tax": {
"currency_code": "EUR",
"amount": "99.99"
},
"shipping_discount": {
"currency_code": "EUR",
"amount": "99.99"
},
"shipping_discount_tax": {
"currency_code": "EUR",
"amount": "99.99"
},
"promotion_discount": {
"currency_code": "EUR",
"amount": "99.99"
},
"promotion_discount_tax": {
"currency_code": "EUR",
"amount": "99.99"
},
"promotion_ids": [
"XXXXXXXXX 2022/01/01 00-00-00"
],
"cod_fee": null,
"cod_fee_discount": null,
"is_gift": false,
"condition_note": null,
"condition_id": null,
"condition_subtype_id": null,
"scheduled_delivery_start_date": null,
"scheduled_delivery_end_date": null,
"price_designation": null,
"tax_collection": null,
"serial_number_required": null,
"is_transparency": false,
"ioss_number": null,
"store_chain_store_id": null,
"deemed_reseller_category": "UOSS",
"buyer_info": {
"buyer_customized_info": null,
"gift_wrap_price": null,
"gift_wrap_tax": null,
"gift_message_text": null,
"gift_wrap_level": null
},
"buyer_requested_cancel": null,
"item_approval_context": null,
"serial_numbers": null
}
}
三.下载代码
<?php
namespace app\admin\controller;
use app\admin\model\Order;
use app\admin\model\OrderItems;
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 = 'TEST';
$storeModel = new StoreModel();
$store = $storeModel->where("title", $storeName)->find()->toArray();
$conf = [
'access_key' => $store['spapi_amazon_access_key'],
'access_secret' => $store['spapi_amazon_access_secret'],
'role_arn' => $store['spapi_amazon_role_arn'],
'refresh_token' => $store['spapi_amazon_refresh_token'],
'client_id' => $store['spapi_amazon_client_id'],
'client_secret' => $store['spapi_amazon_client_secret'],
'endpoint' => $store['spapi_amazon_endpoint'],
'marketplaceId' => $store['api_marketplaceid'],
'asin' => 'ASIN00001',
'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, '2023-01-01 00:00:00');
}
// 2.获取订单列表
public function getOrders($connect, $conf, $is_fbm = true, $stime)
{
$apiInstance = new OrdersV0Api($connect);
// $apiInstance = new \SellingPartnerApi\Api\OrdersApi($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';
}
$limit = 3;
$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 = $result['payload']['orders'];
$list = [];
foreach ($result as $key=>$item) {
$orderData = $this->objectToArray($item); // 订单对象转数组
$orderData = $this->formatOrder(end($orderData)); // 格式化订单数组
$orderItem = $apiInstance->getOrderItems($item['amazon_order_id']);
$orderItem = $this->objectToArray($orderItem['payload']['order_items']);
foreach ($orderItem as $vo) {
$orderData['order_items'] = $this->formatOrder(end($vo));
}
$list[] = $orderData;
if ($orderData['amazon_order_id'] == '123-1234567-1234567') {
dd(json_encode($orderData)); //此处可调试打印数据
}
}
// 保存到数据库中
$orderModel = new Order();
$itemModel = new OrderItems();
$time = date('Y-m-d H:i:s');
foreach ($list as $order) {
$isExists = $orderModel->where('amazon_order_id', $order['amazon_order_id'])->count();
if ($isExists) {
echo "订单已存在: {$order['amazon_order_id']} <br>";
continue;
}
// 创建要插入的数据数组
$insertData = [];
$insertData['amazon_order_id'] = $order['amazon_order_id'];
$insertData['seller_order_id'] = $order['seller_order_id'];
$insertData['purchase_date'] = $order['purchase_date'];
$insertData['last_update_date'] = $order['last_update_date'];
$insertData['order_status'] = $order['order_status'];
$insertData['fulfillment_channel'] = $order['fulfillment_channel'];
$insertData['sales_channel'] = $order['sales_channel'];
$insertData['order_channel'] = $order['order_channel'];
$insertData['ship_service_level'] = $order['ship_service_level'];
$insertData['order_total_currency_code'] = $order['order_total']['currency_code'];
$insertData['order_total_amount'] = $order['order_total']['amount'];
$insertData['number_of_items_shipped'] = $order['number_of_items_shipped'];
$insertData['number_of_items_unshipped'] = $order['number_of_items_unshipped'];
$insertData['payment_execution_detail'] = $order['payment_execution_detail'];
$insertData['payment_method'] = $order['payment_method'];
$insertData['payment_method_details'] = implode(', ', $order['payment_method_details']);
$insertData['marketplace_id'] = $order['marketplace_id'];
$insertData['shipment_service_level_category'] = $order['shipment_service_level_category'];
$insertData['easy_ship_shipment_status'] = $order['easy_ship_shipment_status'];
$insertData['cba_displayable_shipping_label'] = $order['cba_displayable_shipping_label'];
$insertData['order_type'] = $order['order_type'];
$insertData['earliest_ship_date'] = $order['earliest_ship_date'];
$insertData['latest_ship_date'] = $order['latest_ship_date'];
$insertData['earliest_delivery_date'] = $order['earliest_delivery_date'];
$insertData['latest_delivery_date'] = $order['latest_delivery_date'];
$insertData['is_business_order'] = $order['is_business_order'];
$insertData['is_prime'] = $order['is_prime'];
$insertData['is_premium_order'] = $order['is_premium_order'];
$insertData['is_global_express_enabled'] = $order['is_global_express_enabled'];
$insertData['replaced_order_id'] = $order['replaced_order_id'];
$insertData['is_replacement_order'] = $order['is_replacement_order'];
$insertData['promise_response_due_date'] = $order['promise_response_due_date'];
$insertData['is_estimated_ship_date_set'] = $order['is_estimated_ship_date_set'];
$insertData['is_sold_by_ab'] = $order['is_sold_by_ab'];
$insertData['is_iba'] = $order['is_iba'];
$insertData['default_ship_from_location_address'] = $order['default_ship_from_location_address'];
$insertData['buyer_invoice_preference'] = $order['buyer_invoice_preference'];
$insertData['buyer_tax_information'] = $order['buyer_tax_information'];
$insertData['fulfillment_instruction'] = $order['fulfillment_instruction'];
$insertData['is_ispu'] = $order['is_ispu'];
$insertData['is_access_point_order'] = $order['is_access_point_order'];
$insertData['marketplace_tax_info'] = $order['marketplace_tax_info'];
$insertData['seller_display_name'] = $order['seller_display_name'];
$insertData['shipping_address_name'] = $order['shipping_address']['name'];
$insertData['shipping_address_line1'] = $order['shipping_address']['address_line1'];
$insertData['shipping_address_line2'] = $order['shipping_address']['address_line2'];
$insertData['shipping_address_line3'] = $order['shipping_address']['address_line3'];
$insertData['shipping_address_city'] = $order['shipping_address']['city'];
$insertData['shipping_address_county'] = $order['shipping_address']['county'];
$insertData['shipping_address_district'] = $order['shipping_address']['district'];
$insertData['shipping_address_state_or_region'] = $order['shipping_address']['state_or_region'];
$insertData['shipping_address_municipality'] = $order['shipping_address']['municipality'];
$insertData['shipping_address_postal_code'] = $order['shipping_address']['postal_code'];
$insertData['shipping_address_country_code'] = $order['shipping_address']['country_code'];
$insertData['shipping_address_phone'] = $order['shipping_address']['phone'];
$insertData['shipping_address_type'] = $order['shipping_address']['address_type'];
$insertData['buyer_email'] = $order['buyer_info']['buyer_email'];
$insertData['buyer_name'] = $order['buyer_info']['buyer_name'];
$insertData['buyer_county'] = $order['buyer_info']['buyer_county'];
$insertData['buyer_tax_info'] = $order['buyer_info']['buyer_tax_info'];
$insertData['purchase_order_number'] = $order['buyer_info']['purchase_order_number'];
$insertData['automated_shipping_settings'] = $order['automated_shipping_settings'];
$insertData['has_regulated_items'] = $order['has_regulated_items'];
$insertData['electronic_invoice_status'] = $order['electronic_invoice_status'];
$insertData['item_approval_types'] = $order['item_approval_types'];
$insertData['item_approval_status'] = $order['item_approval_status'];
$orderId = $orderModel->create($insertData);
// 插入订单商品
if ($orderId->id) {
$items = $order['order_items'];
$items = $this->formatNull($items);
$data = [];
$data['order_id'] = $orderId->id;
$data['order_sn'] = $order['amazon_order_id']; // 来自订单
$data['asin'] = $items['asin'];
$data['seller_sku'] = $items['seller_sku'];
$data['order_item_id'] = $items['order_item_id'];
$data['title'] = $items['title'];
$data['quantity_ordered'] = $items['quantity_ordered'];
$data['quantity_shipped'] = $items['quantity_shipped'];
$data['product_info_number_of_items'] = $items['product_info']['number_of_items'];
$data['points_granted'] = $items['points_granted'];
$data['item_price_currency_code'] = $items['item_price']['currency_code'];
$data['item_price_amount'] = $items['item_price']['amount'];
$data['shipping_price_currency_code'] = $data['shipping_price_amount'] = '';
if ($items['shipping_price']) {
$data['shipping_price_currency_code'] = $items['shipping_price']['currency_code'];
$data['shipping_price_amount'] = $items['shipping_price']['amount'];
}
$data['item_tax_currency_code'] = $items['item_tax']['currency_code'];
$data['item_tax_amount'] = $items['item_tax']['amount'];
$data['shipping_tax_currency_code'] = $data['shipping_tax_amount'] = '';
if ($items['shipping_tax']) {
$data['shipping_tax_currency_code'] = $items['shipping_tax']['currency_code'];
$data['shipping_tax_amount'] = $items['shipping_tax']['amount'];
}
$data['shipping_discount_currency_code'] = $data['shipping_discount_amount'] = '';
if ($items['shipping_discount']) {
$data['shipping_discount_currency_code'] = $items['shipping_discount']['currency_code'];
$data['shipping_discount_amount'] = $items['shipping_discount']['amount'];
}
$data['shipping_discount_tax_currency_code'] = $data['shipping_discount_tax_amount'] = '';
if ($items['shipping_discount_tax']) {
$data['shipping_discount_tax_currency_code'] = $items['shipping_discount_tax']['currency_code'];
$data['shipping_discount_tax_amount'] = $items['shipping_discount_tax']['amount'];
}
$data['promotion_discount_currency_code'] = $items['promotion_discount']['currency_code'];
$data['promotion_discount_amount'] = $items['promotion_discount']['amount'];
$data['promotion_discount_tax_currency_code'] = $items['promotion_discount_tax']['currency_code'];
$data['promotion_discount_tax_amount'] = $items['promotion_discount_tax']['amount'];
$data['promotion_ids'] = '';
if ($data['promotion_ids']) {
$data['promotion_ids'] = implode(',', $items['promotion_ids']);
}
$data['cod_fee'] = $items['cod_fee'];
$data['cod_fee_discount'] = $items['cod_fee_discount'];
$data['is_gift'] = $items['is_gift'];
$data['condition_note'] = $items['condition_note'];
$data['condition_id'] = $items['condition_id'];
$data['condition_subtype_id'] = $items['condition_subtype_id'];
$data['scheduled_delivery_start_date'] = $items['scheduled_delivery_start_date'];
$data['scheduled_delivery_end_date'] = $items['scheduled_delivery_end_date'];
$data['price_designation'] = $items['price_designation'];
$data['tax_collection'] = $items['tax_collection'];
$data['serial_number_required'] = $items['serial_number_required'];
$data['is_transparency'] = $items['is_transparency'];
$data['ioss_number'] = $items['ioss_number'];
$data['store_chain_store_id'] = $items['store_chain_store_id'];
$data['deemed_reseller_category'] = $items['deemed_reseller_category'];
$data['buyer_info_buyer_customized_info'] = $items['buyer_info']['buyer_customized_info'];
$data['buyer_info_gift_wrap_price'] = $items['buyer_info']['gift_wrap_price'];
$data['buyer_info_gift_wrap_tax'] = $items['buyer_info']['gift_wrap_tax'];
$data['buyer_info_gift_message_text'] = $items['buyer_info']['gift_message_text'];
$data['buyer_info_gift_wrap_level'] = $items['buyer_info']['gift_wrap_level'];
$data['buyer_requested_cancel'] = $items['buyer_requested_cancel'];
$data['item_approval_context'] = $items['item_approval_context'];
$data['serial_numbers'] = $items['serial_numbers'];
$data['create_time'] = $time;
$data = $this->checkItems($data);
$itemId = $itemModel->create($data);
}
}
} catch (\Exception $e) {
echo '错误: ', $e->getFile(), $e->getLine(), $e->getMessage(), PHP_EOL;
dd($data);
}
dd("完毕");
}
/**
* 特殊的对象转数组方法
*/
function objectToArray($obj) {
$obj = (array)$obj;
$result = [];
foreach ($obj as $key => $value) {
if (gettype($value) == 'object' || gettype($value) == 'array') {
$result[$key] = $this->objectToArray($value); // 递归调用
} else {
$result[$key] = $value;
}
}
return $result;
}
// 格式化订单结果(包括订单和订单商品)
function formatOrder($items, $test = 0) {
$list = [];
foreach ($items as $key=>$item) {
if ($test && preg_match('/container/', $key)) {
return $item;
}
if (is_array($item)) {
$list[$key] = $this->formatOrder($item, 1);
} else {
if (preg_match('/container/', $key)) {
$list[$key] = end($item);
} else {
$list[$key] = $item;
}
}
}
return $list;
}
// 将null改为空白
public function formatNull($array, $replacement = '')
{
foreach ($array as &$value) {
if (is_array($value)) {
$value = $this->formatNull($value, $replacement);
} elseif ($value === null) {
$value = $replacement;
}
}
return $array;
}
// 检查插入的数据中, 是否有数组, 如果有, 设为空白
public function checkItems($data)
{
foreach ($data as &$item) {
if (is_array($item)) {
$item = '';
}
}
return $data;
}
}