返回顶部
首页 > 资讯 > 后端开发 > JAVA >1024程序节特辑:一文读懂小程序支付流程
  • 775
分享到

1024程序节特辑:一文读懂小程序支付流程

小程序微信小程序1024java支付流程 2023-10-26 12:10:15 775人浏览 八月长安
摘要

小程序支付流程 概述前置准备登录流程调用wx.login()向微信服务器发送请求 支付流程调用wx.requestPayment()部分后台处理逻辑支付功能要求 支付流程面试题

小程序支付流程

在这里插入图片描述

主页传送门:📀 传送

概述


  小程序支付是由微信支付推出的一种便捷支付方式,通过扫码、公众号跳转或应用内支付完成付款。小程序支付适用于各类线上场景,为商家提供了高效的收款方式,也为消费者提供了更加便捷的支付体验。
  随着移动互联网的发展,小程序支付逐渐成为了线上支付的重要方式之一。本文将介绍小程序支付的详细流程,帮助更好地接入小程序支付功能。

前置准备


接入小程序支付的前置准备包括以下步骤:

  1. 小程序注册:首先需要在微信公众平台注册小程序账号,并获取小程序的appid。
  2. 微信支付商户平台注册:在微信支付商户平台(pay.weixin.qq.com)注册,并绑定小程序账号,进行实名认证,并缴纳一定的保证金。
  3. 获取App Secret和MCH ID:在接入微信支付时,需要AppSecret和MCH ID,App Secret是小程序的秘钥,MCH ID是微信支付的商户号,可以在微信支付商户平台的api安全中进行查看,在申请支付权限的时候,还需要获取API密钥。
  4. 开发准备:开发者需要了解微信小程序支付的开发文档和相关技术,包括支付接口的调用流程、支付参数的设置、支付结果的返回等。
  5. 配置支付参数:在微信支付商户平台中配置支付参数,包括支付接口地址、签名方式、支付密钥等信息。
  6. 申请支付权限:在小程序中发起支付权限申请,并将API密钥发送给微信,申请微信支付权限,微信会将权限反馈给小程序。
  7. 发起支付请求:在小程序中调用支付接口,将支付参数发送给微信支付系统,系统会将支付结果返回给小程序。
  8. 处理支付结果:当微信发送支付结果给小程序后,小程序需要根据支付结果进行处理,如果支付成功,小程序需要处理支付成功的业务逻辑,如果支付失败,小程序需要处理支付失败的业务逻辑。

登录流程


  在小程序中,用户需要先进行登录,才能进行支付操作。

小程序登录流程

  • 用户启动小程序,点击登录按钮;
  • 小程序调用wx.login()方法,获取code;
  • 小程序前端将code发送到开发者服务器
  • 开发者服务器向微信服务器发送请求,获取openid和session_key,并将这些信息存储到数据库中;
  • 开发者服务器将openid返回给小程序前端,保存到本地,并用于后续的支付操作。

重点

  • code

    • code是用户登录凭证,由微信服务器颁发给小程序。在用户授权登录后,小程序可以通过调用微信登录接口获取用户的code。然后,通过code向微信服务器请求用户的openid和session_key等信息。
    • 注意:每个code只能使用一次,且有效期为5分钟。因此,在使用code进行登录时,需要及时将其转换成用户的openid和session_key等信息,避免出现code过期的情况
  • openid

    • openid是用来唯一标识用户的一个字符串。在微信小程序中,每个用户的openid都是唯一的。通过openid,小程序可以获取用户的基本信息。

    • 注意:同一个用户在不同的小程序中拥有不同的openid。因此,在开发小程序时,不能使用openid来进行用户的唯一性判断。

调用wx.login()


  小程序调用wx.login()方法,获取code;

代码示例

