首先:需要先判断环境,如果不是微信环境下就切换成H5浏览器环境下支付。
前提配置:公众号要设置好支付域名,网页授权域名,企业账号,商户号,开通jsapi支付权限。

H5通过调用微信提供的JSbridge(WeixinJSBridge.invoke())来唤起微信支付控件。
JSBridge,一个js桥帮助H5和Native之间的通信,因为js是运行在一个js容器里,与原生运行环境隔离,所以需要这种机制来实现这两个的双向通信。
第一步:我这边是要通过微信code发送请求给后端获取唤起微信弹窗参数。

引导微信用户授权获取code(访问特定的微信链接获取):

https://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号APPID&redirect_uri=授权后重定向回调的链接地址&response_type=code&scope=应用授权作用域&state=STATE#wechat_redirect

Tips:回调链接地址需要urlencode转码处理 如 let url=urlencode(window.location.href)
授权后的code是拼接在回调地址上的 参数也是code

 getQuery(name) {var result = window.location.search.match(new RegExp('[\\?\\&]' + name + '=([^\\&]+)', 'i'))if (result === null || result.length < 1) {return false}return result[1]}
getQuery('code')

发起请求:

发起请求 axios({method:'get',url:'/GW/URL',params:{产品Id,用户手机号,订购类型,微信code,交易流水号
},
}).then(res=>{
res.微信弹窗参数
})

第二步:获取到微信支付弹窗的参数:如appId,时间戳,随机窜,微信签名方式,微信签名。判断环境

   // 支付只能在微信内置浏览器才有效果,在其他浏览器里面是无效的,进行判断if (typeof WeixinJSBridge == "undefined") {console.log("请在微信客户端打开");if (document.addEventListener) {document.addEventListener("WeixinJSBridgeReady",this.onBridgeReady(微信弹窗参数),false);} else if (document.attachEvent) {document.attachEvent("WeixinJSBridgeReady",this.onBridgeReady(微信弹窗参数));document.attachEvent("onWeixinJSBridgeReady",this.onBridgeReady(微信弹窗参数));}} else {this.onBridgeReady(微信弹窗参数);}

第三步:唤起支付弹窗

    onBridgeReady(微信弹窗参数) {let that = this;WeixinJSBridge.invoke("getBrandWCPayRequest",{appId: 微信弹窗参数.weixinAppId, //公众号ID,由商户传入timeStamp: 微信弹窗参数.weixinTimestamp, //时间戳,自1970年以来的秒数nonceStr: 微信弹窗参数.weixinNonceStr, //随机串package: 微信弹窗参数.weixinPackage,signType: 微信弹窗参数.weixinSignType, //微信签名方式:paySign: 微信弹窗参数.weixinSign //微信签名},function(res) {if (res.err_msg == "get_brand_wcpay_request:ok") {// 使用以上方式判断前端返回,微信团队郑重提示://res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。that.$alertMsg("支付成功");} else {that.$alertMsg("支付取消");}});}

微信jsapi支付详解相关推荐

  1. 微信统一支付详解,坑太多,不得不写

    最近开发app支付,支付宝按照开发文档很快搞定,本想微信支付开发也一样的容易,结果我错了,一路踩坑不断,到最后终于完成,耗了不少时间和精力,所以想写一篇关于微信统一支付的开发过程,希望大家能少走弯路 ...

  2. app接入微信第三方支付详解以及坑

    上一篇文章我们介绍了支付宝的接入,这一篇我们正式介绍一下app怎么接入微信支付功能 正文 微信sdk下载 微信支付文档 微信签名工具app 首先我们微信和支付宝一样,都需要导入相应的sdk 微信sdk ...

  3. Java=微信支付详解与日志记录详解

    一.二维码: (1)什么是二维码 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示 ...

  4. 对接微信支付之网页支付详解

    对接微信支付之网页支付详解 声明:转载请注明出处 阅读对象:本文针对的是网页中的扫码支付 温馨提示:微信支付坑比较多,阅读时请仔细一些,不要放过所有需要注意的内容 , 本人一路踩坑过来,希望大家引以为 ...

  5. 微信支付 php详解,微信支付之公众号支付详解

    本文主要和大家分享微信支付之公众号支付详解,随着微信支付的流行,大多产品都开发了自己的公众号.小程序等,产品的营销需要支付的支撑,最近做了个微信公号号支付,采坑无数,今天给大家分享一下,希望能帮助到大 ...

  6. 字节跳动小程序支付详解

    微信支付详解 1.为什么要写这篇文章 参考了字节跳动官方的文档之后发现写的太简单,完全一头雾水摸不清头脑,后来在百度了别人的实现方案,才得以总结出来. 2.背景 我司要开发一个头条小程序,需要支持支付 ...

  7. php微信jsapi支付小结,ThinkPHP接入微信支付 - JSAPI支付

    一.支付准备 二.获取用户openid 首先,到微信公众平台后台 - 设置 - 网页授权域名(别忘了添加开发者) // 在头部引入WechatPubService.php文件,见附录一 use app ...

  8. 微信JSAPI支付 跟 所遇到的那些坑

    首先介绍一下我在调用微信支付接口使用的是 weixin.senparc SDK,非常方便好用开源的一个微信开发SDK. weixin.senparc SDK 官网:http://weixin.senp ...

  9. 微信JSApi支付~订单号和微信交易号

    返回目录 谈谈transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵. 每个第三方在线支付系统中都会有至少两类订单号,其一为支 ...

最新文章

  1. TVM darknet yolov3算子优化与量化代码的配置方法
  2. 案例:用JS实现放大镜特效
  3. 大数据引擎启动时常见错误汇总
  4. java,阳历转阴历
  5. qt的exe启动时隐藏图标_系统小技巧:Win10桌面图标问题多 常见3种这么解
  6. 【转】C 编译器优化过程中的 Bug
  7. Python基础教程:列表解析
  8. python 字符串交集_Python序列--集合(set)
  9. 读Java并发编程实践记录_原子性_锁_同步容器详解_任务执行
  10. C++ 之编程语法习惯之 do{...}while(0) 的用处
  11. Android 屏幕适配攻略(六)设置通知样图标与启动图标适配
  12. 黑科技!颠覆者!区块链,再不关注就晚了
  13. Linux shell 中的那些你值得一试的小把戏
  14. Windows was unable to connect to wifi 电脑windows连不上路由器但是连得上手机wifi?
  15. 安卓逆向之某瓜数据app签名sign破解
  16. vm虚拟机安装win7出现 Error loading image cdmenu.ezb
  17. 平安夜关于苹果的题目——1705. 吃苹果的最大数目
  18. Guitar Pro8吉他打谱下载自学制作教程
  19. mysql中insert into语句
  20. ubuntu 麦克风录音_如何在Ubuntu中测试麦克风

热门文章

  1. java手机号判断运营商_根据手机号 判断省份和运营商
  2. win10美化成macos
  3. 笔记本电脑usb供电不足的解决方法
  4. 用python做一个学生管理系统
  5. 怎样彻底删除掉sqlserver
  6. 中国四扁平无引线(QFN)封装行业市场供需与战略研究报告
  7. java数据结构-链表详解
  8. CList的用法理解
  9. GB8410和FMVSS302测试方法和要求是否相同
  10. 互联网产品设计进阶(10)关注项目的赢利模式