2016-07-07 2 views
0

amazon PHP SDK를 사용하여 인벤토리를 업데이트하기 위해 MWS에 피드를 제출하려고합니다. 여기Amazon MWS Connection Refused FeedSubmit

내 XML :

<?xml version="1.0" encoding="utf-8"?> 
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amznenvelope.xsd"> 
<Header> 
    <DocumentVersion>1.01</DocumentVersion> 
    <MerchantIdentifier>MY_MERCHANT_ID</MerchantIdentifier> 
</Header> 
<MessageType>Inventory</MessageType> 
<Message> 
    <MessageID>1</MessageID> 
    <OperationType>Update</OperationType> 
    <Inventory> 
     <SKU>MY_SKU</SKU> 
     <Quantity>3</Quantity> 
     <FulfillmentLatency>1</FulfillmentLatency> 
    </Inventory> 
</Message> 
</AmazonEnvelope> 

그리고 내 PHP 코드 :

$service = new MarketplaceWebService_Client(AWS_KEY, AWS_SECRET, CONFIG_FEEDS, APP_NAME, APP_VERSION); 

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

    $request = new MarketplaceWebService_Model_SubmitFeedRequest(); 
    $request->setMerchant(MERCHANT_ID); 
    $request->setMarketplaceIdList(["id" => [MARKET_PLACE_1, MARKET_PLACE_2, MARKET_PLACE_3]]); 
    $request->setFeedType($feedType); 
    $request->setContentMd5(base64_encode(md5(stream_get_contents($feedHandle), true))); 
    rewind($feedHandle); 
    $request->setPurgeAndReplace(false); 
    $request->setFeedContent($feedHandle); 

    rewind($feedHandle); 
    $response = $service->submitFeed($request); 

내가 코드를 실행하면 내가 빈 에러 응답을 얻을 : 나는에 컬을 활성화

Caught Exception: Internal Error 
Response Status Code: 0 
Error Code: 
Error Type: 
Request ID: 
XML: 
RequestId: , 
ResponseContext: , 
Timestamp: 
ResponseHeaderMetadata: 

을 오류를 표시하면 다음과 같이 표시됩니다.

나는 문제에 대해 읽고 난이 같은 Client.php의 기본 구성을 설정하는 클래스 내부의 기능에 해당 옵션 개질시키기 시도 CURLOPT_SSL_VERIFYPEER 옵션 변경에 대한 답변 보았다 또한

private function getDefaultCurlOptions() { 
return array (
    CURLOPT_POST => true, 
    CURLOPT_USERAGENT => $this->config['UserAgent'], 
    CURLOPT_VERBOSE => true, 
    CURLOPT_HEADERFUNCTION => array ($this, 'headerCallback'), 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => 2, 
); 

CURLOPT_CAINFO   => __DIR__ . "/../../../../../cacert.pem" 

하지만 성공하지 : 내 난 그냥이 같은 사실에 VERIFYPEER을 모질라에서 얻은 설정하고 인증서를 추가했습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

클라이언트가 httpS없이 연결하도록 만드는 동안 CONFIG_FEEDS에서 URL을 전달한다는 것을 알았습니다 :)