dsyq40772 2015-10-21 10:36
浏览 334

PHP Amazon API OrderFulfillment不起作用_POST_ORDER_FULFILLMENT_DATA_

I'm trying to build an order updater, to set them shipped. I've used the MarketplaceWebService_Model_SubmitFeedRequest and modified the SubmitFeedSample.php The following code doesn't update the orders to shipped, and the output is not very helpful to fix the error

<?php
error_reporting(E_ALL);  // turn on all errors, warnings and notices for easier debugging
include_once ('config.php'); 

if(!isset($_GET['carrier']) or !isset($_GET['tracking']) or !isset($_GET['amazon_id']))
die("parameters not present");

$carrier = $_GET['carrier'];
$tracking = $_GET['tracking'];
$amazon_id = $_GET['amazon_id'];

// United States:
$serviceUrl = "https://mws.amazonservices.com";
// United Kingdom
//$serviceUrl = "https://mws.amazonservices.co.uk";

$config = array (
 'ServiceURL' => $serviceUrl,
 'ProxyHost' => null,
 'ProxyPort' => -1,
 'ProxyUsername' => null,
 'ProxyPassword' => null,
 'MaxErrorRetry' => 3,
);

 $service = new MarketplaceWebService_Client(
     AWS_ACCESS_KEY_ID, 
     AWS_SECRET_ACCESS_KEY, 
     $config,
     APPLICATION_NAME,
     APPLICATION_VERSION);
 
$date = date(DATE_FORMAT);

$feed = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Header>
        <DocumentVersion>1.01</DocumentVersion>
        <MerchantIdentifier>__removed__</MerchantIdentifier>
    </Header>
    <MessageType>OrderFulfillment</MessageType>
    <Message>
        <MessageID>1</MessageID>
        <OperationType>Update</OperationType>
        <OrderFulfillment>
            <AmazonOrderID>$amazon_id</AmazonOrderID>
            <FulfillmentDate>$date</FulfillmentDate>
            <FulfillmentData>
                <CarrierName>$carrier</CarrierName>
                <ShippingMethod>Standard</ShippingMethod>
                <ShipperTrackingNumber>$tracking</ShipperTrackingNumber>
            </FulfillmentData>
        </OrderFulfillment>
    </Message>
</AmazonEnvelope>
EOD;

echo $feed;

$marketplaceIdArray = array("Id" => array('ATVPDKIKX0DER'));
     
$feedHandle = @fopen('php://temp', 'rw+');
fwrite($feedHandle, $feed);
rewind($feedHandle);
$parameters = array (
  'Merchant' => MERCHANT_ID,
  'MarketplaceIdList' => $marketplaceIdArray,
  'FeedType' => '_POST_ORDER_FULFILLMENT_DATA_',
  'FeedContent' => $feedHandle,
  'PurgeAndReplace' => false,
  'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)),
  'MWSAuthToken' => AWS_SECRET_ACCESS_KEY
);

rewind($feedHandle);

$request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters);

$feedHandle = @fopen('php://memory', 'rw+');
fwrite($feedHandle, $feed);
rewind($feedHandle);

$request = new MarketplaceWebService_Model_SubmitFeedRequest();
$request->setMerchant(MERCHANT_ID);
$request->setMarketplaceIdList($marketplaceIdArray);
$request->setFeedType('_POST_PRODUCT_DATA_');
$request->setContentMd5(base64_encode(md5(stream_get_contents($feedHandle), true)));
rewind($feedHandle);
$request->setPurgeAndReplace(false);
$request->setFeedContent($feedHandle);
$request->setMWSAuthToken(AWS_SECRET_ACCESS_KEY);

rewind($feedHandle);

invokeSubmitFeed($service, $request);

@fclose($feedHandle);
                                        
