文章:php接入微信支付,扫码支付和H5支付(非微信浏览器),基于thinkPHP框架 WeChatDeveloper支付类包 踩坑指南

文章:php快速接入支付宝即时支付,PC网站支付和手机网站支付,基于thinkPHP框架 WeChatDeveloper支付类包


在使用前可以先看上面的微信扫码支付和H5支付的文章,本文主要介绍微信JSAPI支付,在微信内拉起支付;

开发注意事项:

1、在开发前请先确认回调的域名是否加入了JS安全域名,IP白名单,微信公众平台和微信支付平台都要加,并且开通了对应的产品;

2、复制以下代码前必须安装WeChatDeveloper类,下面都是基于这个类写的,如果不安装不用在往下看了;

3、在使用下面的类之前需要先获取到用户的code,下文会具体说明;

4、下面代码部分已经用xxx代码,需要替换成自己业务对应的才可以;


在使用JSAPI支付时,openid为必填项,在对非微信端网站使用该支付时,需要先获取到用户的openid;

网页授权流程分为四步:

1、引导用户进入授权页面同意授权,获取code

2、通过code换取网页授权access_token(与基础支持中的access_token不同)

3、如果需要,开发者可以刷新网页授权access_token,避免过期【我们不需要】

4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)【我们也不需要】

首先我们让用户访问下面这个网址获取到用户的code,APPID换成自己的,回调网址就是我们下面这个wxJsApi方法,STATE是非必填的 填不填都可以;

https://open.weixin.qq.com/connect/oauth2/authorize?appid=【APPID】&redirect_uri=【跳转的网址】&response_type=code&scope=snsapi_base&state=【非必填参数】#wechat_redirect

