Php 调用方输入异常:签名无效

Php 调用方输入异常:签名无效,php,amazon-web-services,amazon,payment-gateway,Php,Amazon Web Services,Amazon,Payment Gateway,我正在尝试集成亚马逊支付网关。我从amazon.com下载了以下库:amazon-fps-2010-08-28-php5-library 我遵循了readme.html中提到的相同说明。 在配置CBUI文件夹下的代码后,我尝试运行CBUISingleUsePipelineSample.php文件,得到一个url,然后尝试在其他页面中打开该url。但是,它抛出了一个错误,如下所示: 亚马逊支付 无效请求 由于出现错误,我们无法处理您的付款请求。请联系您发起此付款的网站 调用方输入异常:签名无效 在

我正在尝试集成亚马逊支付网关。我从amazon.com下载了以下库:amazon-fps-2010-08-28-php5-library

我遵循了readme.html中提到的相同说明。 在配置CBUI文件夹下的代码后,我尝试运行CBUISingleUsePipelineSample.php文件,得到一个url,然后尝试在其他页面中打开该url。但是,它抛出了一个错误,如下所示:

亚马逊支付
无效请求

由于出现错误,我们无法处理您的付款请求。请联系您发起此付款的网站

调用方输入异常:签名无效


在形成签名/URL时,有三件事需要注意

1.似乎参数“TransactionMount”对于有效的联合品牌用户界面管道是必需的,尽管没有具体的指示来暗示该问题

2.如果您的任何参数中包含空格,并且您尝试在除最新(5.4)版本的PHP之外的所有版本中使用html_build_query(),那么您将获得一个编码方案,该方案的特点是空格带有“+”标记,而不是亚马逊看起来喜欢的“%20”。我上面的代码通过在整个参数数组上实现rawurlencode()来解决这个问题

3.参数的顺序在签名的构造中至关重要。键(不是值)需要按不区分大小写的字母顺序排列。还值得注意的是,尽管文档中对API做了说明,但在创建签名的查询字符串时,必须同时使用符号(&)和等号(=)


请参阅

您是否从amazon帐户中插入了api密钥?感谢shreyos的回复并提供了帮助。现在我完全摆脱了无效签名异常,现在又遇到了另一个错误。谢谢shreyos的帮助