微信支付官方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 }