PHP开发微信支付功能
2018-01-19 16:48
253 查看
因工作需要,公司有一个项目要使用到微信扫码付款功能
01.登录微信公众号,下载DEMO程序
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1
![](http://i2.51cto.com/images/blog/201801/19/599c23a63df44c847df51db689f95e58.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
02.打开demo的
![](http://i2.51cto.com/images/blog/201801/19/d98ce52515255a3f6a5cbb4d0f82aac9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
03.修改配置文件
![](http://i2.51cto.com/images/blog/201801/19/078f2a0a894a25f57bf74ff6133807d4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
每一个公众号后台有这四个相关配置参数
![](http://i2.51cto.com/images/blog/201801/19/fec4d0ec91a52c2990f4569eba30959b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
04.修改扫码支付连接
![](http://i2.51cto.com/images/blog/201801/19/bca780520e4c77da69f0c2a75711b849.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
05.打开扫码连接,会发现写某讯API部门的这群杂毛写的代码有问题的,需要修改....
![](http://i2.51cto.com/images/blog/201801/19/e8d93a1b5fff5702755f6327cbb810d6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
打开这个API程序
F:\wamp\www\www.wxpay.cn\lib\WxPay.Api.php (自己项目下的)
找到538行代码来修改一下
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验
![](http://i2.51cto.com/images/blog/201801/19/717dc7fb69ff0507464029ac209ac631.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
刷新刚刚的连接....
![](http://i2.51cto.com/images/blog/201801/19/b39dfff8f1bde7104354050f8f884243.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
到这里就基本完成,我们在开发 支付成功之后,回调,并提示用户付款成功
native.php代码
在 http://www.wxpay.cn:8080/example/native.php 二维码付款php页面写一个js定时器,每隔多少秒 使用微信支付自带的API进行查询订单是否已付款
二维码支付页面代码
查询订单是否支付页面 orderquery.php
支付成功跳转的页面 在这上面可以写一些代码逻辑 修改订单为支付状态,提醒类似的..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>微信支付成功</title>
</head>
<body>
<br /><br /><br /><br /><br /><br /><br />
<h1>微信支付成功</h1>
</body>
</html>
OK 微信支付基本开发完成 我的QQ 771541213
01.登录微信公众号,下载DEMO程序
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1
![](http://i2.51cto.com/images/blog/201801/19/599c23a63df44c847df51db689f95e58.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
02.打开demo的
![](http://i2.51cto.com/images/blog/201801/19/d98ce52515255a3f6a5cbb4d0f82aac9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
03.修改配置文件
![](http://i2.51cto.com/images/blog/201801/19/078f2a0a894a25f57bf74ff6133807d4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
每一个公众号后台有这四个相关配置参数
![](http://i2.51cto.com/images/blog/201801/19/fec4d0ec91a52c2990f4569eba30959b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
04.修改扫码支付连接
![](http://i2.51cto.com/images/blog/201801/19/bca780520e4c77da69f0c2a75711b849.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
05.打开扫码连接,会发现写某讯API部门的这群杂毛写的代码有问题的,需要修改....
![](http://i2.51cto.com/images/blog/201801/19/e8d93a1b5fff5702755f6327cbb810d6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
打开这个API程序
F:\wamp\www\www.wxpay.cn\lib\WxPay.Api.php (自己项目下的)
找到538行代码来修改一下
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验
![](http://i2.51cto.com/images/blog/201801/19/717dc7fb69ff0507464029ac209ac631.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
刷新刚刚的连接....
![](http://i2.51cto.com/images/blog/201801/19/b39dfff8f1bde7104354050f8f884243.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
到这里就基本完成,我们在开发 支付成功之后,回调,并提示用户付款成功
native.php代码
<?php ini_set('date.timezone','Asia/Shanghai'); //error_reporting(E_ERROR); require_once "../lib/WxPay.Api.php"; require_once "WxPay.NativePay.php"; //模式一 /** * 流程: * 1、组装包含支付信息的url,生成二维码 * 2、用户扫描二维码,进行支付 * 3、确定支付之后,微信服务器会回调预先配置的回调地址,在【微信开放平台-微信支付-支付配置】中进行配置 * 4、在接到回调通知之后,用户进行统一下单支付,并返回支付信息以完成支付(见:native_notify.php) * 5、支付完成之后,微信服务器会通知支付成功 * 6、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php) */ $notify = new NativePay(); $url1 = $notify->GetPrePayUrl("123456789"); //模式二 /** * 流程: * 1、调用统一下单,取得code_url,生成二维码 * 2、用户扫描二维码,进行支付 * 3、支付完成之后,微信服务器会通知支付成功 * 4、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php) */ $input = new WxPayUnifiedOrder(); $input->SetBody("测试购买标题"); $input->SetAttach("测试提示数据"); //生成一个数据,存储在二维码当中,当我们去查询订单状态,就用 $num这个变量即可 $num=WxPayConfig::MCHID.date("YmdHis"); $input->SetOut_trade_no($num); //设置支付1块块钱,微信金额是以分为单位 100分=1块钱 $input->SetTotal_fee("100"); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag("test"); $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php"); $input->SetTrade_type("NATIVE"); $input->SetProduct_id("123456789"); $result = $notify->GetPayUrl($input); $url2 = $result["code_url"]; ?>
在 http://www.wxpay.cn:8080/example/native.php 二维码付款php页面写一个js定时器,每隔多少秒 使用微信支付自带的API进行查询订单是否已付款
二维码支付页面代码
<?php ini_set('date.timezone','Asia/Shanghai'); //error_reporting(E_ERROR); require_once "../lib/WxPay.Api.php"; require_once "WxPay.NativePay.php"; //模式一 /** * 流程: * 1、组装包含支付信息的url,生成二维码 * 2、用户扫描二维码,进行支付 * 3、确定支付之后,微信服务器会回调预先配置的回调地址,在【微信开放平台-微信支付-支付配置】中进行配置 * 4、在接到回调通知之后,用户进行统一下单支付,并返回支付信息以完成支付(见:native_notify.php) * 5、支付完成之后,微信服务器会通知支付成功 * 6、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php) */ $notify = new NativePay(); $url1 = $notify->GetPrePayUrl("123456789"); //模式二 /** * 流程: * 1、调用统一下单,取得code_url,生成二维码 * 2、用户扫描二维码,进行支付 * 3、支付完成之后,微信服务器会通知支付成功 * 4、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php) */ $input = new WxPayUnifiedOrder(); $input->SetBody("测试购买标题"); $input->SetAttach("测试提示数据"); //生成一个数据,存储在二维码当中,当我们去查询订单状态,就用 $num这个变量即可 $num=WxPayConfig::MCHID.date("YmdHis"); $input->SetOut_trade_no($num); //设置支付1块块钱,微信金额是以分为单位 $input->SetTotal_fee("1"); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag("test"); $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php"); $input->SetTrade_type("NATIVE"); $input->SetProduct_id("123456789"); $result = $notify->GetPayUrl($input); $url2 = $result["code_url"]; ?> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>微信支付样例-退款</title> <!-- 引入jquery --> <script type="text/javascript" src="/jquery-1.7.2.min.js"></script> </head> <body> <div style="width: 250px; margin: 0 auto; margin-top: 200px;"> <div style="margin-left: 10px;color:#556B2F;font-size:30px;font-weight: bolder;">扫描支付模式二</div><br/> <img alt="模式二扫码支付" src="http://paysdk.weixin.qq.com/example/qrcode.php?data=<?php echo urlencode($url2);?>" style="width:150px;height:150px;"/> </div> <script type="text/javascript"> //定时器 var timer=null; //查询当前是否已支付 通过 $num这个变量进行查询 function getStatus() { var num="<?php echo $num;?>";// 查询二维码是否支付的凭证 在上面PHP生成的 $.ajax({ "url":"orderquery.php", "type":"post", "dataType":"text", "data":{"out_trade_no":num}, success:function(data) { //如果返回的字符是SUCCESS 说明支付成功 否则就是未支付 if(data == "SUCCESS") { //清除定时器 clearInterval(timer); //跳转到支付成功页面 location.href="success.php"; } } }); } //当DOM节点加完毕,执行以下代码 $(function(){ timer = setInterval(function(){getStatus()},2000); }); </script> </body> </html>
查询订单是否支付页面 orderquery.php
<?php //引入微信支付配置文件 ini_set('date.timezone','Asia/Shanghai'); error_reporting(E_ERROR); require_once "../lib/WxPay.Api.php"; require_once 'log.php'; //初始化日志 $logHandler= new CLogFileHandler("./logs/".date('Y-m-d').'.log'); $log = Log::Init($logHandler, 15); function printf_info($data) { foreach($data as $key=>$value){ echo "<font color='#f00;'>$key</font> : $value <br/>"; } } if(isset($_REQUEST["transaction_id"]) && $_REQUEST["transaction_id"] != ""){ $transaction_id = $_REQUEST["transaction_id"]; $input = new WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); //printf_info(WxPayApi::orderQuery($input)); $result=WxPayApi::orderQuery($input); echo $result['trade_state']; exit(); } if(isset($_REQUEST["out_trade_no"]) && $_REQUEST["out_trade_no"] != ""){ $out_trade_no = $_REQUEST["out_trade_no"]; $input = new WxPayOrderQuery(); $input->SetOut_trade_no($out_trade_no); //printf_info(WxPayApi::orderQuery($input)); $result=WxPayApi::orderQuery($input); echo $result['trade_state']; exit(); } exit(); ?>
支付成功跳转的页面 在这上面可以写一些代码逻辑 修改订单为支付状态,提醒类似的..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>微信支付成功</title>
</head>
<body>
<br /><br /><br /><br /><br /><br /><br />
<h1>微信支付成功</h1>
</body>
</html>
OK 微信支付基本开发完成 我的QQ 771541213
相关文章推荐
- PHP实现微信支付功能开发+实例代码
- PHP开发APP端微信支付功能
- 微信公众号开发教程[020]-wxsdk4php:微信公众号和微信支付开发的所有API功能点的封装及调用实例
- PHP实现微信支付功能开发+实例代码
- 微信支付WxpayAPI_php_v3(二)支付功能开发
- PHP开发-CSS实现Tab选项卡功能(附效果图)
- 我的模板分析引擎类PHP的.net开发方法--功能介绍篇
- 我的模板分析引擎类PHP的.net开发方法--功能实现篇
- 8 个必备的PHP功能开发
- 微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE平台(四)自习功能
- PHP开发微信支付代码及支付通知处理
- php微信支付接口开发程序
- 微信公众号开发,微信支付功能开发(网页JSAPI调用)
- 8 个必备的PHP功能开发
- PHP扩展开发之实现 require PHP文件功能
- 8 个必备的PHP功能开发
- PHP微信支付开发实例
- 8 个必备的PHP功能开发
- 手机验证码平台,怎么发送手机验证码,php开发手机验证码短信接口功能
- 微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE平台(五)琴院Siri功能