Springboot+Native支付

本文详细介绍了如何在后端实现微信支付功能,包括引入微信支付SDK的jar包,调用统一下单接口生成支付链接,并将链接返回前端以生成二维码。主要涉及的步骤包括设置支付参数,计算签名,以及处理预付订单的返回结果。
摘要由CSDN通过智能技术生成

1、开通支付功能

 2、引入jar包

<dependency>
   <groupId>com.github.wxpay</groupId>
   <artifactId>wxpay-sdk</artifactId>
   <version>0.0.3</version>
</dependency>

3、获取支付链接(前端根据此链接生成二维码)

public Result unifiedOrderNATIVE(Map<String,Object> orderMap, HttpServletRequest request) {
        Map<String, String> returnMap = new HashMap<>();
        Map<String, String> responseMap = new HashMap<>();
        Map<String, String> data = new HashMap<>();
        String orderNo = null;
        try {
            //如果订单不为空
            if (orderMap != null){
                orderNo = orderMap.get("id").toString();
                Double amount = Double.parseDouble(orderMap.get("sfprice").toString());

                //支付参数
                WXPay wxpay = new WXPay(config);
                data.put("appid", config.getAppID());
                data.put("body", "订单支付");
                data.put("mch_id", config.getMchID());
                data.put("notify_url", config.getWxPayNotifyUrl());//异步通知地址(请注意必须是外网)
                data.put("out_trade_no", orderNo);
                data.put("spbill_create_ip", getIpAddress(request)); //自己的服务器IP地址
                data.put("total_fee", String.valueOf((int) (amount * 100)));
                data.put("trade_type", "NATIVE");//交易类型JSAPI支付
                String s = WXPayUtil.generateSignature(data, config.getKey());  //签名
                data.put("sign", s);//签名
                //使用官方API请求预付订单
                Map<String, String> resultMap = wxpay.unifiedOrder(data);
                //获取返回码
                String returnCode = resultMap.get("return_code");
                //若返回码为SUCCESS,则会返回一个result_code,再对该result_code进行判断
                if ("SUCCESS".equals(returnCode)) {
                    String resultCode = resultMap.get("result_code");
                    if ("SUCCESS".equals(resultCode)) {
                        responseMap = resultMap;
                        //把链接返回前端(前端根据此链接生成二维码)
                        returnMap.put("code_url",responseMap.get("code_url"));
                    }
                }
            }
            return ResultUtil.success(returnMap);
        } catch (Exception e) {
            logger.error("订单号:{},错误信息:{}", orderNo, e.getStackTrace());
            return ResultUtil.error("微信支付统一下单失败");
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值