YunCart电商网站支付宝接口出现500错误
yuncart 是一套易与集成的php开源商城系统,方便多人同时经行二次开发,Yuncart 可以以非常方便的方式切换到sql server,oracle等数据库,大小1.9MB,感兴趣的朋友,可以去官网下载。
最近帮朋友用php做了一个电商网站,化妆品方面的。上网看了相关方面的程序源码,最后选择了yuncart,它轻量、简单、功能丰富等特点,闲暇时,做了些修改。下面就今天出现的问题,简单的说下,希望能帮助到有类似问题的童鞋。
下图为我朋友的网站:
问题描述:
在网站上购买支付成功后,返回网站时,出现500内部服务器错误。
排除:出现500后,发现支付宝上交易已成功,钱也少了,说明支付的时候是没有问题的,在回调的过程中发生了错我。
然后,开启网站上的日志,进行线上调试:
最后发现错误的根源出现在:/include/front/third/payment/alipay/alipay_core.function.php中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
function getHttpResponse( $url , $input_charset = '' , $time_out = "60" ) { $urlarr = parse_url ( $url ); $errno = "" ; $errstr = "" ; $transports = "" ; $responseText = "" ; if ( $urlarr [ "scheme" ] == "https" ) { $transports = "ssl://" ; $urlarr [ "port" ] = "443" ; } else { $transports = "tcp://" ;//LCQ修改 $urlarr [ "port" ] = "80" ; } $fp =@ fsockopen ( $transports . "" . $urlarr [ 'host' ], $urlarr [ 'port' ], $errno , $errstr , $time_out ); if (! $fp ) { die ( "ERROR: $errno - $errstr<br />\n" ); } else { if (trim( $input_charset ) == '' ) { fputs ( $fp , "POST " . $urlarr [ "path" ]. " HTTP/1.1\r\n" ); } else { fputs ( $fp , "POST " . $urlarr [ "path" ]. '?_input_charset=' . $input_charset . " HTTP/1.1\r\n" ); } fputs ( $fp , "Host: " . $urlarr [ "host" ]. "\r\n" ); fputs ( $fp , "Content-type: application/x-www-form-urlencoded\r\n" ); fputs ( $fp , "Content-length: " . strlen ( $urlarr [ "query" ]). "\r\n" ); fputs ( $fp , "Connection: close\r\n\r\n" ); fputs ( $fp , $urlarr [ "query" ] . "\r\n\r\n" ); while (! feof ( $fp )) { $responseText .= @ fgets ( $fp , 1024); } fclose( $fp ); $responseText = trim( stristr ( $responseText , "\r\n\r\n" ), "\r\n" ); return $responseText ; } |
这个函数中使用了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
fsockopen 这个函数,由于某些服务器或虚拟空间上,不支持php的 fsockopen 方法,网上也有说:在url中,去掉http: // 如:http: //www.xxx.com改成www.xxx.com。但这仍不是问题的核心。换来,改用curl来取代fsockopen。于是 getHttpResponse方法就改写成: /** * 作 者:郑州北鲨* 远程获取数据 * 注意:该函数的功能可以用curl来实现和代替。curl需自行编写。 * $url 指定URL完整路径地址 * @param $input_charset 编码格式。默认值:空值 * @param $time_out 超时时间。默认值:60 * return 远程输出的数据 */ //curl改写fsockopen function getHttpResponse( $url , $requestdata , $time_out = "60" ) { $ci = curl_init(); curl_setopt( $ci ,CURLOPT_USERAGENT, "Yuncart" ); curl_setopt( $ci ,CURLOPT_CONNECTTIMEOUT, $time_out ); curl_setopt( $ci ,CURLOPT_TIMEOUT, $time_out ); curl_setopt( $ci ,CURLOPT_RETURNTRANSFER,true); curl_setopt( $ci ,CURLOPT_SSL_VERIFYPEER,false); curl_setopt( $ci , CURLOPT_HEADER, false); curl_setopt( $ci ,CURLOPT_POST,true); curl_setopt( $ci , CURLOPT_POSTFIELDS, $requestdata ); curl_setopt( $ci , CURLINFO_HEADER_OUT, TRUE ); curl_setopt( $ci , CURLOPT_URL, trim( $url , "?" )); $response = curl_exec( $ci ); $http_code = curl_getinfo( $ci , CURLINFO_HTTP_CODE); $http_info = curl_getinfo( $ci ); curl_close ( $ci ); return $response ; } 这样以来,我们再次测试,OK!交易成功,问题由此解决! |
YunCart电商网站支付宝接口出现500错误的更多相关文章
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...
- 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域
一.前言 结合我们本次系列的第一篇博文中提到的上下文映射图(传送门:如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念),得知我们这个电商网站的核心域就是销售子域.因为电子商务是以信息网络 ...
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- 如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备
阅读目录 前言 准备 实现 结语 一.前言 最近实在太忙,上周停更了一周.按流程一步一步走到现在,到达了整个下单流程的最后一公里——结算页的处理.从整个流程来看,这里需要用户填写的信息是最多的,那么 ...
- DDD设计一个电商网站
DDD设计一个电商网站(十一)-- 最后的准备 阅读目录 前言 准备 实现 结语 一.前言 最近实在太忙,上周停更了一周.按流程一步一步走到现在,到达了整个下单流程的最后一公里--结算页的处理. ...
- 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展
阅读目录 前言 回顾 本地的一致性 领域事件发布出现异常 订阅者处理出现异常 结语 一.前言 上篇中我们初步运用了领域事件,其中还有一些问题我们没有解决,所以实现是不健壮的,下面先来回顾一下. 二.回 ...
随机推荐
- 理解CSS边框border
前面的话 边框是CSS盒模型属性中默默无闻的一个普通属性,CSS3的到来,但得边框属性重新焕发了光彩.本文将详细介绍CSS边框 基础样式 边框是一条以空格分隔的集合样式,包括边框粗细(边框宽度 ...
- 猫哥网络编程系列:HTTP PEM 万能调试法
注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...
- C++中的时间函数
C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...
- 4.Windows Server2012 R2里面部署 MVC 的网站
网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新:http://dnt ...
- 史上最详细git教程
题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...
- MVC Core 网站开发(Ninesky) 2.1、栏目的前台显示(补充)
在2.1.栏目的前台显示中因右键没有添加视图把微软给鄙视了一下,后来有仔细研究了一下发现应该鄙视自己,其实这个功能是有的,是自己没搞清楚乱吐糟. 其实只要在NuGet中安装两个包(Microsoft. ...
- 通过 floating IP 访问 VIP - 每天5分钟玩转 OpenStack(126)
前面我们是直接用 curl 测试 VIP,在更为真实的场景中通常会使用 floating IP 访问 VIP. 下面我们给 VIP 关联一个 floating IP,再进行测试. 访问 Project ...
- 界面设计技法之css布局
css布局之于页面就如同ECMAScript之于JS一般,细想一番,html就如同语文,css就如同数学,js呢,就是物理,有些扯远,这里就先不展开了. 回到主题,从最开始的css到如今的sass(l ...
- Maven 代理设置
在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies> <!-- proxy | Specificatio ...
- 浅谈JSP注释
HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...