tp3.2中微信支付

xiaoxiao2021-02-28  84

第一步将类包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));

 case 'get_brand_wcpay_request:cancel': $("#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;}}}}

转载请注明原文地址: https://www.6miu.com/read-57407.html

最新回复(0)