微信小程序Ⅰ [关于微信支付的一点思路]
背景
- 首先,小程序端的微信支付功能我还没有做,但是之前做过网页版已经微信端唤醒方式的微信支付
- 因为还需要申请新的域名,过几天才能正式测试,此处是在参考小程序官方文档后的思路
因此文可自成一体,所以被我摘出来了,全文可参考小白的 微信小程序实例——天气预报开发笔记
摸索思考
①. 参考demo获取思路
- 根据官方
Demo
中对此功能的一条重要注释如下:
// 此处需要先调用 wx.login 方法获取 code,然后在服务端调用微信接口使用 code 换取 下单用户的 openId
// 具体文档参考 https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html?t=20161230#wxloginobject
②. 服务端要创建接口返回用户openId
- 服务端代码是 java 的建议参考文章:微信小程序调用微信登陆获取openid及用户信息 java做为服务端
根据网上多数编码同行的介绍可知,微信的域名是无法绑定到自己的小程序中的,但是根据前面的经验,可以在自己的服务端借用参数
code
获取openId
,最后以json
数据方式返回小程序即可
③. 请求微信支付Url
- 假设服务端已经能够正确返回我们所需要的
openId
,此时我们可以考虑唤醒微信支付了,然而根据接口要求需要以下的多个参数:
wx.requestPayment({'timeStamp': '','nonceStr': '','package': '','signType': 'MD5','paySign': '','success':function(res){},'fail':function(res){}
})
- 所以在唤醒微信支付之前,需要先获取上述的参数,而根据之前实现微信支付的经验正好是返回这些信息的
如此一来的思路就是,在服务端还需有一个支付接口,可返回我们需要的上述参数
- 想了解更多信息,可以查看 微信支付接口文档
- 或者参考我之前的一篇文章:微信公众平台开发[4] —— ThinkPHP 框架下微信支付
核心代码参考
- 此代码是参考官方demo和自己的思路后补充完善的小程序端代码
- 注意看注释,需要获取相应数据
requestPayment: function () {var self = thisself.setData({loading: true})// 此处需要先调用wx.login方法获取code,然后在服务端调用微信接口使用code换取 下单用户 的openId// 具体文档参考 https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html?t=20161230#wxloginobjectwx.login({success: function (res) {if (res.code) {//发起网络请求console.log('code:' + res.code)wx.request({url: 'https://api.youself.com/getOpenId', //此处应在服务端根据得到的 code 获取用户的 openiddata: {code: res.code},success: function (res) {console.log('拉取openid成功', res)self.setData({openid: 'o0rJUwexa08tg4pyFi1tkvJKhxHY' //此处假设已经获得了用户的openID})//访问服务端 微信支付接口paymentUrl,从而获取后面所需的重要参数wx.request({url: 'https://api.yourself.com/wxpayment', //此处为举例接口data: {openid},method: 'GET',success: function (res) {var timestamp = Date.parse(new Date());timestamp = timestamp / 1000; var payargs = res.data.payargs//唤醒微信支付wx.requestPayment({timeStamp: timestamp+'',nonceStr: 'payargs.nonceStr',package: 'payargs.package',signType: 'MD5',paySign: 'payargs.paySign','success': function (res) {console.log('支付-success')},'fail': function (res) {wx.showToast({title: '支付测试中...',icon: 'fail',image: '',duration: 2000,mask: true,success: function (res) { },fail: function (res) { },complete: function (res) { },})console.log('支付-fail')}})self.setData({loading: false})}})},fail: function (res) {console.log('拉取用户openid失败,将无法正常使用开放接口等服务', res)self.setData({loading: false})}})} else {console.log('获取用户登录态失败!' + res.errMsg)}}});}
附录
①. 注意
- 我们所要访问的服务端接口,要保证其域名已经绑定,注意一点,要求协议为 https
②. 后期再做补充
微信小程序Ⅰ [关于微信支付的一点思路]相关推荐
- 微信小程序 openid及支付的若干问题解决方案
微信小程序 openid及支付的若干问题解决方案 参考文章: (1)微信小程序 openid及支付的若干问题解决方案 (2)https://www.cnblogs.com/jhlqab/p/78500 ...
- 微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口
微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口 链接: 点击进入
- 微信小程序如何开通支付功能?
微信小程序商城支付方式有哪些,如何开通小程序商城的支付功能,商家开通小程序支付功能的条件有哪些,小程序支付和微商城支付有冲突吗,小程序商城支付方式下商家如何提现,手续费多少? 微信小程序商城支付方式 ...
- 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付
文章目录 SpringBoot 集成 wxJava 微信小程序:订单支付 1.整合 wxJava 小程序 2.支付配置类 3.application.yml 配置 4.授权登录流程 5.uniapp ...
- springboot 微信小程序 对接微信支付功能(完整版)
微信小程序对接微信支付功能 业务流程时序图 JAVA版 1. 项目架构 2. pom.xml配置文件 3. 小程序账号参数配置类 4.JAVA 通用代码 4.1 工具类 4.1.1 IdGen (id ...
- 微信小程序接入微信支付(二):后台调用统一下单接口
微信统一支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1 因该接口需要商户系统中自己的订单编号,笔者先 ...
- 老板提了个需求:微信小程序调用支付宝支付!然后群里炸锅了
大前天,我们头戴菊花手拿红包的小编同学在社群里发出了灵魂提问: (声明一下:小编同学只是在我这里兼职运营社群,人家正经工作还是产品狗.所以这个老板不是我) 这个问题简单说,就是在微信小程序里调用支付宝 ...
- 微信小程序接入微信支付(三):小程序端调用支付接口
微信小程序调用支付接口官方文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5 在上一节中 ...
- 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程)
本篇记录说明 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程,详细内容可私信交流) (第一次写博客,写得不好的地方见谅,面向新手,大佬请无视,不喜勿喷 ...
最新文章
- python语法教程-Python语言的核心语法(1)(语法教程)(参考资料)
- 《深入理解Java虚拟机》读书笔记五
- linux c实现mypwd
- C++ Primer中文版(第4版 特别版)
- Oracle Merge into
- python从零开始学爬虫_从零开始学爬虫(爬取豆瓣),一看就会
- VS2013 + Qt 提示 There‘s no Qt version assigned to this project for platform Win32
- python 欧姆龙plc通信_二进制PLC通信校验和
- Android5.0系统 知识点总结(持续更新)
- windows 计算机 快捷键,Windows7计算器快捷键汇总
- B帧对视频清晰度/码率的影响
- Codeforces Round #467 (Div. 2) D. Sleepy Game
- 【python基础】英文大小写函数
- Windows文件夹中文名称英文路径
- iOS面试- 0x02 WebView
- 【数据库】Mysql索引究竟是什么?
- ORACLE中dual的详解及其故障恢复
- VUE+js高德地图2.0API两幅地图联动同步缩放
- 归并排序---天下大事,合久必分,分久必合
- 17系统升级(辉煌普及版)