亚马逊查询订单listorders方法

        //设置编码格式
        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
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值