我正在尝试向SubmitFeed
Amazon Marketplace 提交请求,但是当我提交请求时出现以下错误:
您为供稿传递的 Content-MD5 HTTP 标头与我们为您的供稿计算的 Content-MD5 不匹配
所以我在Amazon Marketplace Scratchpad上测试了这个请求。我将我的 XML 添加到正文和标题中,它会生成以下 MD5 哈希:
1db3b177e743dc8c0df4dc9eb5c1cbcf
但也有一个Content-MD5 (Base64)
标题,这个值:
HbOxd+dD3IwN9NyetcHLzw==
它似乎是实际作为 HTTP 标头发送到亚马逊 MWS 的值,Content-MD5
而不是原始 MD5 哈希值。
我检查了我的 PHP 脚本,它正确地生成了原始 MD5 散列,当我将 XML 字符串包装在md5
函数 ( md5($xml)
) 中时,我得到了与 Amazon 生成的相同的原始 MD5 散列。但是,如果我将其包装在函数base64_encode
中,我会得到一个完全不同的值,即亚马逊为 Content-MD5 (Base64) 值列出的值。
到目前为止,我已经尝试在base64_encode
函数中包装以下内容:
- 原始 XML 字符串
- 原始 XML 字符串的 MD5 哈希
但没有一个产生与亚马逊的 Content-MD5 (Base64) 值相同的值。
那么究竟是什么Amazon Base64 编码来获得这个值呢?我已经尝试解码该值,但只是加载了似乎是编码问题的随机字符,所以我看不到亚马逊编码的原始字符串指向正确的方向。
对此的任何指导将不胜感激。