背景

  • 首先,小程序端的微信支付功能我还没有做,但是之前做过网页版已经微信端唤醒方式的微信支付
  • 因为还需要申请新的域名,过几天才能正式测试,此处是在参考小程序官方文档后的思路

因此文可自成一体,所以被我摘出来了,全文可参考小白的 微信小程序实例——天气预报开发笔记

摸索思考

①. 参考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

②. 后期再做补充

微信小程序Ⅰ [关于微信支付的一点思路]相关推荐

  1. 微信小程序 openid及支付的若干问题解决方案

    微信小程序 openid及支付的若干问题解决方案 参考文章: (1)微信小程序 openid及支付的若干问题解决方案 (2)https://www.cnblogs.com/jhlqab/p/78500 ...

  2. 微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口

    微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口 链接: 点击进入

  3. 微信小程序如何开通支付功能?

    微信小程序商城支付方式有哪些,如何开通小程序商城的支付功能,商家开通小程序支付功能的条件有哪些,小程序支付和微商城支付有冲突吗,小程序商城支付方式下商家如何提现,手续费多少? 微信小程序商城支付方式 ...

  4. 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付

    文章目录 SpringBoot 集成 wxJava 微信小程序:订单支付 1.整合 wxJava 小程序 2.支付配置类 3.application.yml 配置 4.授权登录流程 5.uniapp ...

  5. springboot 微信小程序 对接微信支付功能(完整版)

    微信小程序对接微信支付功能 业务流程时序图 JAVA版 1. 项目架构 2. pom.xml配置文件 3. 小程序账号参数配置类 4.JAVA 通用代码 4.1 工具类 4.1.1 IdGen (id ...

  6. 微信小程序接入微信支付(二):后台调用统一下单接口

    微信统一支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1 因该接口需要商户系统中自己的订单编号,笔者先 ...

  7. 老板提了个需求:微信小程序调用支付宝支付!然后群里炸锅了

    大前天,我们头戴菊花手拿红包的小编同学在社群里发出了灵魂提问: (声明一下:小编同学只是在我这里兼职运营社群,人家正经工作还是产品狗.所以这个老板不是我) 这个问题简单说,就是在微信小程序里调用支付宝 ...

  8. 微信小程序接入微信支付(三):小程序端调用支付接口

    微信小程序调用支付接口官方文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5 在上一节中 ...

  9. 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程)

    本篇记录说明 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程,详细内容可私信交流) (第一次写博客,写得不好的地方见谅,面向新手,大佬请无视,不喜勿喷 ...

最新文章

  1. python语法教程-Python语言的核心语法(1)(语法教程)(参考资料)
  2. 《深入理解Java虚拟机》读书笔记五
  3. linux c实现mypwd
  4. C++ Primer中文版(第4版 特别版)
  5. Oracle Merge into
  6. python从零开始学爬虫_从零开始学爬虫(爬取豆瓣),一看就会
  7. VS2013 + Qt 提示 There‘s no Qt version assigned to this project for platform Win32
  8. python 欧姆龙plc通信_二进制PLC通信校验和
  9. Android5.0系统 知识点总结(持续更新)
  10. windows 计算机 快捷键,Windows7计算器快捷键汇总
  11. B帧对视频清晰度/码率的影响
  12. Codeforces Round #467 (Div. 2) D. Sleepy Game
  13. 【python基础】英文大小写函数
  14. Windows文件夹中文名称英文路径
  15. iOS面试- 0x02 WebView
  16. 【数据库】Mysql索引究竟是什么?
  17. ORACLE中dual的详解及其故障恢复
  18. VUE+js高德地图2.0API两幅地图联动同步缩放
  19. 归并排序---天下大事,合久必分,分久必合
  20. 17系统升级(辉煌普及版)

热门文章

  1. asp.net mvc linux,ASP.NET MVC4开发指南PDF扫描版+源码
  2. RealNetworks CEO Rob Glaser 访谈录
  3. 爱奇艺剧本情感分析上分之路
  4. webx URIBrokerService 总结
  5. linux中reap用法,ATT汇编学习笔记(一)
  6. 前端大文件上传和下载(分片上传)
  7. 直接修改html代码视频进度,HTML5实现video标签的自定义播放进度条
  8. python+opencv照相机模型与现实增强
  9. js实现获取两个日期之间所有月份
  10. man HDPARM