Amazon MWS API w / PHP: alternativa para getFeedSubmissionResult

Estou tendo um problema com a recuperação dos resultados de um arquivo de alimentação processado usando o Amazon MWS API com PHP. Estou usando a class getFeedSubmissionResult, para ser preciso. O problema é que quando eu uso a API, conforme instruído pela documentação, não há dados relevantes que são lidos pela class que eu possuo acessar (ou assim parece). Então, minha pergunta é: como recupero o arquivo XML bruto que a amazon envia de volta e armazena-o em um arquivo no meu computador?

Eu estava retraindo o código usado pelo MWS e tentando encontrar onde eles puxam o arquivo XML da amazon e analisá-lo para tentar salvá-lo em um arquivo sem sorte. Agradeceria profundamente se alguém pudesse me direcionar para isso, e se não, talvez um trabalho possa ser melhor.

Então é isso que eu tenho feito:

Usei o getFeedSubmissionResultSample.php fornecido nas amostras de MWS. Supostamente, isso deveria me dar os dados que me dizem quantos itens foram processados ​​e quantos itens processados ​​foram bem-sucedidos. Mas não. Então eu tentei fazer um print_r da variável de resposta:

function invokeGetFeedSubmissionResult(MarketplaceWebService_Interface $service,$request) { try { $response = $service->getFeedSubmissionResult($request); echo "
Var dump here:
"; print_r($response); echo ("
Service Response\n"); echo ("=============================================================================\n"); echo(" GetFeedSubmissionResultResponse\n"); if ($response->isSetGetFeedSubmissionResultResult()) { $getFeedSubmissionResultResult = $response->getGetFeedSubmissionResultResult(); echo (" GetFeedSubmissionResult\n"); if ($getFeedSubmissionResultResult->isSetContentMd5()) { echo (" ContentMd5\n"); echo (" " . $getFeedSubmissionResultResult->getContentMd5() . "\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"); } } 

E a saída me dá isso:

Resposta de Serviço

  GetFeedSubmissionResultResponse GetFeedSubmissionResult ContentMd5 G5Sw+2ooONEZU1iQoqdEOQ== ResponseMetadata RequestId f9d4be45-6710-42eb-850e-f437224f9938 ResponseHeaderMetadata: RequestId: f9d4be45-6710-42eb-850e-f437224f9938, ResponseContext: EM/RH7RHQhLSc47Tj2a2Uv2CGKEfvxaKOijjcaKeoh8dGISci3yqo9OHZs7dpLDIszJVz4Jt4z8=,9SYUaktMzcOG6UyuyhXu/kJPl0gpLeenslL2rkugDLhDYftMleRx1XIexbVWNxuYl7cO6901Foiv Kp7hvaLeAQ==, Timestamp: 2013-06-18T07:29:37.393Z 

Eu omitei os resultados var_dump porque não sei se isso pode representar uma questão de segurança da minha parte. Mas em qualquer caso, o var_dump não forneceu nenhum dado que eu possa acessar. Eu também tracei o código para onde as aulas e seus methods para ver se eu posso acessá-lo a partir daí, mas sai de mãos vazias.

Observe que eu tenho os parâmetros adequados para chamar os resultados (ou seja, o FeedSubmissionId) porque eu fiz isso com o bloco de rascagem amazon.

Sua ajuda seria muito apreciada! 🙂

Atenciosamente, Caleb

Eu tive o mesmo problema. A questão é que a resposta retorna o resultado para que você compare o arquivo recebido contra para não verificar nenhuma corrupção durante a transmissão. Para obter a resposta xml com a Mensagem, você deve salvá-lo para arquivo não para php: // memory. Então, o próximo código funciona para mim bem

 $filename = __DIR__.'/file.xml'; $handle = fopen($filename, 'w+'); $request = new MarketplaceWebService_Model_GetFeedSubmissionResultRequest(); $request->setMerchant(MERCHANT_ID); $request->setFeedSubmissionId(ID_TO_CHANGE); $request->setFeedSubmissionResult($handle); try { $response = $service->getFeedSubmissionResult($request); fclose($handle); echo ("Service Response\n"); echo ("=============================================================================\n"); echo(" GetFeedSubmissionResultResponse\n"); if ($response->isSetGetFeedSubmissionResultResult()) { $getFeedSubmissionResultResult = $response->getGetFeedSubmissionResultResult(); echo (" GetFeedSubmissionResult"); if ($getFeedSubmissionResultResult->isSetContentMd5()) { echo (" ContentMd5"); echo (" " . $getFeedSubmissionResultResult->getContentMd5() . "\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"); } 

O resultado que você pode encontrar no arquivo ./file.xml isso me ajudou

Se você não quer usar um arquivo. Então, no final da sua declaração de tentativa.
$ xml = stream_get_contents ($ request-> getFeedSubmissionResult ());

Isso colocará os dados xml em $ xml

Intereting Posts