0

Amazon から単純な xml 回答を取得するのに問題があります。常に次のように報告されます。

Sender
    InvalidParameterValue
    Either Action or Operation query parameter must be present.

そして、サポートに問い合わせても、欠落しているパラメーターが表示されないのを手伝ってくれません...彼らの提案は例に従うことですが、私のWebホストはphp 5.2しかサポートしていないため、オートローダーは機能しません。

<?php
#header("Content-Type:text/xml");
$sellerID = 'SELLEDERID';
$aws = 'AWSKEY';
$secret = 'SECRET';


$action = 'GetReportList';

$timestamp = gmdate("Y-m-d\TH:i:s\Z");
$signature = $action . $timestamp;
$sig = base64_encode(hash_hmac("sha256", $signature, $secret, true));
$service = 'https://mws.amazonservices.com/?';

$url  = 'AWSAccessKeyId='.$aws;
$url .= '&Action='.$action;
$url .= '&Merchant='.$sellerid;
$url .= '&SignatureVersion=2';
$url .= '&Timestamp=2013-01-10T12:22:48Z';
$url .= '&Version=2009-01-01';
$url .= '&Signature='.$sig;
$url .= '&SignatureMethod=HmacSHA256';
$awsURL = $service.urlencode($url);

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $awsURL,
    CURLOPT_USERAGENT => 'Request'
));
$resp = curl_exec($curl);
curl_close($curl);
echo "<pre>";
var_dump($resp);
var_dump($awsURL);
echo "</pre>";
?> 
4

1 に答える 1

0

「あなたのリクエストにエラーは見られません」というのは、署名の計算がかなりずれているため、php を介して行ったリクエストではなく、Scratchpad に入力したリクエストを指している可能性があります。

sig の計算方法については、この StackOverflowの質問またはMWS 開発者ガイド(12 ページ、「独自のクライアント ライブラリを作成する場合」) を参照してください。

実際のエラー メッセージは奇妙に思えます。署名を正しく取得したら、変更されることを期待しています。また、かなりの数の MWS API 呼び出しで HTTP POST が必要になることにも注意してください。そのため、そのコードを他の場所で再利用する場合は、それに応じてコードを変更することをお勧めします。

于 2013-02-25T01:32:07.997 に答える