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

这篇具有很好参考价值的文章主要介绍了1024程序节特辑:一文读懂小程序支付流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1024程序节特辑:一文读懂小程序支付流程,小程序,小程序,微信小程序,1024,java,支付流程

主页传送门:📀 传送

概述


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

前置准备


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

  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";

        /** 1、向微信服务器 使用登录凭证 code 获取 session_key 和 openid */
        //请求参数
        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");

官网图示如下

1024程序节特辑:一文读懂小程序支付流程,小程序,小程序,微信小程序,1024,java,支付流程

支付流程


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

  • 在小程序前端调用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);
        }
    }

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

1024程序节特辑:一文读懂小程序支付流程,小程序,小程序,微信小程序,1024,java,支付流程
重点步骤说明

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

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

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

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

支付功能要求


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

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

支付流程面试题


常见的问题包括:

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

1024程序节特辑:一文读懂小程序支付流程,小程序,小程序,微信小程序,1024,java,支付流程

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

参考文档:

微信小程序文章来源地址https://www.toymoban.com/news/detail-726583.html

到了这里,关于1024程序节特辑:一文读懂小程序支付流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文读懂!跨境支付业务详解

    随着全球电子商务的增长,面向进出口贸易的跨境支付应运而生。 据华创微课统计,预计2022年,跨境支付交易总额将突破156万亿美元,跨境服务市场有巨大的发展潜力。 在跨境服务的链路中,支付是关键的一环。 像shopee、亚马逊、阿里巴巴国际、天猫国际、网易考拉等企业

    2024年02月13日
    浏览(27)
  • 1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    浏览(44)
  • 微信小程序支付流程

    申请微信支付,配置小程序秘钥,设置秘钥和下载证书,配置HTTPS服务器即可。 具体步骤 1、申请微信支付。小程序认证以后,可以在小程序后台,微信支付菜单栏,申请微信支付。填写企业信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在

    2024年02月13日
    浏览(39)
  • 微信小程序的支付流程

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

    2024年02月02日
    浏览(48)
  • 微信小程序支付完整流程

    1、注册微信支付商户号(由上级或法人注册) 注册链接:https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal#none 此商户号,需要由主管及更上级领导进行注册,会成为公司收款账户 企业注册需要材料:营业执照,对公银行账户信息,法人身份证 2、注册小程序账号(由上级或

    2024年02月10日
    浏览(41)
  • 微信小程序支付流程(前端)

    微信小程序的支付只要用到官方的支付API : wx.requestPayment(Object object) 官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/payment/wx.requestPayment.html 1、总体流程 一般情况下,前端接触到的支付流程是这样的:商品页选择商品 —— 提交商品订单(跳转到确认订单页) ——

    2024年02月11日
    浏览(46)
  • 微信小程序 实现支付流程

    开发微信小程序时,涉及到微信支付的开发环节,特此记录一下 官方注册地址👉👉:接入微信支付 - 微信商户平台 备注:此商户号为超级管理员,一般由更上级领导进行注册(     非前端人员注册    ),会成为公司收款账户,主要填写超管信息并上传企业资料(如:营业执

    2024年04月14日
    浏览(51)
  • 微信小程序接入微信支付流程

    1、支付场景:点击支付按钮唤起微信支付弹窗,输入正确密码后完成支付。 2、基本流程:点击支付按钮首先生成一个订单,然后在后端调用微信api接口进行统一下单,将接口返回的数据回传到前端拉起支付操作,然后异步通知支付结果。 1、微信公众平台配置 点击功能 –

    2023年04月12日
    浏览(42)
  • uniapp小程序微信支付流程

    微信支付(微信支付分为3大步)  1. 创建订单             1.1 组织订单的信息对象(包含三个参数)                   价格order_price,地址consignee_addr,商品信息goods            1.2 发起请求创建订单(调接口)            1.3 得到服务器响应的“订单编号”   2. 订

    2024年02月10日
    浏览(39)
  • 【面试合集】说说微信小程序的支付流程?

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

    2024年01月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包