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