gpt4 book ai didi

php - 使用 verifySignature PHP api 返回 "InvalidSignature"的 Amazon FPS 返回 URL 验证

转载 作者:行者123 更新时间:2023-12-03 02:34:19 26 4
gpt4 key购买 nike

在客户端确认 CBUI 中的付款后,我尝试验证 Amazon FPS CBUI 的返回 URL。我正在使用来自 Amazon 的代码示例

    public static function test() {
$utils = new Amazon_FPS_SignatureUtilsForOutbound();

$params["signature"] = $_GET['signature'];
$params["expiry"] = "10/2016";
$params["signatureVersion"] = $_GET['signatureVersion'];
$params["signatureMethod"] = $_GET['signatureMethod'];
$params["certificateUrl"] = $_GET['certificateUrl'];
$params["tokenID"] = $_GET['tokenID'];
$params["status"] = $_GET['status'];
$params["callerReference"] = $_GET['callerReference'];

$urlEndPoint = "http://example.com/Amazon/IpnReturnUrlValidation/Samples/ReturnUrlVerificationSampleCode.php"; //Your return url end point.
print "Verifying return url signed using signature v2 ....\n";
//return url is sent as a http GET request and hence we specify GET as the http method.
//Signature verification does not require your secret key
print "Is signature correct: " . $utils->validateRequest($params, $urlEndPoint, "GET") . "\n";
}

我从超全局变量 $_GET 使用的所有参数都有正确的值(我认为),但我总是得到这个响应:

<Response><Errors><Error><Code>InvalidSignature</Code><Message>The request signature we calculated does not match the signature you provided.</Message></Error></Errors><RequestID>bb922e49-af5e-43ba-a3d0-464ce2851222</RequestID></Response>

我还比较了 Amazon 返回的签名参数的值与我发送到 verifySignature API 的签名参数的值,它们看起来相同。

最佳答案

我知道这有点晚了,但我解决了这个问题,并且发布解决方案也许可以帮助其他遇到同样问题的人。

显然我丢失了亚马逊通过查询字符串发送的一些参数。为了正确验证签名,您需要传递他们发送给您的每个参数。因此,我使用了与此类似的结构:

foreach ($_GET as $key => $value) { }

将每个 $_GET 参数/值添加到 $params 中,并最终将其发送回 Amazon 进行验证。

关于php - 使用 verifySignature PHP api 返回 "InvalidSignature"的 Amazon FPS 返回 URL 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9505382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com