selimppc

Amazon MWS PHP – Mark order as Shipped by using an XML feed

Mar 9th, 2018
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.20 KB | None | 0 0
  1. Amazon MWS PHP – Mark order as Shipped by using an XML feed
  2.  
  3. <?php
  4. /**********************************************************
  5. * Update inventory stock through amazon mws api
  6. *
  7. ***********************************************************/
  8.  
  9. $sku1        = '10101-AM';
  10. $quantity1   = '9';
  11. $leadTimeToShip1 = '7';
  12.  
  13. //amazon mws credentials
  14. $amazonSellerId         = 'xxxxxx';
  15. $amazonMWSAuthToken     = 'xxxxxx';
  16. $amazonAWSAccessKeyId   = 'xxxxxx';
  17. $amazonSecretKey        = 'xxxxxx';
  18. $amazonMarketPlaceId    = 'xxxxxx';
  19.  
  20. $param = array();
  21. $param['AWSAccessKeyId']     = $amazonAWSAccessKeyId;
  22. $param['Action']             = 'SubmitFeed';
  23. $param['Merchant']           = $amazonSellerId;
  24. $param['MWSAuthToken']       = $amazonMWSAuthToken;
  25. $param['FeedType']       = '_POST_INVENTORY_AVAILABILITY_DATA_';
  26. $param['SignatureMethod']    = 'HmacSHA256';  
  27. $param['SignatureVersion']   = '2';
  28. $param['Timestamp']          = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time());
  29. $param['Version']            = '2009-01-01';
  30. $param['MarketplaceIdList.Id.1'] = $amazonMarketPlaceId;
  31. $param['PurgeAndReplace']    = 'false';
  32.  
  33. $secret = $amazonSecretKey;
  34.  
  35. $url = array();
  36. foreach ($param as $key => $val) {
  37.  
  38.     $key = str_replace("%7E", "~", rawurlencode($key));
  39.     $val = str_replace("%7E", "~", rawurlencode($val));
  40.     $url[] = "{$key}={$val}";
  41. }
  42.  
  43. $amazon_feed = '<?xml version="1.0" encoding="utf-8"?>
  44. <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
  45.    <Header>
  46.    <DocumentVersion>1.01</DocumentVersion>
  47.    <MerchantIdentifier>'.$amazonSellerId.'</MerchantIdentifier>
  48.    </Header>
  49.    <MessageType>Inventory</MessageType>
  50.    <Message>
  51.    <MessageID>1</MessageID>
  52.    <OperationType>Update</OperationType>
  53.    <Inventory>
  54.    <SKU>'.$sku1.'</SKU>
  55.    <Quantity>'.$quantity1.'</Quantity>
  56.    <FulfillmentLatency>'.$leadTimeToShip1.'</FulfillmentLatency>
  57.    </Inventory>
  58.    </Message>
  59.    </AmazonEnvelope>';
  60.  
  61. //echo $amazon_feed;exit;
  62. sort($url);
  63.  
  64. $arr   = implode('&', $url);
  65.  
  66. $sign  = 'POST' . "\n";
  67. $sign .= 'mws.amazonservices.com' . "\n";
  68. $sign .= '/Feeds/'.$param['Version'].'' . "\n";
  69. $sign .= $arr;
  70.  
  71. $signature      = hash_hmac("sha256", $sign, $secret, true);
  72. $httpHeader     =   array();
  73. $httpHeader[]   =   'Transfer-Encoding: chunked';
  74. $httpHeader[]   =   'Content-Type: application/xml';
  75. $httpHeader[]   =   'Content-MD5: ' . base64_encode(md5($amazon_feed, true));
  76. //$httpHeader[]   =   'x-amazon-user-agent: MyScriptName/1.0';
  77. $httpHeader[]   =   'Expect:';
  78. $httpHeader[]   =   'Accept:';              
  79.  
  80. $signature      = urlencode(base64_encode($signature));
  81.  
  82. $link  = "https://mws.amazonservices.com/Feeds/".$param['Version']."?";
  83. $link .= $arr . "&Signature=" . $signature;
  84.  
  85.  
  86. $ch = curl_init($link);
  87. curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader);
  88. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  89. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  90. curl_setopt($ch, CURLOPT_POST, 1);
  91. curl_setopt($ch, CURLOPT_POSTFIELDS, $amazon_feed);
  92. $response = curl_exec($ch);
  93. $info = curl_getinfo($ch);
  94. $errors=curl_error($ch);
  95. curl_close($ch);
  96.  
  97. echo '<pre>';
  98. print_r($response); //xml response
  99.  
  100.  
  101. ?>
Advertisement
Add Comment
Please, Sign In to add comment