//设置编码格式
header("Content-type: text/html; charset=utf-8");
//用mysqli来连接数据库(服务器,用户名,密码,数据库名字)
$mysqli=new mysqli("127.0.0.1","root","root","amz_order");
$mysqli -> set_charset('utf8');
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
exit;
}
echo "连接数据库成功!<br/>";
date_default_timezone_set('PRC');
$params = array(
'AWSAccessKeyId' => "YOU_AWSAccessKeyId",
'Action' => "ListOrders",
'SellerId' => "SellserId",
'SignatureMethod' => "HmacSHA256",
'SignatureVersion' => "2",
'Timestamp'=> gmdate("Y-m-d\TH:i:s\Z", time()),
'Version'=> "2013-09-01",
'CreatedAfter'=> gmdate("Y-m-d\TH:i:s\Z", strtotime("-2 day")),
'CreatedBefore'=> gmdate("Y-m-d\TH:i:s\Z", strtotime("-1 day")),
'MarketplaceId.Id.1' => "ATVPDKIKX0DER",
);
$url_parts = array();
foreach(array_keys($params) as $key)
$url_parts[] = $key . "=" . str_replace('%7E', '~', rawurlencode($params[$key]));
sort($url_parts);
$url_string = implode("&", $url_parts);
$string_to_sign = "GET\nmws.amazonservices.com\n/Orders/2013-09-01\n" . $url_string;
$signature = hash_hmac("sha256", $string_to_sign, "You Secret Key", TRUE);
$signature = urlencode(base64_encode($signature));
$url = "https://mws.amazonservices.com/Orders/2013-09-01" . '?' . $url_string . "&Signature=" . $signature;
$ch = curl_init();
$header[] = "Content-type: text/xml";
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch);
$parsed_xml = simplexml_load_string($response);
print_r($parsed_xml);
$parsed_json = json_decode(json_encode($parsed_xml),true);
$data = $parsed_json['ListOrdersResult']['Orders']['Order'];
$sql = '';
for($i = 0;$i<count($data);$i++){
$LatestShipDate=$data[$i]['LatestShipDate'];
$OrderType=$data[$i]['OrderType'];
$PurchaseDate=$data[$i]['PurchaseDate'];
$AmazonOrderId=$data[$i]['AmazonOrderId'];
$BuyerEmail=$data[$i]['BuyerEmail'];
$IsReplacementOrder=$data[$i]['IsReplacementOrder'];
$LastUpdateDate=$data[$i]['LastUpdateDate'];
$NumberOfItemsShipped=$data[$i]['NumberOfItemsShipped'];
$ShipServiceLevel=$data[$i]['ShipServiceLevel'];
$OrderStatus=$data[$i]['OrderStatus'];
$SalesChannel=$data[$i]['SalesChannel'];
$IsBusinessOrder=$data[$i]['IsBusinessOrder'];
$NumberOfItemsUnshipped=$data[$i]['NumberOfItemsUnshipped'];
$PaymentMethodDetail=$data[$i]['PaymentMethodDetails']['PaymentMethodDetail'];
$BuyerName=$data[$i]['BuyerName'];
$CurrencyCode=$data[$i]['OrderTotal']['CurrencyCode'];
$Amount=$data[$i]['OrderTotal']['Amount'];
$IsPremiumOrder=$data[$i]['IsPremiumOrder'];
$EarliestShipDate=$data[$i]['EarliestShipDate'];
$MarketplaceId=$data[$i]['MarketplaceId'];
$FulfillmentChannel=$data[$i]['FulfillmentChannel'];
$PaymentMethod=$data[$i]['PaymentMethod'];
$City=$data[$i]['ShippingAddress']['City'];
$PostalCode=$data[$i]['ShippingAddress']['PostalCode'];
$StateOrRegion=$data[$i]['ShippingAddress']['StateOrRegion'];
$CountryCode=$data[$i]['ShippingAddress']['CountryCode'];
$Name=$data[$i]['ShippingAddress']['Name'];
$AddressLine1=$data[$i]['ShippingAddress']['AddressLine1'];
$AddressLine2=$data[$i]['ShippingAddress']['AddressLine1'];
$IsPrime=$data[$i]['IsPrime'];
$ShipmentServiceLevelCategory=$data[$i]['ShipmentServiceLevelCategory'];
$SellerOrderId=$data[$i]['SellerOrderId'];
$CreatedBefore=$parsed_json['ListOrdersResult']['CreatedBefore'];
$RequestId=$parsed_json['ResponseMetadata']['RequestId'];
$sql = "insert into amz_orders VALUE (
'$LatestShipDate',
'$OrderType',
'$PurchaseDate',
'$AmazonOrderId',
'$BuyerEmail',
'$IsReplacementOrder',
'$LastUpdateDate',
'$NumberOfItemsShipped',
'$ShipServiceLevel',
'$OrderStatus',
'$SalesChannel',
'$IsBusinessOrder',
'$NumberOfItemsUnshipped',
'$PaymentMethodDetail',
'$BuyerName',
'$CurrencyCode',
'$Amount',
'$IsPremiumOrder',
'$EarliestShipDate',
'$MarketplaceId',
'$FulfillmentChannel',
'$PaymentMethod',
'$City',
'$PostalCode',
'$StateOrRegion',
'$CountryCode',
'$Name',
'$AddressLine1',
'$AddressLine2',
'$IsPrime',
'$ShipmentServiceLevelCategory',
'$SellerOrderId',
'$CreatedBefore',
'$RequestId')";
$mysqli->query($sql);
}
echo "插入成功成功!<br/>";
$mysqli->close();
'CreatedAfter'=> gmdate("Y-m-d\TH:i:s\Z", strtotime("-2 day")),
'CreatedBefore'=> gmdate("Y-m-d\TH:i:s\Z", strtotime("-1 day")),
表示查询的前天到昨天以内的数据。
$parsed_xml = simplexml_load_string($response);
$parsed_json = json_decode(json_encode($parsed_xml),true);
先解析返回的xml数据,再将xml数据转换成数组
注意:
日期格式必须是ISO8601编码格式,可以用 gmdate 实现
gmdate("Y-m-d\TH:i:s\Z", time())
signature 签名生成方式是:
$url_parts = array();
foreach(array_keys($params) as $key)
$url_parts[] = $key . "=" . str_replace('%7E', '~', rawurlencode($params[$key]));
sort($url_parts);
$url_string = implode("&", $url_parts);
$string_to_sign = "GET\nmws.amazonservices.com\n/Orders/2013-09-01\n" . $url_string;
$signature = hash_hmac("sha256", $string_to_sign, "You Secret Key", TRUE);
$signature = urlencode(base64_encode($signature));
XML数据
<?xml version="1.0"?>
<ListOrdersResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01">
<ListOrdersResult>
<Orders>
<Order>
<LatestShipDate>2018-03-23T06:59:59Z</LatestShipDate>
<OrderType>StandardOrder</OrderType>
<PurchaseDate>2018-03-22T00:42:24Z</PurchaseDate>
<AmazonOrderId>112-0943667-2692252</AmazonOrderId>
<BuyerEmail>zx1dy8wcrktwh34@marketplace.amazon.com</BuyerEmail>
<IsReplacementOrder>false</IsReplacementOrder>
<LastUpdateDate>2018-03-23T05:01:09Z</LastUpdateDate>
<NumberOfItemsShipped>1</NumberOfItemsShipped>
<ShipServiceLevel>SecondDay</ShipServiceLevel>
<OrderStatus>Shipped</OrderStatus>
<SalesChannel>Amazon.com</SalesChannel>
<IsBusinessOrder>false</IsBusinessOrder>
<NumberOfItemsUnshipped>0</NumberOfItemsUnshipped>
<PaymentMethodDetails>
<PaymentMethodDetail>Standard</PaymentMethodDetail>
</PaymentMethodDetails>
<BuyerName>Olga</BuyerName>
<OrderTotal>
<CurrencyCode>USD</CurrencyCode>
<Amount>14.99</Amount>
</OrderTotal>
<IsPremiumOrder>false</IsPremiumOrder>
<EarliestShipDate>2018-03-23T06:59:59Z</EarliestShipDate>
<MarketplaceId>ATVPDKIKX0DER</MarketplaceId>
<FulfillmentChannel>AFN</FulfillmentChannel>
<PaymentMethod>Other</PaymentMethod>
<ShippingAddress>
<City>SACRAMENTO</City>
<PostalCode>95834-1469</PostalCode>
<StateOrRegion>CA</StateOrRegion>
<CountryCode>US</CountryCode>
<Name>Olga Snezhko</Name>
<AddressLine1>10 RIO CAMINO CT</AddressLine1>
</ShippingAddress>
<IsPrime>false</IsPrime>
<ShipmentServiceLevelCategory>SecondDay</ShipmentServiceLevelCategory>
<SellerOrderId>112-0943667-2692252</SellerOrderId>
</Order>
</Orders>
<CreatedBefore>2018-03-22T09:18:16Z</CreatedBefore>
</ListOrdersResult>
<ResponseMetadata>
<RequestId>c6cfe8cb-6367-48fd-8e36-f1643f55325e</RequestId>
</ResponseMetadata>
</ListOrdersResponse>
转载出处 https://www.bobcoder.cc/index/Post/detail/id/142.html