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

往期文章

个人主页

前端调用微信小程序的支付流程的更多相关文章

  1. 微信小程序的支付流程

    一.前言 微信小程序为电商类小程序,提供了非常完善.优秀.安全的支付功能 在小程序内可调用微信的API完成支付功能,方便.快捷 场景如下图所示: 用户通过分享或扫描二维码进入商户小程序,用户选择购买, ...

  2. 微信小程序发起支付流程

    小程序调起支付API 需要参数 邮件中参数 API参数名 详细说明 APPID appid appid是微信小程序后台APP的唯一标识,在小程序后台申请小程序账号后,微信会自动分配对应的appid,用 ...

  3. 微信小程序在线支付功能使用总结

    最近需要在微信小程序中用到在线支付功能,于是看了一下官方的文档,发现要在小程序里实现微信支付还是很方便的,如果你以前开发过服务号下的微信支付,那么你会发现其实小程序里的微信支付和服务号里的开发过程如出 ...

  4. 微信小程序后端开发流程

    微信小程序后端开发流程根据官网总结为两个步骤 1.前端调用 wx.login 返回了code,然后调用wx.getUserInfo获取到用户的昵称 头像 2.服务端根据code去微信获取openid, ...

  5. 微信小程序篇(微信小程序的支付)

    微信小程序的支付和微信公众号的支付是类似的,对比起来还比公众号支付简单了一些,我们只需要调用微信的统一下单接口获取prepay_id之后我们在调用微信的支付即可. 今天我们来封装一般node的支付接口 ...

  6. 【微信小程序】支付过程详解

    一.介绍 今天跟大家分享微信小程序集成支付. 二.分析 1.小程序支付API 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html ...

  7. 微信小程序登入流程

    微信小程序登入流程 一.首先前端先传code去后端 wx.login({ success(res) { if (res.code) { //发起网络请求 wx.request({ url: app.g ...

  8. 微信小程序实现支付功能

    小程序支付,没有封装支付代码:直接上一段可用的流程代码吧:微信小程序支付官网文档有详细的说明,这里我就不再赘述啦:客户端js: wx.request({ url:'https://www.xxxx.c ...

  9. Mpvue1.0+Python3.7+Django2.0.4实现微信小程序的支付功能

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_112 其实微信支付有很多种形式,刷脸,扫码,APP支付,小程序支付等,这边只说明小程序支付的实现,不过原理上都大同小异. 首先,需 ...

随机推荐

  1. 152. Maximum Product Subarray动态规划连乘最大子串

    Find the contiguous subarray within an array (containing at least one number)which has the largest p ...

  2. [leetcode]449. Serialize and Deserialize BST设计BST的编解码

    这道题学到了东西. /* 一开始想着中序遍历,但是解码的时候才发现,中序遍历并不能唯一得确定二叉树. 后来看了网上的答案,发现先序遍历是可以的,观察了一下,对于BST,先序遍历确实是可以 唯一得确定. ...

  3. 前端JS获取用户位置

    精确至城市 (基于腾讯位置服务的IP定位,需申请KEY)

  4. java13编程基础之数组深入

    大纲一维数组概述数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们. 这些按序排列 ...

  5. 腾讯IOT安卓开发初探

    目录 腾讯IOT 安卓开发初探 Tecent IOT 开发平台的使用 新建项目 创建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 安卓开发 前置配置 data.json ...

  6. 织梦dedecms自增变量autoindex标签的使用(转)

    织梦dedecms自增变量autoindex标签的使用 例1: {dede:arclist titlelen='120' row='8' typeid='2'}         <li clas ...

  7. Lesson_strange_words1

    time-between system 分时操作:分时系统 secondary 辅助的,从属的 establish 已确立的 capability 功能 formerly 之前的 combine 结合 ...

  8. js 判断用户是手机端还是电脑端访问

    通过userAgent 判断,网页可以直接使用 navigation对象 node端 可以通过请求头的 ctx.request.header['user-agent'] const browser = ...

  9. 【JavaWeb】jQuery 基础

    jQuery 基础 介绍 顾名思义,它是 JavaScript 和 查询,是辅助 JavaScript 开发的类库. 它的核心思想是 write less, do more. 所以它实现了很多浏览器的 ...

  10. 【C++】《Effective C++》第六章

    第六章 继承与面向对象设计 条款32:确定你的public继承塑模出is-a关系 public隐含的寓意:每个派生类对象同时也是一个基类对象,反之不成立.只不过基类比派生类表现出更一般化的概念,派生类 ...