本文主要是介绍tp3.2中微信支付,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一步将类包WxPayPubHelper放入根目录ThinkPHP/Library/Vendor下
第二步配置里面的WxPay.pub.config.php文件关于微信支付相关信息APPID MCHID KEY APPSECRET(KEY 这个如果不知道可以去微信支付商户平台按照规则去重新设置);
第三步:登录微信公众号平台点击左侧菜单设置->公众号设置->功能设置将 业务域名 JS接口安全域名 网页授权域名设置为项目所在服务器域名.
第四步:点击左侧菜单微信支付中 开发配置配置公众号支付中支付授权目录 如:
- http://test.zebaiwang.cn/Weixin/Person/recharge/id/
第五步:当点击确认支付时所去的方法__APP__/Weixin/Person/recharge/id/{$user.id} recharge方法
第六步控制器中
上面引入:
use \Common\Libs\Weixin\WechatAuth;//JSSDK 需要用到accessToken
use \Common\Libs\Weixin\JSSDK;//JSSDK
use \Common\Libs\Weixin\ComPay;//红包与企业支付
recharge方法里代码
//接值
$ocode=$_POST['ordercode'];//商户订单号
$money=$_POST['money'];//总金额
//操作
$usermobile=$_SESSION['usermobile'];//当前登录者用户手机号
$user=M('user');
$userdata=$user->where(array('tellphone'=>$usermobile))->find();
$user_id=$userdata['id'];
$yue_before=$userdata['zbqianbao'];
$yue_after=$yue_before+$money;
//支付前生成预订单
$data=[
"user_id"=>$user_id,
"change"=>$money,
"ctype"=>2,
"cmethod"=>3,
"yue_before"=>$yue_before,
"yue_after"=>$yue_after,
"changetime"=>time(),
"ocode"=>$ocode,
"status"=>0,
];
$addlog=M('log')->add($data);
$fans=M('fans');
$fansdata=$fans->where(array('uid'=>$user_id))->find();
$openid=$fansdata['openid'];
/*微信支付*/
Vendor('WxPayPubHelper.WxPayPubHelper');
$jsApi = new \JsApi_pub();
//使用统一支付接口,获取prepay_id
$unifiedOrder = new \UnifiedOrder_pub();
//异步加载URL(异步数据操作)
$notify='http://test.zebaiwang.cn/Weixin/Notify/index';
$unifiedOrder->setParameter("openid",$openid); //商品描述
$unifiedOrder->setParameter("body",'泽百钱包充值'); //商品描述
$unifiedOrder->setParameter("out_trade_no",$ocode); //商户订单号
$unifiedOrder->setParameter("total_fee",$money* 100);//总金额
$unifiedOrder->setParameter("notify_url",$notify); //通知地址
$unifiedOrder->setParameter("trade_type","JSAPI"); //交易类型
$prepay_id = $unifiedOrder->getPrepayId();
$jsApi->setPrepayId($prepay_id);
$this->jsApiParameters = $jsApi->getParameters();
$this->display();
第七步:新建recharge.html页面,内容如下:
<!DOCTYPE HTML>
<html lang="zh-cn">
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<title>支付方式</title>
<link rel="stylesheet" type="text/css" href="__ROOT__/Application/Weixin/Public/bootstrap/css/bootstrap.css">
<script src="__ROOT__/Application/Weixin/Public/bootstrap/js/jquery.min.js"></script>
<script src="__ROOT__/Application/Weixin/Public/bootstrap/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="__ROOT__/Application/Weixin/Public/css/public.css">
</head>
<body style="background: #F1F1F1;">
</body>
</html>
<script src="__ROOT__/Application/Weixin/Public/bootstrap/js/jquery.min.js"></script>
<script type="text/javascript">
function jsApiCall(){
WeixinJSBridge.invoke('getBrandWCPayRequest',{$jsApiParameters},
function(res){
switch(res.err_msg){
//alert(JSON.stringify(res));
$("#btn_send").html('支付失败');
break;
case 'get_brand_wcpay_request:ok':
$("#btn_send").html('支付成功');
location.href="http://test.zebaiwang.cn/Weixin/Person/recharge";
break;
case 'get_brand_wcpay_request:fail':
$("#btn_send").html('支付失败');
break;
}
}
);
}
function callpay()//必须得调这个方法,不然安卓端只能支付成功一次
{
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
}else{
jsApiCall();
}
}
setTimeout(function(){callpay()},1000);
</script>
第八步:新建NotifyController.class.php控制器,进行数据库数据处理.
<?php
/* Sinda 微信综合异步返回类 */
// +----------------------------------------------------------------------+
// | PHP version 5.5 |
// +----------------------------------------------------------------------+
// | Copyright (c) 2013-2017 |
// +----------------------------------------------------------------------+
// | Authors: Original Author |
// +----------------------------------------------------------------------+
//
namespace Weixin\Controller;
use Think\Controller;
class NotifyController extends Controller {
/**
* 用户充值异步返回处理
* @param Wechat Server Post Data
*/
public function index(){
//订单异步状态处理
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$data=simplexml_load_string($xml);
$status=(string)$data->result_code;
if ($status=='SUCCESS') {
$order=(string)$data->out_trade_no;
if($order)
{
$res = M('log')->where("ocode = '$order'")->find();//查询刚刚充值的那条记录
$user_id=$res['user_id'];
$change=$res['change'];
$data=[
"status"=>1,
];
$upstatus=M('log')->where("ocode = '$order'")->save($data);//修改刚刚充值的那条记录状态
if($change>0){
$userdata=M('user')->where(array("id"=>$user_id))->find();//查询当前登陆者个人信息
$zbqianbao=$userdata['zbqianbao'];
$new_zbqianbao=$zbqianbao+$change;
$data=[
"zbqianbao"=>$new_zbqianbao,
];
$upzbqianbao=M('user')->where(array("id"=>$user_id))->save($data);//将当前登录者泽百钱包余额增加刚刚充值的金额
}
echo 'success';
exit;
}
}
}
}
这篇关于tp3.2中微信支付的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!