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

}

tp3.2中微信支付相关推荐

  1. PHP 小程序中微信支付

    我们先看测试页面 如下是代码 <!--index.wxml--> <view class="container"><view class=" ...

  2. java微信支付异步通知_Java中微信支付退款异步通知解码

    微信所有的支付结果都是加密处理的,他和订单支付成功的异步通知不一样. 他的基本返回是: SUCCESS 我们需要对req_info解码才能看到退款的明文 解码后会得到明文: 解密步骤如下: (1)对加 ...

  3. MUI中微信支付必须用自有的 Android程序签名详解、打包、发布到Google play步骤

    1.什么是签名?       如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义.可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了 ...

  4. ThinkPHP中实现微信支付(jsapi支付)流程

    之前写过一篇文章讲了 PHP实现微信支付(jsapi支付)流程 ,详见文章: PHP实现微信支付(jsapi支付)流程. 当时的环境是没有使用框架的,直接在一个域名指向的目录下边新建目录之后访问该目录 ...

  5. php微信支付jsapi,ThinkPHP中实现微信支付(jsapi支付)流程

    之前写过一篇文章讲了 PHP实现微信支付(jsapi支付)流程 ,详见文章:PHP实现微信支付(jsapi支付)流程. 当时的环境是没有使用框架的,直接在一个域名指向的目录下边新建目录之后访问该目录实 ...

  6. 微信jsapi支付获取code_微信支付(公众号支付JSAPI)

    微信公众号支付/微信浏览器支付(JSAPI) 一:获取微信支付四大参数 步骤二:平台配置 配置支付目录:商户平台. 配置此目录是代码中"微信支付"所在页面的地址,一级域名需ICP备 ...

  7. bootstrap 单选按钮点击change事件 只触发一次_微信支付新增“确认”按钮,付错钱将成为历史?...

    阅读本文之前,麻烦您先点击上面蓝色字体"蓝色字体",再点"关注",这样您就可以继续"免费"收到文章了,每天都有分享,完全是"免费订 ...

  8. 滴滴出行回应导航崩了;微信支付正式上线「向手机号转账」功能;Guns 6.0 发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  9. android 支付选择按钮,微信支付新增“确认”按钮,更安全还是更麻烦?

    近日,安卓版微信悄悄更新了版本,在最新的V7.0.5版本中,微信支付的付款界面和步骤发生了变化. 据移动支付网了解,此次微信支付更新之后,个人转账过程中,会弹出微信自带的安全键盘,而且输入金额时会有相 ...

最新文章

  1. SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
  2. 观点 | 朱靖波:辅助翻译技术需「以人为本」
  3. 改计算机用户头像,Windows 8.1
  4. 9、创建索引(CREATE INDEX)
  5. html转excel有问题,html转excel
  6. 第一百三十五期:如何模拟一次阿里双11秒杀场景的实现?程序员必看
  7. 生活感悟——和尾号990的滴滴师傅的聊天
  8. Linux文件删除原理
  9. lnmp编译安装mysql_LNMP一键包不安装mysql | 厘米天空
  10. Extjs中renderer:function函数用法
  11. swift实现队列_Swift队列数据结构实现
  12. 如何从Windows中访问Linux硬盘,干货:如何从 Windows 系统访问 Linux 文件
  13. 软件工程 实践者的研究方法 中文题答案
  14. 关于双网卡同时连接内外网
  15. webapp(WebRoot)目录下的jsp访问不了webapp目录的css文件的问题解决
  16. jQuery插件使用
  17. 【实用】关于Ubuntu下的对拍程序
  18. 大众点评cat接入记录
  19. 到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?
  20. ffmpeg 实现音频aac编码

热门文章

  1. 单灶开孔尺寸是多少_燃气灶开孔尺寸是多少?
  2. makefile文件简介及简单使用
  3. 学计算机还有绘画基础,学电脑绘画应该从什么学起
  4. 2023年5月青少年软件编程(Python) 等级考试试卷(一级)
  5. ubuntu加了张固态_Ubuntu如何优化ssd?
  6. 【数据分析】UTM参数
  7. 录屏软件怎么选?你真的选对了吗?
  8. 什么是度量学习?度量学习如何实现?
  9. CSS3动画进阶:tranform与keyframes 组合动画
  10. EM算法之推荐系统(二)隐语义模型