当用户访问了上面这个网址并且会跳转到下面这个wxJsApi方法中,在参数中就会携带用户的code,这个时候我们的getOauthAccessToken就会自动获取用户的信息,里面就包含了openid;具体内容见下文代码:

    /*** 微信JSAPI支付*/public function wxJsApi(){// 准备配置参数$config = ['appid'      => 'wx1238598xxxxxxxxe','appsecret'  => '5d6fg5r8g4xxxxxxxxxxxxxx56564hg5','mch_id'     => '160xxxxx24','mch_key'    => 'NAMECeShi202120xxxxxxxxxxxx21816',];try {// 实例接口$openid = new \WeChat\Oauth($config);// 获取用户的openid$open_id = $openid->getOauthAccessToken();// 创建接口实例$wechat = new \WeChat\Pay($config);// 组装参数,可以参考官方商户文档$options = ['body'             => '订单名称','out_trade_no'     => time(), //订单号'total_fee'        => 1*100, //金额,单位分'notify_url'       => 'http://baidu.com/tongzhi', //异步通知地址'spbill_create_ip' => $_SERVER["REMOTE_ADDR"],'trade_type'       => 'JSAPI','openid'           => $open_id['openid']];$result = $wechat->createOrder($options);$jsapi = $wechat->createParamsForJsApi($result['prepay_id']);// 渲染到前端进行拉起$this->assign('jsapi',$jsapi);return $this->fetch();} catch (\WeChat\Exceptions\InvalidResponseException $e) {echo $e->getMessage() . PHP_EOL;}}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>微信订单支付</title>
</head>
<body><script>function onBridgeReady(){WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId":"{$jsapi['appId']}",     //公众号名称,由商户传入"timeStamp":"{$jsapi['timeStamp']}",         //时间戳,自1970年以来的秒数"nonceStr":"{$jsapi['nonceStr']}", //随机串"package":"{$jsapi['package']}","signType":"{$jsapi['signType']}",         //微信签名方式:"paySign":"{$jsapi['paySign']}" //微信签名},function(res){if(res.err_msg == "get_brand_wcpay_request:ok" ){// 使用以上方式判断前端返回,微信团队郑重提示:// res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。location.href="http://www.baidu.com/ok";}});}// 页面加载自动触发window.onload=function(){if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', onBridgeReady);document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}}else{onBridgeReady();}}
</script>
</body>
</html>

php接入微信JSAPI支付,微信内拉起支付,基于thinkPHP框架 WeChatDeveloper支付类包相关推荐

  1. php接入微信支付,扫码支付和H5支付(非微信浏览器),基于thinkPHP框架 WeChatDeveloper支付类包 踩坑指南

    此文章入选<PHP领域内容榜>第4名 文章介绍 本文主要介绍通过thinkPHP5和第三方支付类包(WeChatDeveloper)实现快速接入微信扫码支付和微信H5手机网站支付(非微信浏 ...

  2. php表白墙源码 怎么用,基于ThinkPHP框架开发的微信表白墙PHP源码

    源码介绍 微信表白墙PHP源码是基于ThinkPHP框架编写的,全站使用ajax无刷新请求和提交数据,使用非常流畅,用户体验很高. 本程序实现的功能是: 头像:头像使用了QQ头像取消了之前的随机显示头 ...

  3. php源码 拼车网顺风车_基于ThinkPHP框架开发的在线微信拼车系统完整PHP源码+支付微信支付...

    源码介绍 基于ThinkPHP框架开发的在线微信拼车系统主要是基于微信的在线拼车系统,也是一款不错的微信号管理系统,该微信拼车系统主要是基于ThinkPHP3.2.3框架开发,主要功能有发布租车信息. ...

  4. 微信会员php源码,基于ThinkPHP框架开发的在线微信拼车系统完整PHP源码-深蓝源码会员专享...

    源码介绍 基于ThinkPHP框架开发的在线微信拼车系统主要是/基于微信的在线拼车系统,也是/一款不错的微信号管理系统,该微信拼车系统主要是/基于ThinkPHP3.2.3框架开发,主要功能有发布租车 ...

  5. ThinkPHP php 仿千图网源码_PHP微信表白墙源码 基于ThinkPHP框架开发

    PHP微信表白墙源码是基于ThinkPHP框架编写的,全站使用ajax无刷新请求和提交数据,使用非常流畅,用户体验很高. 本程序实现的功能是: 头像:头像使用了QQ头像取消了之前的随机显示头像,新增了 ...

  6. 微信jsApI及微信分享对应在手机浏览器的调用总结。

    摘录自别人的博客: 第一篇:微信内置浏览器的JsAPI(WeixinJSBridge续) 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript ...

  7. 微信开放平台(第三方平台)代替微信公众号发送模板消息(基于lavarel框架开发,EasyWeChat)

    1.公众号必须得把模板消息授权到第三方平台. 2.我用的是 EasyWeChat 3.通过接口修改账号所属行业 (实质上就是开通模板消息) //修改账号所属行业public function set_ ...

  8. php tp 微信支付,PHP实现的微信APP支付功能示例【基于TP5框架】

    本文实例讲述了PHP实现的微信APP支付功能.分享给大家供大家参考,具体如下: 1.进行支付请求 他给的DEMO 用的时候有时候会报错 1)我遇到的情况 把  WxPay.Api.php这个文件的 p ...

  9. 微信支付php详解 php,ThinkPHP框架整合微信支付之刷卡模式图文详解

    本文实例讲述了ThinkPHP框架整合微信支付之刷卡模式.分享给大家供大家参考,具体如下: 大家好,这篇文章是继微信支付之Native 扫码支付 模式二之后的微信支付系列教程第四篇:微信刷卡支付 本教 ...

最新文章

  1. 控件的实际大小与呈现大小
  2. 美国中央情报局CIA正通过开发人工智能项目,收集与检索社交媒体情报
  3. DebugView调试C#程序 学习总结
  4. /proc/asound详细介绍
  5. gwt的mvp模式_GWT MVP变得简单
  6. 气象气候应用在Intel最新处理器Icelake上的性能测评
  7. VMware里Ubuntu-14.04-desktop的VMware Tools安装图文详解
  8. MVC3 Razor语法速查
  9. 计算机原理华东理工大学期末成绩查询,华东理工大学微机原理历年真题第十一章.ppt...
  10. 编程语言-初学者常见的几个问题
  11. File Finder pro Mac版重复文件查找器使用方法
  12. mysql日期为00_MySQL 8.0.13设置日期为0000-00-00 00:00:00时出现的问题解决
  13. 新世纪音乐——天籁之音
  14. 使用腾讯云OCR文字识别
  15. XCPC Team Trainning Round 1 (NCPC2018)
  16. 切割木板 (贪心)
  17. 罗杨美慧 20190919-6 四则运算试题生成,结对
  18. conflicting requests nothing provides libpq.so.5(RHPG_9.6)(64bit) needed **
  19. 留学地 各国比较2021
  20. 前端做微信好友分享_一篇搞定微信分享和line分享

热门文章

  1. LED 16*16点阵显示屏
  2. 5800X + RTX3070 装机 AN混搭
  3. java angular2集成_Angular2整合其他插件的方法
  4. Quidway Eudemon 系列防火墙增加IP访问
  5. 用GO实现的冒泡算法
  6. java判断键盘按键按下_在Java中检测并操作键盘方向键
  7. OAF页面上传、导入、发布
  8. 远程操控其它电脑--详细教程
  9. 又一款鼠标管理软件,十分强大
  10. PYNQ下的DMA传输实现及速度测试