微信小程序支付过程详解,基于node.js的后台
来源:互联网 发布:东汉末年 知乎 编辑:程序博客网 时间:2024/06/04 23:19
最近的一个月一直在研究小程序,其中的支付过程一直困扰了我很久,看过大神的帖子之后,按照大神的步骤一步步操作,终于解决。以下详细分析微信小程序的支付过程。
首先附上大神的帖子:http://blog.csdn.net/zhuming3834/article/details/73168056
一、发起微信支付之前首先要有的四个参数
globalData: { appid: 'wxcd3**************d149d',//appid需自己提供,此处的appid我随机编写 secret: '3dc5f7b************6eb45bb',//secret需自己提供,此处的secret我随机编写 Mch_id: "148*******22", // 商户号 Mch_key: "jJn0haD**************qZ7Bty1Z60e", // 商户key }接下来我会解释这四个参数的来源并将其放置在小程序的app.js文件中的全局变量中,就如同上图所示。当然,这些参数的具体数值不带*(哈哈哈)
①appid和secret的获取
登陆微信公众平台自己注册好的小程序账户,appid和appsecret会显示在如下位置
需要注意的是,一个小程序会对应一个appid,这个appid是不会变的,同时还会有一个appSecret,这个密钥在你第一次查看时显示一次,没记错的话应该是需要管理员进行扫码,这时你需要将这个密钥记录下来,如果你忘记了这个密钥,可以通过页面上的重置获取,但之前的密钥就失效了。
②Mch_id和Mch_key的获取
每个需要支付的小程序都需要在微信商户平台注册商户号,获取Mch_id和Mch_key(注册的过程不太清楚,以下的截图是如何获取已知的商户的数据)
Mch_id(商户号)
Mch_key(商户密钥)
需要注意的是:Mch_Key需要配置32位的随机数,自己设定的(建议使用Md5值)
二、获取微信使用者的openid
①、获取code码
wx.login({ success: function(res) { if (res.code) { //接下来的请求写在这里 } else { console.log('获取用户登录态失败!' + res.errMsg) } }});调用微信的API中的wx.login方法,在回调函数中获取code值。
②用上一步中获取到的code值和第一步中获取到的appId和secret换取openid
注:openid是微信用来标识唯一微信用户的
以下是小程序端的代码(将上述的三个值传到后台处理)
wx.request({ url: config.service.payUrl, //发送 用户code 小程序appId app秘钥 data: { code: res.code, appid: app.globalData.appId, secret: app.globalData.appSecret, }, method: "POST", header: { "Content-Type": "application/x-www-form-urlencoded" }, success: function (res) { // 用户唯一id var openid = res.data.openid; console.log(res) console.log("this is openId:" + openid) }})以下是后台处理代码
function mainpay(req, response) {var url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + req.body.appid + "&secret=" + req.body.secret + "&code=" + req.body.code + "&grant_type=authorization_code";https.get(url, function(resu) {//res.send(resu)var datas = [];var size = 0;resu.on('data', function(result) {response.send(result)});}).on("error", function(err) {Logger.error(err.stack)callback.apply(null);});}后台接受小程序端的请求,将传过来的appId,secret,code值拼接成一个固定格式的Url地址,并从后台向小程序的官方服务器发起请求,官方服务器处理请求后会将appid以JSON的形式返回
阅读全文
1 0
- 微信小程序支付过程详解,基于node.js的后台
- 基于Node.js的微服务后台
- 【微信小程序】支付过程详解
- 基于node.js的web程序入门
- 支付宝前端团队详解基于Node.js Web框架Chair
- 使用Node.js搭建微信支付后台(一)
- 使用Node.js搭建微信支付后台(二)
- 使用Node.js搭建微信支付后台(三)
- 微信小程序基于node.js的websocket服务器搭建和SSL证书申请、配置全家桶
- 微信小程序支付 后台处理逻辑 原创
- 微信小程序支付c#后台实现
- Node.js的helloworld 程序
- node.js后台启动
- node.js后台运行
- Node.js--简单后台
- 基于Node.js+Express4+MongoDb制作的微博客网站程序
- (开源)基于vue, react, node.js, go开发的微商城(含微信小程序)
- (开源)基于vue, react, node.js, go开发的微商城(含微信小程序)
- temp
- Android 沉浸式状态栏的苦逼之旅
- Linux 终端tty pty pts描述
- Android开发技巧
- static和const
- 微信小程序支付过程详解,基于node.js的后台
- Android 练手项目,简易的资讯和图片浏览功能
- UBUNTU 永久性挂载分区——修改分区文件/etc/fstab
- xamarin android 打造ListView万能适配器
- dataTable Demo
- 使用spring @Scheduled注解执行定时任务
- 代码优化
- java导出word功能,容易出错,在此记录
- struts之Action的调用方法