由于网站使用的微信Native扫码支付,现在公众号需要接入功能,怎么办呢,看这官方文档,参考着demo进行写吧。直接进入正题

进入公众号(服务号)设置--->功能设置--->网页授权域名配置好需要进行支付的页面,支持配置根目录。这一步是为了获取用户的openid。

进入微信商户平台(pay.weixin.qq.com)设置JSAPI支付支付目录,设置路径:商户平台-->产品中心-->开发配置。配置好之后便可以开始着手进行开发,当你看到官方文档的业务流程当中的业务流程时序图的时候,我相信你是一脸懵逼,腾讯的什么都好,就开发文档容易让人给看晕,不过已经算方便了。

由于之前写得一个功能,在用户点击进入页面的时候已经获取用户的信息,并存入到session中,因此下面的代码中的openid直接从session获取。

接下来下载官方demo(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1),这里下载php,放到extend目录下,目录结构为

核心代码便是lib文件夹下的类库,example中有官方demo,可以直接进行改写。

文件已经引入,着手实现支付功能,在控制器写index方法

 public function index()
{ if (IS_POST) { include(ROOT_PATH.'extend/Wxpay/lib/WxPay.Api.php');
include(ROOT_PATH.'extend/Wxpay/example/WxPay.JsApiPay.php');
// include(ROOT_PATH.'extend/Wxpay/example/WxPay.config.php');
include(ROOT_PATH.'extend/Wxpay/example/log.php'); try{
$tools = new \JsApiPay();
$openId = session('openid');//这里是之前获取到的openid并存入session,直接从session获取,否则为以下两句 /*$tools = new JsApiPay();
$openId = $tools->GetOpenid();*/
//②、统一下单
$input = new \WxPayUnifiedOrder();
$input->SetBody("在线支付");
$input->SetAttach("在线支付");
$input->SetOut_trade_no($data["orderid"]);
$input->SetTotal_fee($data["pricetotal"]*100);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
//echo $http_type . $_SERVER['HTTP_HOST'];
$input->SetNotify_url($http_type . $_SERVER['HTTP_HOST']."/index.php/Payoff/Wxpay/notifyurl.html");//notify是接收异步通知的页面,可以进行业务逻辑处理
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$config = new \WxPayConfig();
$order = \WxPayApi::unifiedOrder($config, $input);
$jsApiParameters = $tools->GetJsApiParameters($order); //获取共享收货地址js函数参数
$editAddress = $tools->GetEditAddressParameters();
} catch(Exception $e) {
Log::ERROR(json_encode($e));
}
$this->assign('data', $data);
$this->assign('jsApi', $jsApiParameters);
$this->display();
}
else
{
E("Access Denied");
} }

在视图文件中根据自己需要,下面随便写的demo

<form id="thisform" action="#"  method="post">
订单号:{$data['orderid']}<input type="hidden" name="orderid" class="form-control" id="orderid" value="{$orderid}"><br><br>
金额:{$data['pricetotal']} 元<input type="hidden" name="money" class="form-control" id="goodprice" value="50"><br><br>
<div align="center">
<button style="width:210px; height:50px; border-radius: 15px;background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;" type="button" onclick="callpay()" >立即支付</button>
</div>
</form>
<script type="text/javascript">
//调用微信JS api 支付
function jsApiCall()
{ WeixinJSBridge.invoke(
'getBrandWCPayRequest',
{$jsApi},
function(res){
WeixinJSBridge.log(res.err_msg);
alert(res.err_code+res.err_desc+res.err_msg);
}
);
} 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();
}
}
</script>

这里直接用的是官方demo的JS,没有修改,可以根据获取的支付结果做相应的业务逻辑处理。至此便成功调起手机微信端支付,可以根据demo处理自己的业务逻辑。

