2016-06-03 2 views
2

안녕하세요 제가 주문 API를 사용하여 내 주문에 사용할 수있는 모든 순서를 나열했습니다 아마존 MWS에서 주문 상태를 업데이트 한 후 오류 "주문이 성취 될 수 없다", 는 지금은 피드를 사용하여을 발송 로 주문 상태를 업데이트하고 싶었다 API, In amazon Scratchpad Feed API를 사용하여 제품 상태를 업데이트하고 성공적으로 제출 한 다음 Feed-ID를 사용하여 제출 된 피드의 상태를 확인했는데 상태에는 오류가 없지만 이것을 부르는 경고.

주문을 이행 할 수 없습니다. 자세한 내용은 판매자 지원부에 문의하십시오

배송 상태는 주문 상태와 다를 수 있습니다.

이 나는 ​​상태와 공급 유형 _POST_ORDER_FULFILLMENT_DATA_ 인을 업데이트 사용하고 피드입니다 그리고 난 난 그냥 임의의 숫자를했다 그래서 아래에 제공해야하는지 잘 모릅니다, 나는이 MerchantFulfillmentID 있지만 사용하지 않고 시도, 이 문제를 해결할 수 있도록 도와주세요. 감사합니다.

<?php 
/** 
* PHP Version 5 
* 
* @category Amazon 
* @package  MarketplaceWebService 
* @copyright Copyright 2009 Amazon Technologies, Inc. 
* @link  http://aws.amazon.com 
* @license  http://aws.amazon.com/apache2.0 Apache License, Version 2.0 
* @version  2009-01-01 
*/ 

/** 
* Submit Feed Sample 
*/ 

include_once ('.config.inc.php'); 


// India 
$serviceUrl = "https://mws.amazonservices.in"; 

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


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


$ship_date = date("c"); 

$feed = <<<EOD 
<?xml version="1.0"?> 
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 
<Header> 
<DocumentVersion>1.01</DocumentVersion> 
<MerchantIdentifier>***********</MerchantIdentifier> 
</Header> 
<MessageType>OrderFulfillment</MessageType> 
    <Message> 
     <MessageID>1</MessageID> 
     <OrderFulfillment> 
      <AmazonOrderID>111-1111111-1111111</AmazonOrderID> 
      <FulfillmentDate>$ship_date</FulfillmentDate> 
      <FulfillmentData> 
       <CarrierName>Contact Us for Details</CarrierName> 
       <ShippingMethod>Standard</ShippingMethod> 
      </FulfillmentData> 
      <Item> 
       <AmazonOrderItemCode>70359459457611</AmazonOrderItemCode> 
       <Quantity>1</Quantity> 
      </Item> 
     </OrderFulfillment> 
    </Message> 
</AmazonEnvelope> 
EOD; 


// Constructing the MarketplaceId array which will be passed in as the the MarketplaceIdList 
// parameter to the SubmitFeedRequest object. 
$marketplaceIdArray = array("Id" => array('************')); 

// MWS request objects can be constructed two ways: either passing an array containing the 
// required request parameters into the request constructor, or by individually setting the request 
// parameters via setter methods. 
// Uncomment one of the methods below. 

/********* Begin Comment Block *********/ 

$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' => '<MWS Auth Token>', // Optional 
); 

rewind($feedHandle); 

$request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); 
/********* End Comment Block *********/ 



invokeSubmitFeed($service, $request); 

//@fclose($feedHandle); 




    * 
    * @param MarketplaceWebService_Interface $service instance of MarketplaceWebService_Interface 
    * @param mixed $request MarketplaceWebService_Model_SubmitFeed or array of parameters 
    */ 
    function invokeSubmitFeed(MarketplaceWebService_Interface $service, $request) 
    { 
     try { 
       $response = $service->submitFeed($request); 

       echo ("Service Response\n"); 
       echo ("=============================================================================\n"); 

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

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

위의 코드를 수정했습니다. 이것은 내 제출 피드 API에 포함 된 내용입니다.

+1

실제 주문 하시겠습니까? 그렇다면 판매자 지원팀에 문의하십시오. 그러면 판매자 지원 담당자가 더 빨리 귀하를 도울 수 있습니다. – cartalot

+0

예는 실제 주문입니다. –

+0

하지만이 항목을 API가 아닌 수동으로 배송하고 싶습니다. –

답변

1

다음 코드를 사용하여 Feeds API를 사용하여 주문을 배송합니다.

$order_id = str_replace('"', "", $product_list[$i][0]); 
$ship_date = date("c"); 
$carrier_code = str_replace('"', "", $product_list[$i][4]); 

/////////////////////////////////////////////////////////////////// 
//THE FulfillmentDate MUST BE BETWEEN THE ORDER DATE AND NOW 
/////////////////////////////////////////////////////////////////// 

$pre_message .= "<Message>"; 
$pre_message .= "<MessageID>$i</MessageID>"; 
$pre_message .= "<OrderFulfillment>"; 
$pre_message .= "<AmazonOrderID>$order_id</AmazonOrderID>"; 
$pre_message .= "<FulfillmentDate>$ship_date</FulfillmentDate>"; 
$pre_message .= "<FulfillmentData>"; 
$pre_message .= "<CarrierCode>Royal Mail</CarrierCode>"; 
$pre_message .= "</FulfillmentData>"; 
$pre_message .= "</OrderFulfillment>"; 
$pre_message .= "</Message>"; 

$feed = <<<EOD 
<?xml version="1.0"?> 
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 
<Header> 
<DocumentVersion>1.01</DocumentVersion> 
<MerchantIdentifier>$merchant_token</MerchantIdentifier> 
</Header> 
<MessageType>OrderFulfillment</MessageType> 
$pre_message 
</AmazonEnvelope> 
EOD; 

$feed = trim($feed); 

$marketplaceIdArray = array("Id" => array($MARKETPLACE_ID)); 
$feedHandle = @fopen('php://temp', 'rw+'); 
fwrite($feedHandle, $feed); 
rewind($feedHandle); //Sets file pointer at beginning of file 

$parameters = array(
    'Merchant' => $MERCHANT_ID, 
    'MarketplaceIdList' => $marketplaceIdArray, 
    'FeedType' => '_POST_ORDER_FULFILLMENT_DATA_', 
    'FeedContent' => $feedHandle, 
    'PurgeAndReplace' => false, //Leave this PurgeAndReplace to false so that it want replace whole product in amazon inventory 
    'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)) 
); 

rewind($feedHandle); 
$request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); 

$return_feed = invokeSubmitFeed($service, $request); 
+0

안녕하세요, 코드 주셔서 감사합니다, 그리고 아마존 스크래치 패드에서 XML을 준 방법을 제공했는데 같은 경고가오고 .. –

+0

변경할 것이 있는지 확인할 수 있도록 전체 코드를 게시하십시오. –

+0

나는 편집하여 위에 전체 코드를 게시했다. –