PHP-PHP测试接口(及时到账),return_url总是返回失败
公司要做支付宝充值,今天测试,出现一个很大的问题,
钱都打过去了,
但return_url 返回的老是验证失败(notify_url 返回的是正确的)
查看了下后是sing和mysign不一致,找了好久都不知道问题出在哪了?
下面是return_url的日志
请求各位大哥帮帮忙,急啊。
执行日期:20130222185521
responseTxt=true
notify_url_log:sign=03bdf6fa7b3161226c201158486d9282&mysign=6238b62e3aa6efdee6b050d7bc8506e2,body=支付游戏充值&buyer_email=helloadmins@163.com&buyer_id=2088702718984963&exterface=create_direct_pay_by_user&is_success=T¬ify_id=RqPnCoPT3K9%2Fvwbh3I73%2FoccJ2UNMeTP8b3v2DKX%2FogBWtiBWOp7d9CyAAfhi1RBeiQr¬ify_time=2013-02-22 18:55:11¬ify_type=trade_status_sync&out_trade_no=ZFB20130222065449&payment_type=1&seller_email=13365511711@qq.com&seller_id=2088801385523753&subject=支付游戏充值&total_fee=0.01&trade_no=2013022227603396&trade_status=TRADE_SUCCESS&sign=03bdf6fa7b3161226c201158486d9282&sign_type=MD5&_URL_=Array
我用的是thinkphp做的,下面是测试的其它配置
//页面跳转同步通知页面路径,要用 http://格式的完整路径,不允许加?id=123这类自定义参数
//return_url的域名不能写成http://localhost/create_direct_pay_by_user_php_utf8/return_url.php ,否则会导致return_url执行无效
$aliapy_config['return_url'] = 'http://.......com/index.php/Pay/return_url';
//服务器异步通知页面路径,要用 http://格式的完整路径,不允许加?id=123这类自定义参数
$aliapy_config['notify_url'] = 'http://.......com/index.php/Pay/notify_url';
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先不知道你用的支付宝接口是哪个版本的 我的在接收返回值并校验的时候 是这样的:
$partner = Conf::get('epay_ali_pid');
$key = Conf::get('epay_ali_key');
require_once(ROOT_PATH."/app/alipay/class/alipay_notify.php");
require_once(ROOT_PATH."/app/alipay/alipay_config.php");
$_GET['app'] ="";
$_GET['act'] ="";
//构造通知函数信息
$alipay = new alipay_notify($partner,$key,$sign_type,$_input_charset,$transport);
//计算得出通知验证结果
$verify_result = $alipay->return_verify();
//print_r($verify_result);exit;
if($verify_result) {//验证成功
....
}else{
//验证失败
}
然后我对比了一下 发现你new alipay_notify();的时候 传参数的时候传的是一个变量 不知道你这个变量是什么类型的 而查看函数alipy_notify()的时候 里面参数是这样的:
/**构造函数
*从配置文件中初始化变量
*$partner 合作身份者ID
*$key 安全校验码
*$sign_type 签名类型
*$_input_charset 字符编码格式
*$transport 访问模式
*/
function alipay_notify($partner,$key,$sign_type,$_input_charset = "GBK",$transport= "https") {
$this->transport = $transport;
if($this->transport == "https") {
$this->gateway = "https://www.alipay.com/cooperate/gateway.do?";
}else {
$this->gateway = "http://notify.alipay.com/trade/notify_query.do?";
}
$this->partner = $partner;
$this->_key = $key;
$this->mysign = "";
$this->sign_type = $sign_type;
$this->_input_charset = $_input_charset;
}
可以看出这个函数参数 是多个的 不能只用一个变量(你的是$aliapy_config) 请检查下,问题应该出在这。
不久之前也做过支付宝接口的调试,遇到过类似问题。
我用的是kohana框架。
支付宝要求通知页面不允许添加自定义参数,但是你的框架可能对地址添加了参数,导致执行无效。
请在return_url中打印下返回的数组中查看是否含有此类参数。
然后在支付宝给的接口中lib/alipay_core.function.php的paraFilter方法中过滤此参数。