Здравствуйте, я перечислил весь заказ, доступный в моих заказах, используя API заказов. Теперь мне нужно обновить статус заказа, как отправлено с помощью API фида. В amazon Scratchpad я использовал Feed API для обновления статуса продукта, и он успешно и затем, используя Feed-ID, я проверил статус поданного фида, нет ошибки в статусе, но кроме этого есть предупреждение, называемое этим.
Заказ не может быть выполнен. Для получения дополнительной информации свяжитесь с продавцом
И статус заказа не изменяется, как отправлено.
Это Feed, который я использую, чтобы обновить статус. И тип фида – _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-интерфейсе отправки.
Я использую следующий код для отправки заказов с использованием 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);