1,前言

分享一个完整的微信小程序支付流程中,前端要做的模块。

2,流程

在调用wx.requestPayment之前,需要准备一些参数,流程如下

1,调用 wx.login() 获取 临时登录凭证code ,并调用wx.request回传到服务端。

2,服务端调用 auth.code2Session 接口,换取用户唯一标识 OpenID 和 会话密钥 session_key

3,前端拿到服务端返还的参数后,调用wx.requestPayment

下面是我画的一个流程图

3,参数说明




如上,一共五个参数,参数名区分大小写,参数名写错或者参数类型搞错都不行。

4,具体代码

  1. pay () {
  2. let _this = this;
  3. //此处5个变量为我项目需要,与微信支付无关
  4. let { userId, needPay, price, walletNum, classId } = this.data;
  5. if(needPay === 0){ //如果还需微信支付的金额为 0 则全部走钱包支付
  6. HTTP.buyPay(userId , price, classId)
  7. .then(res => {
  8. if(res.status === "y"){
  9. FN.Alert(res.info)
  10. .then(() => {
  11. wx.navigateBack();
  12. })
  13. };
  14. });
  15. }else{//进入微信支付
  16. FN.wxLogin()
  17. .then(res => {
  18. this.setData({
  19. code:res
  20. },() => {
  21. HTTP.payCourse(userId, classId, walletNum, needPay, res)// 调服务端,拿到支付密匙
  22. .then(res => {
  23. if(res.status === "y"){
  24. let obj = res.infoObject.wxpayInfo;
  25. wx.requestPayment({// 调起微信支付
  26. timeStamp: obj.timestamp,
  27. nonceStr: obj.nonceStr,
  28. package: obj.wxPackage,
  29. signType: obj.signType,
  30. paySign: obj.sign,
  31. success (res) {
  32. FN.Alert("支付成功")
  33. .then(() => {
  34. wx.navigateBack();
  35. })
  36. },
  37. fail (res) {
  38. _this.setData({
  39. isShow:false,
  40. payPwd:"",
  41. pwdFocus:false
  42. }, () => {
  43. if(res.errMsg.indexOf("cancel") > -1){
  44. FN.Toast("取消支付");
  45. }else{
  46. FN.Toast("支付失败");
  47. }
  48. })
  49. }
  50. })
  51. }
  52. })
  53. });
  54. })
  55. .catch(res => {
  56. FN.Toast("获取登录凭证失败");
  57. })
  58. }
  59. }

如果看了觉得有帮助的,我是@鹏多多,欢迎 点赞 关注 评论;

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. device_create为何可以在/sys/class/具体类/属性文件?怎么实现的

    答案: 版本3.6.9: device_create -> device_register -> device_add -> device_add_attrs -> devic ...

  2. C语言测一个浮点数的位数长度

    测浮点数的位数牵扯到一个精度的问题,用普通的测整形数值的方法不能实现,于是我自己写了一个测浮点数的函数. #include <stdio.h> //for printf int lengt ...

  3. mysql explain参数详解

    主要对几个参数做一些记录 type:显示的是访问类型 从最好到最差的连接类型为:const.eq_reg.ref.range.index和ALL 至少要达到range,基本是ref  最好是const ...

  4. 初探JAVA内部类细节一

    定义: 可以将一个类的定义放在另一个类的内部 这就是内部类.--摘自java编程思想 一般实现方式: public class SimpleInnerClass { class Content { p ...

  5. INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 的使用和区别

    INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN ...

  6. mysql修改sql_mode为宽松模式

    sql_mode ANSI TRADITIONAL STRICT_TRANS_TABLES sql_mode为空 最宽松的模式, 即使有错误既不会报错也不会有警告️ ANSI 宽松模式,对插入数据进行 ...

  7. ORACLE的还原表空间UNDO写满磁盘空间,解决该问题的具体步骤

    产生问题的原因主要以下两点:1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况:2. 有较大事务没有收缩或者没有提交所导制:说明:本问题在ORACLE系统管理中属于比较正 ...

  8. MyBatis初级实战之一:Spring Boot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Java 使用 mail.jar 实现邮件发送

    目录 准备工作 使用到的 jar 包 实现代码 准备工作 要想实现邮件发送, 需要先打开发送邮箱的 POP3/SMTP 服务,打开方式在 设置>帐户 中去打开,打开之后如果是qq邮箱会获得一个授 ...

  10. 【Linux】rsync模板配置问题

    ------------------------------------------------------------------------------------------------- | ...