function invokeSubmitFeed(MarketplaceWebService_Interface $service, $request) 
{
    try {
            $response = $service->submitFeed($request);
            
              echo ("Service Response
");
              echo ("=============================================================================
");

              echo("        SubmitFeedResponse
");
              if ($response->isSetSubmitFeedResult()) { 
                  echo("            SubmitFeedResult
");
                  $submitFeedResult = $response->getSubmitFeedResult();
                  if ($submitFeedResult->isSetFeedSubmissionInfo()) { 
                      echo("                FeedSubmissionInfo
");
                      $feedSubmissionInfo = $submitFeedResult->getFeedSubmissionInfo();
                      if ($feedSubmissionInfo->isSetFeedSubmissionId()) 
                      {
                          echo("                    FeedSubmissionId
");
                          echo("                        " . $feedSubmissionInfo->getFeedSubmissionId() . "
");
                      }
                      if ($feedSubmissionInfo->isSetFeedType()) 
                      {
                          echo("                    FeedType
");
                          echo("                        " . $feedSubmissionInfo->getFeedType() . "
");
                      }
                      if ($feedSubmissionInfo->isSetSubmittedDate()) 
                      {
                          echo("                    SubmittedDate
");
                          echo("                        " . $feedSubmissionInfo->getSubmittedDate()->format(DATE_FORMAT) . "
");
                      }
                      if ($feedSubmissionInfo->isSetFeedProcessingStatus()) 
                      {
                          echo("                    FeedProcessingStatus
");
                          echo("                        " . $feedSubmissionInfo->getFeedProcessingStatus() . "
");
                      }
                      if ($feedSubmissionInfo->isSetStartedProcessingDate()) 
                      {
                          echo("                    StartedProcessingDate
");
                          echo("                        " . $feedSubmissionInfo->getStartedProcessingDate()->format(DATE_FORMAT) . "
");
                      }
                      if ($feedSubmissionInfo->isSetCompletedProcessingDate()) 
                      {
                          echo("                    CompletedProcessingDate
");
                          echo("                        " . $feedSubmissionInfo->getCompletedProcessingDate()->format(DATE_FORMAT) . "
");
                      }
                  } 
              } 
              if ($response->isSetResponseMetadata()) { 
                  echo("            ResponseMetadata
");
                  $responseMetadata = $response->getResponseMetadata();
                  if ($responseMetadata->isSetRequestId()) 
                  {
                      echo("                RequestId
");
                      echo("                    " . $responseMetadata->getRequestId() . "
");
                  }
              } 

              echo("            ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "
");
   } catch (MarketplaceWebService_Exception $ex) {
       echo("Caught Exception: " . $ex->getMessage() . "
");
       echo("Response Status Code: " . $ex->getStatusCode() . "
");
       echo("Error Code: " . $ex->getErrorCode() . "
");
       echo("Error Type: " . $ex->getErrorType() . "
");
       echo("Request ID: " . $ex->getRequestId() . "
");
       echo("XML: " . $ex->getXML() . "
");
       echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . "
");
   }
}
                                                                

Output:

<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Header>
        <DocumentVersion>1.01</DocumentVersion>
        <MerchantIdentifier>__removed__</MerchantIdentifier>
    </Header>
    <MessageType>OrderFulfillment</MessageType>
    <Message>
        <MessageID>1</MessageID>
        <OperationType>Update</OperationType>
        <OrderFulfillment>
            <AmazonOrderID>__removed__</AmazonOrderID>
            <FulfillmentDate>2015-10-21T05:31:42Z</FulfillmentDate>
            <FulfillmentData>
                <CarrierName>USPS</CarrierName>
                <ShippingMethod>Standard</ShippingMethod>
                <ShipperTrackingNumber>__removed__</ShipperTrackingNumber>
            </FulfillmentData>
        </OrderFulfillment>
    </Message>
</AmazonEnvelope>Service Response
=============================================================================
        SubmitFeedResponse
            SubmitFeedResult
                FeedSubmissionInfo
                    FeedSubmissionId
                        50021016729
                    FeedType
                        _POST_PRODUCT_DATA_
                    SubmittedDate
                        2015-10-21T10:31:43Z
                    FeedProcessingStatus
                        _SUBMITTED_
            ResponseMetadata
                RequestId
                    eb4319ef-edb4-4cf0-a164-9da01296ce2e
            ResponseHeaderMetadata: RequestId: eb4319ef-edb4-4cf0-a164-9da01296ce2e, ResponseContext: bPNioZ3TY8tyIH72RFRXCx3QD/bDztb0+EgK2VXrIYMkqS0Gfr/QIBe/jInWTsxipz84AiRukcII S5iwcdqjcFDPGtZKbFhC,KkCctQH4ZBZdtAAY1kox95v8pbq2e48qbK3WLh364tfY7qkCUIZEZgPgF6GE1VGsYNdMVK+JAIbR L/G1jOETXQ==, Timestamp: 2015-10-21T10:31:42.823Z

</div>
  • 写回答

1条回答 默认 最新

  • dongsuyou6938 2015-10-21 10:46
    关注

    Ok I've found it. $request->setFeedType('_POST_PRODUCT_DATA_'); was wrong, it have to be replaced with _POST_ORDER_FULFILLMENT_DATA_

    Great samples... :D

    评论

报告相同问题?

悬赏问题

  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