在Thinkphp中微信公众号JsApi支付的更多相关文章

  1. 微信公众号JSAPI支付

    微信公众号JSAPI支付 一:配置参数 申请成功后,获取接口文件, 将所有文件放入项目根目录weixin下,在WxPay.ub.config.php中填入配置账户信息; 二:设置授权 开发者中心-&g ...

  2. 微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决

    一.背景 项目提供公众号商城集成,在公众号里进行商品的购买,并与多家公众号合作增加渠道流量. . 二.实现 有关微信公众号.商户号的开通与支付绑定不细说 从背景里可知,我们需要实现多个公众号购买向同一 ...

  3. java微信公众号JSAPI支付以及所遇到的坑

    上周做了个支付宝微信扫码支付,今天总结一下.微信相比支付宝要麻烦许多 由于涉及到代理商,没办法,让我写个详细的申请流程,懵逼啊. 笔记地址 http://note.youdao.com/notesha ...

  4. PHP应用如何对接微信公众号JSAPI支付

    微信支付的产品有很多,1. JSAPI支付  2. APP支付  3. Native支付  4.付款码支付  5. H5支付. 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需 ...

  5. 网站如何接入微信公众号JSAPI支付PHP版

    1.首先,我们要有一个微信公众号(分类类型有订阅号,服务号,企业号)我们的微信公众号一定是个服务号只有它才有微信支付接口.. 并且这个微信公众号一定要进行微信认证才能申请微信支付接口. 2.申请JSA ...

  6. 【weixi】微信支付---微信公众号JSAPI支付

    一.JSAPI支付 JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付.应用场景有: ◆ 用户在微信公众账号内进入商家公众号,打 ...

  7. 项目中微信公众号调取支付控件demo

    微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6 前端代码demo (JSP页面): ...

  8. PHP微信公众号JSAPI网页支付(下)

    上一篇PHP微信公众号JSAPI网页支付(上)中讲到了公众号平台的相关设置以及支付的大致流程. 这一篇重点讲支付后,异步接受回调通知,以及处理后同步通知微信服务器. 首先梳理下整个jsapi支付的流程 ...

  9. PHP微信公众号JSAPI网页支付(上)

    一.使用场景以及说明 使用场景:商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 说明:1.用户打开图文消息或者扫描二维码,在微信内置浏览器打开网 ...

随机推荐

  1. Sublimeの虚拟环境(Venv)设置

    这里主要介绍,在使用 Python 虚拟环境(Venv)时,SublimeText 该怎么设置 为什么使用虚拟环境(Venv) 因为,我有洁癖! 我就是喜欢看到,pip list 命令下什么 Pack ...

  2. Docker搭建MySQL主从复制

    Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...

  3. Codeforces 1332F - Independent Set(树dp)

    题目链接 题意 给出一棵 n 个点的树, 求它的所有非空诱导子图的独立集种类数之和, 对 998244353 取模. n ≤ 3e5. 题解 不妨假设在独立集中的点被染色成 1, 其余不染色; 由于不 ...

  4. 深入理解Java虚拟机(第三版)-14. 线程安全与锁优化

    14. 线程安全与锁优化 1. 什么是线程安全? 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替进行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个 ...

  5. C - Monkey and Banana

    文章目录 题意如下 思路如下 题解如下: A group of researchers are designing an experiment to test the IQ of a monkey. ...

  6. kali2016&2019的安装使用

    先解释一下,为什么要说2016&2019哪,这是因为有一些测试靶机环境在2016以上的系统安装不通过,所以有时候会特意找2016的镜像来用. 一.下载镜像 1.下载镜像当然要到官方去下载了: ...

  7. django生成验证码

    django生成验证码 # 制作验证码 def verify_code(): # 1,定义变量,用于画面的背景色.宽.高 # random.randrange(20, 100)意思是在20到100之间 ...

  8. Linux系统安装Dos系统(虚拟机里装)

    结合以下两篇优秀的文章就能完成任务. 1.https://www.jb51.net/os/609411.html 2.http://blog.51cto.com/6241809/1687361 所需要 ...

  9. iOS岗位招聘标准水涨船高,五年iOS程序员表示面试太难了

    人才济济的iOS开发者,你凭什么脱颖而出? 与岗位要求相去甚远,如何挑战极限? 想去心怡公司,如何马到成功? 那么,你的绝招是什么呢? 在这个iOS岗位供不应求的市场,对iOS开发者对要求日益增长,面 ...

  10. Struts2-学习笔记系列(5)-配置action

    配置包命名空间 实现了action就需要在struts中配置action.首先配置包属性: 需要注意的是:在框架进行包匹配的时候,按文档的从上到下的顺序进行匹配   <!--下面配置名为book ...