• 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.     }

  • 相关阅读:
    【Linux】进程控制基础知识
    书生·浦语大模型第二期实战营(6)笔记
    新视野——宏病毒组ssDNA Virome
    Ubuntu 20.04 下DeepSDF环境配置笔记
    数据结构:队列
    身份和访问管理解决方案:混合型IAM
    【Java】数组中值得说的那些事
    正则校验与时间格式化
    软件测试面试题:你认为做好测试用例设计工作的关键是什么?
    C#实现钉钉自定义机器人发送群消息帮助类
  • 原文地址:https://blog.csdn.net/mm89934266/article/details/132889488