微信支付官方demo下载地址 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1

我修改后的demo http://download.csdn.net/detail/lhat_7/9821931

官方demo的目录结构如下:

微信扫码支付模式二【无法回调】解决方案

我在本地环境下使用微信支付官方demo过程中遇到的问题有:

问题1

微信扫码支付模式二【无法回调】解决方案

将 /lib/WxPay.Api.php 函数 postXmlCurl 中的两行代码

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验

改为

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);

 

问题2

访问  http://localhost/weixin/WxpayAPI_php_v3/example/native.php  时的错误提示

微信扫码支付模式二【无法回调】解决方案

根据错误提示知道:"未定义的索引" 错误出在  /exaple/native.php 的 42 行,

微信扫码支付模式二【无法回调】解决方案

显而易见,是变量 $result 中没有定义 code_url。打印变量 $result: echo "<pre>";print_r($result);exit(); 

Array
(
    [return_code] => FAIL
    [return_msg] => invalid spbill_create_ip
)

参数 spbill_create_ip 在  /lib/WxPay.Api.php  的53行

微信扫码支付模式二【无法回调】解决方案

打印出变量  $_SERVER['REMOTE_ADDR'] ,发现是  ::1 ,这明显是一个无效的ip地址

//获取请求地址

 1 //获取浏览器ip地址
 2 public static function real_ip()
 3 {
 4     static $realip;
 5 
 6     if ($realip !== NULL) {
 7         return $realip;
 8     }
 9 
10     if (isset($_SERVER)) {
11         if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
12             $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
13 
14             foreach ($arr as $ip) {
15                 $ip = trim($ip);
16 
17                 if ($ip != 'unknown') {
18                     $realip = $ip;
19                     break;
20                 }
21             }
22         }
23         else if (isset($_SERVER['HTTP_CLIENT_IP'])) {
24             $realip = $_SERVER['HTTP_CLIENT_IP'];
25         }
26         else if (isset($_SERVER['REMOTE_ADDR'])) {
27             $realip = $_SERVER['REMOTE_ADDR'];
28         }
29         else {
30             $realip = '0.0.0.0';
31         }
32     }
33     else if (getenv('HTTP_X_FORWARDED_FOR')) {
34         $realip = getenv('HTTP_X_FORWARDED_FOR');
35     }
36     else if (getenv('HTTP_CLIENT_IP')) {
37         $realip = getenv('HTTP_CLIENT_IP');
38     }
39     else {
40         $realip = getenv('REMOTE_ADDR');
41     }
42 
43     preg_match('/[\\d\\.]{7,15}/', $realip, $onlineip);
44     $realip = (!empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0');
45     return $realip;
46 }
View Code

相关文章:

  • 2021-12-19
  • 2021-08-13
  • 2021-10-15
  • 2021-07-25
  • 2021-09-18
  • 2021-06-15
猜你喜欢
  • 2022-12-23
  • 2021-12-09
  • 2022-12-23
  • 2021-10-22
  • 2022-12-23
  • 2021-12-09
  • 2021-10-28
相关资源
相似解决方案