YunCart电商网站支付宝接口出现500错误

简介: yuncart 是一套易与集成的php开源商城系统,方便多人同时经行二次开发,Yuncart 可以以非常方便的方式切换到sql server,oracle等数据库,大小1.9MB,感兴趣的朋友,可以去官网下载。
yuncart 是一套易与集成的php开源商城系统,方便多人同时经行二次开发,Yuncart 可以以非常方便的方式切换到sql server,oracle等数据库,大小1.9MB,感兴趣的朋友,可以去 官网下载。

     最近帮朋友用php做了一个电商网站,化妆品方面的。上网看了相关方面的程序源码,最后选择了yuncart,它轻量、简单、功能丰富等特点,闲暇时,做了些修改。下面就今天出现的问题,简单的说下,希望能帮助到有类似问题的童鞋。

     下图为我朋友的网站:

    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!交易成功,问题由此解决!
目录
相关文章
|
4月前
|
小程序
商家店铺电商小程序模板源码
商家店铺电商小程序模板源码
46 5
|
4月前
|
小程序 前端开发
手机租房房源小程序模板源码
手机租房房源小程序模板源码
141 4
|
4月前
|
安全 API Windows
支付系统13------支付系统的资料在技术库里的在线支付当中,怎样获取微信平台证书那?怎样获取微信平台证书那?第一步打开我们的微信支付平台的文档中心
支付系统13------支付系统的资料在技术库里的在线支付当中,怎样获取微信平台证书那?怎样获取微信平台证书那?第一步打开我们的微信支付平台的文档中心
|
6月前
|
监控 数据挖掘 API
京东商品API接口:电商数据自动化的钥匙
京东商品API接口为电商领域带来了巨大的便利和潜力。通过本篇文章,读者应该能够了解如何使用京东商品API接口,并通过示例代码学习如何实际调用API获取商品数据。 随着技术的不断发展,京东商品API接口将继续为电商自动化、数据分析和市场研究提供支持,帮助商家和开发者在竞争激烈的市场中保持领先。我们鼓励读者继续探索和学习,充分利用京东商品API接口带来的机遇。
|
11月前
|
小程序 PHP
微信公众号开发(六)微信支付(发红包、企业支付到零钱)需要证书请求示例
这里最主要的就是curlpost请求的时候需要带上证书。否则请求会失败。
125 0
|
11月前
|
数据可视化 机器人
使用RPA轻松实现淘宝评价自动回复
八爪鱼RPA是一款经验丰富的自动化流程处理软件,它可以模拟人在电脑上的操作,按照预设的规则自动执行任务。对于淘宝评价自动回复的场景,可以帮助卖家自动获取评价信息,并根据预设的关键词进行智能化回复。
|
API PHP
漏刻有时API接口实战开发系列(9):短信宝短信接口php开发及调用
漏刻有时API接口实战开发系列(9):短信宝短信接口php开发及调用
82 0
|
移动开发 Android开发
实战:第七章:微信H5支付时用户有微信分身停留5秒后未选择哪个微信分身,也未支付就被动回调到商户支付是否完成的页面...
实战:第七章:微信H5支付时用户有微信分身停留5秒后未选择哪个微信分身,也未支付就被动回调到商户支付是否完成的页面...
146 0
|
消息中间件
技术汇总:第十四章:电脑端生成支付宝二维码支付
技术汇总:第十四章:电脑端生成支付宝二维码支付
140 0
手机网站支付接口报错“业务解析异常(ALIN10003)”自查方案
错误原因   这个报错一般是出现最老版本的手机网站支付的接口中的,一般是由于域名没有更新导致的(该接口的域名现在更新为了[url]https://mclient.alipay.com/service/rest.
2029 11