前端调用微信小程序的支付流程
1,前言
分享一个完整的微信小程序支付流程中,前端要做的模块。
2,流程
在调用wx.requestPayment
之前,需要准备一些参数,流程如下
1,调用 wx.login()
获取 临时登录凭证code ,并调用wx.request
回传到服务端。
2,服务端调用 auth.code2Session
接口,换取用户唯一标识 OpenID
和 会话密钥 session_key
。
3,前端拿到服务端返还的参数后,调用wx.requestPayment
。
下面是我画的一个流程图
3,参数说明
如上,一共五个参数,参数名区分大小写,参数名写错或者参数类型搞错都不行。
4,具体代码
pay () {
let _this = this;
//此处5个变量为我项目需要,与微信支付无关
let { userId, needPay, price, walletNum, classId } = this.data;
if(needPay === 0){ //如果还需微信支付的金额为 0 则全部走钱包支付
HTTP.buyPay(userId , price, classId)
.then(res => {
if(res.status === "y"){
FN.Alert(res.info)
.then(() => {
wx.navigateBack();
})
};
});
}else{//进入微信支付
FN.wxLogin()
.then(res => {
this.setData({
code:res
},() => {
HTTP.payCourse(userId, classId, walletNum, needPay, res)// 调服务端,拿到支付密匙
.then(res => {
if(res.status === "y"){
let obj = res.infoObject.wxpayInfo;
wx.requestPayment({// 调起微信支付
timeStamp: obj.timestamp,
nonceStr: obj.nonceStr,
package: obj.wxPackage,
signType: obj.signType,
paySign: obj.sign,
success (res) {
FN.Alert("支付成功")
.then(() => {
wx.navigateBack();
})
},
fail (res) {
_this.setData({
isShow:false,
payPwd:"",
pwdFocus:false
}, () => {
if(res.errMsg.indexOf("cancel") > -1){
FN.Toast("取消支付");
}else{
FN.Toast("支付失败");
}
})
}
})
}
})
});
})
.catch(res => {
FN.Toast("获取登录凭证失败");
})
}
}
如果看了觉得有帮助的,我是@鹏多多,欢迎 点赞 关注 评论;
END
往期文章
个人主页
前端调用微信小程序的支付流程的更多相关文章
- 微信小程序的支付流程
一.前言 微信小程序为电商类小程序,提供了非常完善.优秀.安全的支付功能 在小程序内可调用微信的API完成支付功能,方便.快捷 场景如下图所示: 用户通过分享或扫描二维码进入商户小程序,用户选择购买, ...
- 微信小程序发起支付流程
小程序调起支付API 需要参数 邮件中参数 API参数名 详细说明 APPID appid appid是微信小程序后台APP的唯一标识,在小程序后台申请小程序账号后,微信会自动分配对应的appid,用 ...
- 微信小程序在线支付功能使用总结
最近需要在微信小程序中用到在线支付功能,于是看了一下官方的文档,发现要在小程序里实现微信支付还是很方便的,如果你以前开发过服务号下的微信支付,那么你会发现其实小程序里的微信支付和服务号里的开发过程如出 ...
- 微信小程序后端开发流程
微信小程序后端开发流程根据官网总结为两个步骤 1.前端调用 wx.login 返回了code,然后调用wx.getUserInfo获取到用户的昵称 头像 2.服务端根据code去微信获取openid, ...
- 微信小程序篇(微信小程序的支付)
微信小程序的支付和微信公众号的支付是类似的,对比起来还比公众号支付简单了一些,我们只需要调用微信的统一下单接口获取prepay_id之后我们在调用微信的支付即可. 今天我们来封装一般node的支付接口 ...
- 【微信小程序】支付过程详解
一.介绍 今天跟大家分享微信小程序集成支付. 二.分析 1.小程序支付API 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html ...
- 微信小程序登入流程
微信小程序登入流程 一.首先前端先传code去后端 wx.login({ success(res) { if (res.code) { //发起网络请求 wx.request({ url: app.g ...
- 微信小程序实现支付功能
小程序支付,没有封装支付代码:直接上一段可用的流程代码吧:微信小程序支付官网文档有详细的说明,这里我就不再赘述啦:客户端js: wx.request({ url:'https://www.xxxx.c ...
- Mpvue1.0+Python3.7+Django2.0.4实现微信小程序的支付功能
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_112 其实微信支付有很多种形式,刷脸,扫码,APP支付,小程序支付等,这边只说明小程序支付的实现,不过原理上都大同小异. 首先,需 ...
随机推荐
- [leetcode]66Plus One
/** * Given a non-negative integer represented as a non-empty array of digits, plus one to the integ ...
- SpringBoot文件上传配置
/** * 文件上传配置 * @return */ @Bean public MultipartConfigElement multipartConfigElement() { MultipartCo ...
- Reset 对象属性
Input Reset 对象 在 HTML 表单中 标签每出现一次,一个 Reset 对象就会被创建. 当重置按钮被点击,包含它的表单中所有输入元素的值都重置为它们的默认值.默认值由 HTML val ...
- web前台界面的两种验证方式
JSON的全称是"JavaScript Object Notation",意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式. 第一种: 用户体 ...
- Playwright VS Selenium VS Puppeteer VS Cypress
参考:https://www.testim.io/blog/puppeteer-selenium-playwright-cypress-how-to-choose/ 这四款自动化测试框架在我们的公众号 ...
- 6.裸机C语言控制LED
C语言版LED灯 汇编完成C语言的环境配置 C语言完成点亮LED灯 程序编写 汇编程序start.S .global _start /* 全局标号 */ /* * 描述: _start函数,程序从此函 ...
- flume基本概念及相关参数详解
1.flume是分布式的日志收集系统,把手机来的数据传送到目的地去 2.flume传输的数据的基本单位是 event,如果是文本文件,通常是一行记录. event代表着一个数据流的最小完整 ...
- livy提交spark应用
spark-submit的使用shell时时灵活性较低,livy作为spark提交的一种工具,是使用接口或者java客户端的方式提交,可以集成到web应用中 1.客户端提交的方式 http://l ...
- 新蜂商城的mybatis plus版本,添加了秒杀专区、优惠卷领取以及后台搜索功能
本项目是在newbee-mall项目的基础上改造而来,将orm层由mybatis替换为mybatis-plus,添加了秒杀功能.优惠劵功能以及后台搜索功能,喜欢的话麻烦给我个star 后台管理模块添加 ...
- 【SpringMVC】SpringMVC 响应数据
SpringMVC 响应数据 文章源码 返回值分类 返回值是字符串 Controller 方法返回字符串可以指定逻辑视图的名称,通过视图解析器解析为物理视图的地址. @Controller @Requ ...