wx.login({  success (res) {    if (res.code) {      //发起网络请求      wx.request({        url: 'https://example.com/onLogin',        data: {          code: res.code        }      })    } else {      console.log('登录失败!' + res.errMsg)    }  }})

向微信服务器发送请求


  开发者服务器向微信服务器发送请求,获取openid和session_key,并将这些信息存储到数据库中;

代码示例

JSONObject json = new JSONObject();        //登录凭证不能为空        if (code == null || code.length() == 0) {            json.put("success", false);            json.put("content", "code 不能为空");            return json;        }        String grant_type = "authorization_code";        //小程序唯一标识   (在微信小程序管理后台获取)        String wxspAppid = "wx363ea76369509eb8";        //小程序的 app secret (在微信小程序管理后台获取)        String wxspSecret = "93D676ea594e077ac3520c15f110322e";                //请求参数        String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grant_type;        //发送请求        String sr = HttpRequest.sendGet("https://api.weixin.qq.com/sns/jscode2session", params);        //解析相应内容(转换成json对象)        JSONObject json1 = JSONObject.parseObject(sr);        //获取会话密钥(session_key)        String session_key = json1.get("session_key").toString();        //用户的唯一标识(openid)        String openid = (String) json1.get("openid");

官网图示如下

在这里插入图片描述

支付流程


在小程序中进行支付操作,需要完成以下几个步骤:

  • 在小程序前端调用wx.requestPayment()方法,向开发者服务器发起支付请求,并传递相关的支付参数,包括appid、timeStamp、nonceStr、package、signType和paySign;
  • 在开发者服务器接收到请求后,生成相关参数,签名生成prepay_id,并将结果返回给小程序前端;
  • 小程序前端收到开发者服务器的返回结果后,根据返回结果判断是否支付成功;
    • 如果支付失败,则在小程序前端显示支付失败的界面,同时提供重新支付的按钮。
    • 如果支付成功,则在小程序前端显示支付成功的界面;
  • 支付成功后,微信服务器会向开发者服务器发送支付结果通知,开发者服务器根据通知更新订单支付状态。

调用wx.requestPayment()


//支付请求参数var payparam = {  'nonceStr': 'noncestr',  'package': 'prepay_id=' + prepay_id,  'timeStamp': timeStamp,  'paySign': paySign,  'signType': 'MD5'};wx.requestPayment({  'timeStamp': payparam.timeStamp,  'nonceStr': payparam.nonceStr,  'package': payparam.package,  'signType': payparam.signType,  'paySign': payparam.paySign,  'success': function (res) {    console.log(res);    //支付成功逻辑  },  'fail': function (res) {    console.log(res);    //支付失败逻辑  }});

部分后台处理逻辑


  支付处理及支付回调部分逻辑:
部分支付处理

@Override    public JSONObject payment(JSONObject jsonObject, HttpServletRequest request) {        JSONObject json = new JSONObject();        WxPayUnifiedOrderV3Result.JsapiResult result = null;        String randomStr = "";        try {        // 后台支付逻辑省略        。。。。           String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();                    String notifyUrl = url + PayUtil.NotifyUrl;                    System.out.println(ID+ "微信回调地址" + notifyUrl);                }            } else {                throw new CommonException("不存在,id值为:{}", jsonObject.getString("Id"));            }            // 调用下单API            result = this.createOrderV3(ID, ‘支付金额’,                    jsonObject.getString("openId"));        } catch (Exception e) {            e.printStackTrace();        }        //直接返回给前端,前端调用即可        json.put("result", result);        json.put("randomStr", randomStr);        return json;    }

部分支付回调

public static String  NotifyUrl="/tencent/payCallBack";    public static String sign(String text, String key, String input_charset) {        text = text + "&key=" + key;        return DigestUtils.md5Hex(getContentBytes(text, input_charset));    }    public static boolean verify(String text, String sign, String key, String input_charset) {        text = text + key;        String mysign = DigestUtils.md5Hex(getContentBytes(text, input_charset));        if (mysign.equals(sign)) {            return true;        } else {            return false;        }    }    public static byte[] getContentBytes(String content, String charset) {        if (charset == null || "".equals(charset)) {            return content.getBytes();        }        try {            return content.getBytes(charset);        } catch (UnsupportedEncodingException e) {            throw new RuntimeException("MD5签名过程中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset);        }    }

引用官方小程序支付流程图

在这里插入图片描述
重点步骤说明

步骤4:用户下单发起支付,商户可通过JSAPI下单创建支付订单。

步骤9:商户小程序内使用小程序调起支付API(wx.requestPayment)发起微信支付,详见小程序API文档

步骤16:用户支付成功后,商户可接收到微信支付支付结果通知支付通知API。

步骤21:商户在没有接收到微信支付结果通知的情况下需要主动调用查询订单API查询支付结果。

支付功能要求


小程序支付功能需要满足以下几个要求:

  • 支付安全:支付过程需要进行数据加密和安全验证,防止支付信息被黑客攻击;
  • 支付便捷:支付操作需快速便捷,无需跳转到其他页面;
  • 支付稳定:要保证支付系统的稳定性,防止出现支付失败等问题。

支付流程面试题


常见的问题包括:

小程序支付流程的具体步骤是什么?
如何提高小程序支付系统的稳定性?
小程序支付过程中,如何保证支付的安全性?
小程序支付过程中,如何处理支付失败的情况?
如何根据微信服务器发送的支付结果通知,更新订单支付状态?

在这里插入图片描述

  如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏  🙌一起讨论  你的评价就是我✍️创作的动力!  💞💞💞

参考文档:

微信小程序

来源地址:https://blog.csdn.net/wodejiaAA/article/details/133900695

--结束END--

本文标题: 1024程序节特辑:一文读懂小程序支付流程

本文链接: https://lsjlt.com/news/459492.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 1024程序节特辑:一文读懂小程序支付流程
    小程序支付流程 概述前置准备登录流程调用wx.login()向微信服务器发送请求 支付流程调用wx.requestPayment()部分后台处理逻辑支付功能要求 支付流程面试题 ...
    99+
    2023-10-26
    小程序 微信小程序 1024 java 支付流程
  • 微信小程序支付完整流程
    1、注册微信支付商户号(由上级或法人注册) 注册链接:https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal 此商户...
    99+
    2023-09-21
    微信小程序 小程序 javascript
  • 微信小程序支付流程(前端)
    微信小程序的支付只要用到官方的支付API : wx.requestPayment(Object object) 官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/paym...
    99+
    2023-08-19
    微信小程序 前端 小程序 微信 javascript
  • 微信小程序支付完整流程(前端)
     微信小程序中,常见付款给商家的场景,下面列出企业小程序中,从0起步完整微信支付流程。 一,注册微信支付商户号(由上级或法人注册)    接入微信支付 - 微信商户平台 此商户号,需要由主管及更上级领导进行注册,会成为公司收款账户(...
    99+
    2023-08-31
    微信小程序 小程序
  • 小程序微信支付
    微信小程序实现支付功能 1. 准备工作 在开始实现微信小程序支付功能之前,我们需要先完成以下准备工作: 注册微信支付商户号,并完成商户资质审核;微信支付开发文档;在小程序中引入微信支付JSAPI;获取...
    99+
    2023-09-04
    小程序 微信 微信小程序
  • 跳转微信小程序和支付宝小程序
    跳转微信小程序和支付宝小程序 1. 微信小程序 参考链接 获取微信小程序 URL Scheme 1.1 获取小程序连接 这里需要获取长期有效的 Scheme,方式如下: 联系小程序开发者其他渠道 示例 小程序 Scheme : 测试地址,可...
    99+
    2023-08-16
    微信小程序 小程序
  • 一文读懂微信小程序页面导航
    目录一,页面导航1.1 声明式导航1.1.1 导航到tarBar页面1.1.2 导航到非tarBar页面1.1.3 后退导航1.2 编程式导航1.2.1 导航到tarBar页面1.2...
    99+
    2022-11-16
    微信小程序 导航 微信小程序页面导航栏 小程序中怎么实现导航功能
  • java微信小程序支付
    这篇文章将为大家详细讲解有关java微信小程序支付,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java 微信小程序支付 前言 微信小程序支付是一种方便快捷的支付方式,它允许用户在微信小程序中直接进行支付...
    99+
    2024-04-02
  • 微信小程序支付java
    这篇文章将为大家详细讲解有关微信小程序支付java,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序支付 Java 实现 微信小程序支付提供了便捷的支付机制,使开发者能够轻松地在其小程序中集成支付功...
    99+
    2024-04-02
  • 小程序开通微信支付的流程是什么
    这篇文章主要介绍“小程序开通微信支付的流程是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“小程序开通微信支付的流程是什么”文章能帮助大家解决问题。  小程序开通微信支付的流程  最先便是务必要掌...
    99+
    2023-06-26
  • Python3 微信支付(小程序支付)V3接口
    起因:         因公司项目需要网上充值功能,从而对接微信支付,目前也只对接了微信支付的小程序支付功能,在网上找到的都是对接微信支付V2版本接口,与我所对接的接口版本不一致,无法使用,特此记录下微信支付完成功能,使用Django完成后...
    99+
    2023-09-12
    微信 小程序 微信小程序
  • 微信支付V3 小程序支付API Java版
    本文目的:快速接通微信支付V3 无需关注细节,实现支付功能,修改配置即可调用 文章目录 接入准备微信支付流程整理(小程序版)一、导入微信支付扩展包二、微信支付工具类1.签名工具类2.微信...
    99+
    2023-10-27
    微信 小程序 java
  • 一文读懂Java 中的程序内存
    本篇文章给大家分享的是有关一文读懂Java 中的程序内存,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先我们先来感观的认识下几个名词:栈,一般来说,基本数据类型直接在栈中分配...
    99+
    2023-05-31
    java 程序内存 ava
  • 微信小程序支付踩坑notify_url(支付回调)
    最近做了微信小程序支付,支付成功之后发现notify_url回调地址竟然没有访问。 检查了无数次代码,下单结果里面的回调地址看了又看,都没有错啊。 把回调地址复制出来到浏览器上面,外网也是可以访问的啊。 然后我再分析,为什么以前公众号支付都...
    99+
    2023-09-20
    微信小程序 小程序 微信
  • 微信小程序和支付宝小程序有哪些区别
    这篇文章主要为大家展示了“微信小程序和支付宝小程序有哪些区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序和支付宝小程序有哪些区别”这篇文章吧。1.生态差异 :从微信和支付宝的属性来看...
    99+
    2023-06-27
  • 微信小程序支付功能完整流程记录(前端)
    目录一,注册微信支付商户号(由上级或法人注册)二,注册小程序账号(由上级或者领导注册)三,登录商户号绑定小程序四,后端工程师书写接口五,前端工程师调用接口1. 获取openid(当前...
    99+
    2023-02-18
    微信小程序支付流程前端 微信小程序的支付流程 微信小程序支付功能怎么实现
  • 1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
    文章目录 🍓🍓BRVAH 上部🍄🍓动态图结果展示🍄🍄myAdapter.java【第一个布局适配...
    99+
    2023-09-01
    android
  • 微信小程序和支付宝小程序的区别有哪些
    这篇文章主要介绍了微信小程序和支付宝小程序的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序微信小程序是存在于微信内的一种轻应用形态,为用户提供不需要下载即...
    99+
    2023-06-27
  • 【微信支付】java-微信小程序支付-V3接口
    一、对接前准备 最开始需要在微信支付的官网注册一个商户; 在管理页面中申请关联小程序,通过小程序的 appid 进行关联;商户号和appid之间是多对多的关系 进入微信公众平台,功能-微信支付中确认关联 具体流程请浏览官方文档:接入前准备-...
    99+
    2023-10-27
    微信 微信小程序 小程序
  • 微信小程序调用支付接口的完整流程记录
    目录当然在开发之前,我们需要有下面这些东西:步骤如下:总结官方的文档路径------》文档路径:developers.weixin.qq.com/miniprogram&hellip...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作