支付淘宝接口异常退出出

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
支付宝交易接口之 关闭交易接口(close_trade)
下载积分:500
内容提示:支付宝交易接口之 关闭交易接口(close_trade)
文档格式:PDF|
浏览次数:628|
上传日期: 13:19:09|
文档星级:
该用户还上传了这些文档
支付宝交易接口之 关闭交易接口(close_trade)
官方公共微信网络异常---支付宝接口
调试信息:
javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException:
Could not validate certificate: current time: Sun Feb 13 20:57:58 格林尼治标准时间+,
validation time: Mon Feb 08 08:00:00 格林尼治标准时间+
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:413)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:257)
at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:210)
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:477)
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432)
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:164)
at com.yaloe8135.alipay.NetworkManager.SendAndWaitResponse(NetworkManager.java:113)
at com.yaloe8135.alipay.MobileSecurePayHelper.sendRequest(MobileSecurePayHelper.java:304)
at com.yaloe8135.alipay.MobileSecurePayHelper.sendCheckNewUpdate(MobileSecurePayHelper.java:280)
at com.yaloe8135.alipay.MobileSecurePayHelper.checkNewUpdate(MobileSecurePayHelper.java:246)
at com.yaloe8135.alipay.MobileSecurePayHelper$2.run(MobileSecurePayHelper.java:76)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.security.cert.CertificateException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: current time: Sun Feb 13 20:57:58 格林尼治标准时间+, validation time: Mon Feb 08 08:00:00 格林尼治标准时间+
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:204)
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:163)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:593)
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410)
... 14 more
Caused by: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: current time: Sun Feb 13 20:57:58 格林尼治标准时间+, validation time: Mon Feb 08 08:00:00 格林尼治标准时间+
at com.android.org.bouncycastle.jce.provider.RFC3280CertPathUtilities.processCertA(RFC3280CertPathUtilities.java:1493)
at com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi.engineValidate(PKIXCertPathValidatorSpi.java:364)
at java.security.cert.CertPathValidator.validate(CertPathValidator.java:190)
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:191)
... 18 more
Caused by: java.security.cert.CertificateNotYetValidException: current time: Sun Feb 13 20:57:58 格林尼治标准时间+, validation time: Mon Feb 08 08:00:00 格林尼治标准时间+
at org.apache.harmony.security.provider.cert.X509CertImpl.checkValidity(X509CertImpl.java:145)
at org.apache.harmony.security.provider.cert.X509CertImpl.checkValidity(X509CertImpl.java:139)
at com.android.org.bouncycastle.jce.provider.RFC3280CertPathUtilities.processCertA(RFC3280CertPathUtilities.java:1484)
解决方法:
把请求的https变成http
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.039 (s). 13 q(s)3626人阅读
我集成了支付宝接口,能够支付成功,但是notify_url.php中始终好像没有回调,因此按照官方文档,我做了如下修改
$verify_result = $alipayNotify-&verifyNotify();
if($verify_result) {
//商户订单号
$order_id = $_POST['out_trade_no'];
//支付宝交易号
$trade_no = $_POST['trade_no'];
//交易状态
$trade_status = $_POST['trade_status'];
//订单总金额
$total_fee = floatval($_POST['total_fee']);
//订单支付时间
$pay_time = $_POST['gmt_payment'];
//定制的错误机制
$user_debug=1;
//退款状态
$refund_status = $_POST['refund_status'];
logResult('记录付款后支付宝返回的相关信息[订单编号]:'.$order_id.'[金额]:'.$total_fee.'[时间]:'.$pay_time.'[状态]:'.$_POST['trade_status']);
if ($_POST['trade_status'] == 'TRADE_SUCCESS' || $_POST['trade_status'] == 'TRADE_FINISHED') {
//验证失败
logResult('验证失败');
echo &fail&;
}其实就是用支付宝接口内部方法logResult方法记录了回调的情况,看看是否回调该文件并且看回调到了哪一步
再支付一次我发现log.txt文件中多了“验证失败”,因此我就判断是$alipayNotify-&verifyNotify();这个没有返回正确的值
打开alipay_notify.class.php文件,找到verifyNotify方法,发现官方注释了一段语句
function verifyNotify(){
if(empty($_POST)) {//判断POST来的数组是否为空
//生成签名结果
$isSign = $this-&getSignVeryfy($_POST, $_POST[&sign&]);
//获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)
$responseTxt = 'true';
if (! empty($_POST[&notify_id&])) {$responseTxt = $this-&getResponse($_POST[&notify_id&]);}
//写日志记录
//if ($isSign) {
// $isSignStr = 'true';
// $isSignStr = 'false';
//$log_text = &responseTxt=&.$responseTxt.&\n notify_url_log:isSign=&.$isSignStr.&,&;
//$log_text = $log_text.createLinkString($_POST);
//logResult($log_text);
//$responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
//isSign的结果不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
if (preg_match(&/true$/i&,$responseTxt) && $isSign) {
将如上代码的注释取消,再一次支付,再看log.txt发现写入了如下代码
执行日期:04
responseTxt=
&notify_url_log:isSign=true,discount=0.00&payment_type=1&subject=订单主题&trade_no=5398&buyer_email=&gmt_create= 12:12:55&notify_type=trade_status_sync&quantity=1&out_trade_no=7&seller_id=0923&notify_time=
12:13:03&trade_status=TRADE_SUCCESS&is_total_fee_adjust=N&total_fee=0.10&gmt_payment= 12:13:03&seller_email=&price=0.10&buyer_id=6988&notify_id=ecc645e3e66ag&use_coupon=N&sign_type=MD5&sign=5a46cb0b739f293e042e
于是我们可以发现isSign是通过了,那就是$this-&getResponse($_POST[&notify_id&]这个方法错误了
function getResponse($notify_id) {
$transport = strtolower(trim($this-&alipay_config['transport']));
$partner = trim($this-&alipay_config['partner']);
$veryfy_url = '';
if($transport == 'https') {
$veryfy_url = $this-&https_verify_
$veryfy_url = $this-&http_verify_
$veryfy_url = $veryfy_url.&partner=& . $partner . &?ify_id=& . $notify_
$responseTxt = getHttpResponseGET($veryfy_url, $this-&alipay_config['cacert']);
return $responseT
可以看出,该函数就是与支付宝进行通信,并且这一次用到了支付宝的证书,我起初怀疑是证书的问题,其实所有的证书都是一样的,不会根据商户不同证书不同,不过也有可能是证书路径的问题$alipay_config['cacert']&&& = getcwd().'\\cacert.pem';有人也说改成$alipay_config['cacert']&&& = getcwd().'/cacert.pem';不过我没遇到这个问题
当然最后要看alipay_core.function.php中的getHttpResponseGET方法了
function getHttpResponseGET($url,$cacert_url) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
$responseText = curl_exec($curl);
//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
curl_close($curl);
return $responseT
发现就是个curl_exec方法,于是就自然而然的怀疑是curl_exec方法被禁用了,打开phpinfo一看,果然是curl_exec被禁用了
从中我们可以发现支付宝工作的原理,其实也没有多复杂,支付成功后他会往notify_url post数据过来,系统会根据本地的证书,curl校验
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:28499次
积分:1054
积分:1054
排名:千里之外
原创:80篇
(2)(4)(2)(2)(1)(1)(1)(2)(3)(1)(1)(2)(2)(6)(4)(1)(5)(1)(2)(4)(1)(9)(1)(2)(30)请登陆后使用
只需一步,快速开始
请完成以下验证码
请完成以下验证码
吧友自助信息发布区,请自行甄别
查看: 17895|回复: 9
支付宝一登录就“网络出现异常,请您稍后再试”求解
【问题解决了,支付宝系统问题,个别还会出现付款时无限转圈】
网页端,我的 支付宝一登录就“网络出现异常,请您稍后再试”,用其他的支付宝登录 就没问题,可以直接上,直接的账号登录就自动退出,清空缓存和cookie都没用,求帮忙啊
付款也错误
付款时也出现……付了好几次才成功
凌晨我也不行。。还以为自己网的问题。
同,从早上就这样了
系统出问题
我的正常,交了话费
我的一直重复登陆
中午吃饭付款没有问题,坐标:上海。
重要信息提醒 /1
如果你急需果果
挣果果最快的方式:做问卷调查
问卷完成后,三小时内自动返果果
每天更新,每天都有新问卷做
Powered by

我要回帖

更多关于 lol网络异常即将退出 的文章

 

随机推荐