• java springboot 如何实现小程序支付


    今天给大家分享java小程序支付

    首先我们学习任何东西要先看官网

    下面是支付业务流程

    我们具体用代码去实现上面的业务流程

    功能截图

    代码截图

    1.  pay(){
    2.     //调用后台生成订单
    3.     var orderNumber = "20210101123456";
    4.     var amount = 0.01;
    5.     WxPay.wxpay(app, amount, orderNumber, '支付测试'function(code) {
    6.       // 下单成功,跳转到订单管理界面
    7.       if (code == 0) {
    8.         
    9.       }
    10.     });
    11.   },
    1. function wxpay(app, money, orderNum, goodsName, callback{
    2.   wx.request({
    3.     header: {
    4.       "token": app.globalData.token
    5.     },
    6.     url: app.globalData.domain + '/api/pay/wechat/unifiedOrder',
    7.     data: {
    8.       storeId: app.globalData.storeId,
    9.       orderNum: orderNum,
    10.       totalAmount: money,
    11.       goodsName: goodsName
    12.     },
    13.     success: function (res) {
    14.       if (res.data.code == 0) {
    15.         // 发起支付
    16.         wx.requestPayment({
    17.           timeStamp: res.data.data.timeStamp,
    18.           nonceStr: res.data.data.nonceStr,
    19.           package: res.data.data.package,
    20.           signType'MD5',
    21.           paySign: res.data.data.paySign,
    22.           fail: function (resp) {
    23.             wx.showToast({
    24.               title'支付失败',
    25.               icon'none'
    26.             })
    27.             callback(1);
    28.           },
    29.           success: function () {
    30.             wx.showToast({
    31.               title'支付成功',
    32.               icon'none'
    33.             })
    34.             callback(0);
    35.           }
    36.         })
    37.       } else {
    38.         wx.showToast({
    39.           title: res.data.msg,
    40.           icon'none'
    41.         })
    42.         callback(1);
    43.       }
    44.     }
    45.   })
    46. }
    1. /**
    2.      * 统一下单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
    3.      * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
    4.      * 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder
    5.      *
    6.      * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
    7.      */
    8.     @GetMapping("/unifiedOrder")
    9.     public R unifiedOrder(@RequestAttribute("userId") Long userId, String orderNum, BigDecimal totalAmount, String goodsName, HttpServletRequest req) throws WxPayException {
    10.     WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
    11.     request.setOutTradeNo(orderNum);
    12.     MemberEntity member = memberService.queryObject(userId);
    13.     request.setOpenid(member.getOpenid());
    14.     request.setBody(goodsName);
    15.     request.setNotifyUrl(notifyUrl);
    16.     request.setTotalFee(totalAmount.multiply(new BigDecimal(100)).intValue());
    17.     request.setSpbillCreateIp(IPUtils.getIpAddr(req));
    18.     request.setTradeType("JSAPI");
    19.     WxPayUnifiedOrderResult result = wxPayService.unifiedOrder(request);
    20.    
    21.     String timeStamp = String.valueOf(System.currentTimeMillis() / 1000);
    22.         String nonceStr = String.valueOf(System.currentTimeMillis());
    23.    
    24.     //signKey 商户平台设置的密钥key
    25.     //签名字段:appId,timeStamp,nonceStr,package,signType
    26.    
    27.     Map params = new HashMap();
    28.     params.put("appId", wxPayService.getConfig().getAppId());
    29.     params.put("timeStamp", timeStamp);
    30.     params.put("nonceStr", nonceStr);
    31.     params.put("package", "prepay_id=" + result.getPrepayId());
    32.     params.put("signType", "MD5");
    33.    
    34.     String sign = SignUtils.createSign(params, "MD5", wxPayService.getConfig().getMchKey(), new String[0]);
    35.    
    36.     params.put("paySign", sign);
    37.    
    38.     return R.ok().put("data", params);
    39.     }

  • 相关阅读:
    Unity中Shader反射环境
    洛谷P8815:逻辑表达式 ← CSP-J 2022 复赛第3题
    matlab Silink PID 手动调参
    Spring中Bean的作用域
    FT2004(D2000)开发实战之W25X10CL固件烧写
    cmake简洁教程 - 第三篇
    【每日一题Day47】LC1687从仓库到码头运输箱子
    非结构化知识抽取 -- pipeline方法 joint方法
    这980道JAVA面试题,刷完50%妥妥的也能上岸
    寻找技术合伙人111
  • 原文地址:https://blog.csdn.net/mm89934266/article/details/132889488