前端调用微信小程序的支付流程
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支付,小程序支付等,这边只说明小程序支付的实现,不过原理上都大同小异. 首先,需 ...
随机推荐
- 使用sqlmap
实验环境要求: 1.安装win7或win10的笔记本或PC电脑一台,硬盘100GB,内存8GB 2.安装VMware Workstation 14以上 总体目标:基于centos7搭建dvwa web ...
- JS中var与let的区别
区别: var声明的变量,其作用域在该语句所在的函数之内,存在着变量提升的现象. let声明的变量,其作用域为该句所在的代码块内,不存在变量提升的问题. let相比于var,其不允许在相同作用域内,重 ...
- Spark算子使用
一.spark的算子分类 转换算子和行动算子 转换算子:在使用的时候,spark是不会真正执行,直到需要行动算子之后才会执行.在spark中每一个算子在计算之后就会产生一个新的RDD. 二.在编写sp ...
- 【函数分享】每日PHP函数分享(2021-1-9)
implode() 将一个一维数组的值转化为字符串. string implode ( string $glue , array $pieces ) 参数描述 glue 默认为空的字符串. p ...
- 计算机考研真题 ZOJ问题
题目描述 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. 是否AC的规则如下: 1. zoj能AC: 2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或 ...
- 支持向量机(SVM)原理详解
SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:SVM还包括核技巧, ...
- 一条查询SQl是怎样执行的
MySQL的逻辑架构图 大体来说,MySQL可以分为Server层和存储引擎层两部分. Server层包括连接器.查询缓存.分析器,优化器等,涵盖MySQL的大多核心服务功能,以及所有的内置函数,存储 ...
- MySQL多版本并发控制——MVCC机制分析
MVCC,即多版本并发控制(Multi-Version Concurrency Control)指的是,通过版本链维护一个数据的多个版本,使得读写操作没有冲突,可保证不同事务读写.写读操作并发执行,提 ...
- python学习笔记 | 列表去重
''' @author: 人人都爱小雀斑 @time: 2020/3/10 10:29 @desc: ''' L=[1,5,7,4,6,3,0,5,8,4,4] 方法1:for循环 L1=[] for ...
- ORA-12560错误
ora-12560错误是一个经典错误之一 下面我们分析一下这个错误: 产生这个错误的原因是什么呢? 1.oracle服务没有启动 Linux下查看$ps -ef | grep ora_ windows ...