Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon FPS CBUI返回Url验证-PHP_Php_Amazon_Amazon Fps - Fatal编程技术网

Amazon FPS CBUI返回Url验证-PHP

Amazon FPS CBUI返回Url验证-PHP,php,amazon,amazon-fps,Php,Amazon,Amazon Fps,我正在尝试运行Amazon FPS PHP快速入门指南,但在验证CBUI提供的返回url时遇到了问题 以下是网址: http://local-screen.com/wp-content/plugins/lclscrn_projects/amazon_fps/FPS/ReturnUrlVerificationSampleCode.php?tokenID=N1G9E5I7BH72563866UZ23YZ1X1AL9AZ2A9291Q1PKDATS8R7BLZ6Y7LEHY2QRHS&sign

我正在尝试运行Amazon FPS PHP快速入门指南,但在验证CBUI提供的返回url时遇到了问题

以下是网址:

http://local-screen.com/wp-content/plugins/lclscrn_projects/amazon_fps/FPS/ReturnUrlVerificationSampleCode.php?tokenID=N1G9E5I7BH72563866UZ23YZ1X1AL9AZ2A9291Q1PKDATS8R7BLZ6Y7LEHY2QRHS&signatureMethod=RSA-SHA1&status=SC&signatureVersion=2&signature=WbBPFQku5BA67CR9vWr664eLNDahErYWZM6GrOYTnlDmLZf0rBm0XATrGPLgj5V94GsP0n%2BJ0uye%0A0MRZ3gastZX9M0cjbaPBcCjW1ydt%2BtCiatd%2BjQA6ZRs7XD%2BmWMqHVT3b4eY5WXKHHHQIvp4xLjJY%0AxuwtLf4MaYuiATtdnCY%3D&certificateUrl=https%3A%2F%2Ffps.sandbox.amazonaws.com%2Fcerts%2F090911%2FPKICert.pem%3FrequestId%3Dbjyk7pqb789b33qxg4h9lx8kn8ijplnc5pow0ycey00olslowmv&expiry=01%2F2018&callerReference=%241%24yo8s
这就是我得到的错误:

Verifying return url signed using signature v2 .... 
Fatal error: Uncaught exception 'Amazon_FPS_SignatureException' with message 'Certificate could not be verified by the FPS service' in /home/content/85/9687085/html/wp-content/plugins/lclscrn_projects/amazon_fps/FPS/SignatureUtilsForOutbound.php:103 Stack trace: #0 /home/content/85/9687085/html/wp-content/plugins/lclscrn_projects/amazon_fps/FPS/SignatureUtilsForOutbound.php(50): Amazon_FPS_SignatureUtilsForOutbound->validateSignatureV2(Array, 'http://local-sc...', 'GET') #1 /home/content/85/9687085/html/wp-content/plugins/lclscrn_projects/amazon_fps/FPS/ReturnUrlVerificationSampleCode.php(93): Amazon_FPS_SignatureUtilsForOutbound->validateRequest(Array, 'http://local-sc...', 'GET') #2 /home/content/85/9687085/html/wp-content/plugins/lclscrn_projects/amazon_fps/FPS/ReturnUrlVerificationSampleCode.php(97): Amazon_FPS_ReturnUrlVerificationSampleCode::test() #3 {main} thrown in /home/content/85/9687085/html/wp-content/plugins/lclscrn_projects/amazon_fps/FPS/SignatureUtilsForOutbound.php on line 103
以下是获取变量并调用验证页面的函数:

public static function test() {

                $aws_access_key = self::$aws_access_key;
                $aws_secret_key = self::$aws_secret_key;

                $utils = new Amazon_FPS_SignatureUtilsForOutbound($aws_access_key, $aws_secret_key);

                /* Verification of an return url signed using signature version 2.*/

                // New parameters sent in return url signed using signature v2
                $params["certificateUrl"] = self::$certificate_url;
                $params["signature"] = self::$signature;
                $params["signatureMethod"] = self::$signature_method;
                $params["signatureVersion"] = self::$signature_version;

                // foreach ($params as $param) {
                //         echo $param;
                //         echo '<br/><br/>';
                // }
                // echo self::$return_url;
                // return;


                $urlEndPoint = self::$return_url; //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";
    }
公共静态功能测试(){
$aws\u access\u key=self::$aws\u access\u key;
$aws\u secret\u key=self::$aws\u secret\u key;
$utils=新Amazon\u FPS\u签名文件路由绑定($aws\u访问密钥,$aws\u秘密密钥);
/*验证使用签名版本2签名的返回url*/
//在使用签名v2签名的返回url中发送的新参数
$params[“certificateUrl”]=self::$certificate\u url;
$params[“signature”]=self::$signature;
$params[“signatureMethod”]=self::$signature\u方法;
$params[“signatureVersion”]=self::$signature\u版本;
//foreach($params作为$param){
//echo$param;
//回音“

”; // } //echo self::$return\u url; //返回; $urlEndPoint=self::$return\u url;//您的返回url端点。 打印“验证使用签名v2签名的返回url…”\n; //返回url作为http GET请求发送,因此我们将GET指定为http方法。 //签名验证不需要您的密钥 “打印”签名正确:“.$utils->validateRequest($params,$urlenpoint,“GET”)。”\n; }
我还有foreach循环的输出,如果有人需要,我可以在上面进行PM。我只是不明白为什么我不能验证这个url。任何帮助都将不胜感激


Nick

我也在使用来自Amazon的PHP示例代码,并且遇到了完全相同的错误消息

解决方案

要求1:您在VerifySignature请求中传递的
HttpParameters
的值的参数顺序必须与Amazon的UI传递给返回URL的参数顺序相同。因此,不要像Amazon的示例代码那样手动获取每个GET参数,只需使用
$\u GET
对象作为
$parameters
变量在
SignatureUtilsForOutbound.php
中的值


要求2:您需要从互联网上可访问的盒子中进行测试。如果从localhost进行测试,您将始终遇到此错误。

我也面临同样的问题。如果您解决了此问题,请发布您的答案。谢谢要求2并不完全正确。您只需使用有效的url,如
http://127.0.0.1/
http://example.com/
什么的<代码>本地主机无法工作。检查