SubmitFeed
Amazon マーケットプレイスにリクエストを送信しようとしていますが、リクエストを送信すると次のエラーが表示されます。
フィードに渡した Content-MD5 HTTP ヘッダーが、フィード用に計算した Content-MD5 と一致しませんでした
そこで、Amazon Marketplace Scratchpadでリクエストをテストしました。XML を本文とヘッダーに追加すると、次の MD5 ハッシュが生成されます。
1db3b177e743dc8c0df4dc9eb5c1cbcf
Content-MD5 (Base64)
ただし、次の値のヘッダーもあります。
HbOxd+dD3IwN9NyetcHLzw==
そして、生の MD5 ハッシュではなく、HTTP ヘッダーとして実際に Amazon MWS に送信される値のようです。Content-MD5
PHP スクリプトをチェックしたところ、生の MD5 ハッシュが正しく生成されています。md5
関数 ( md5($xml)
) で XML 文字列をラップすると、Amazon が生成するのと同じ生の MD5 ハッシュが得られます。しかし、それを関数にラップすると、base64_encode
Amazon が Content-MD5 (Base64) 値としてリストするものとはまったく異なる値が得られます。
これまでのところ、base64_encode
関数で次をラップしようとしました。
- 生の XML 文字列
- 生の XML 文字列の MD5 ハッシュ
しかし、Amazon の Content-MD5 (Base64) 値と同じ値を生成するものはありません。
では、その値を取得するための Amazon Base64 エンコーディングとは正確には何でしょうか? 値をデコードしようとしましたが、エンコーディングの問題と思われるランダムな文字が大量に発生したため、Amazon がエンコーディングして正しい方向を示している生の文字列を確認できません。
これに関するガイダンスをいただければ幸いです。