JAVA+微信JSAPI支付

JAVA+微信JSAPI支付

    • 引入依赖
    • 获取请求ip
    • 组装微信支付请求
    • 回调处理

引入依赖

 <dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-pay</artifactId>
   	<version>${weixin-java-pay.version}</version>
 </dependency>

获取请求ip

    public static String getIpAddr(HttpServletRequest request)
    {
        if (request == null)
        {
            return "unknown";
        }
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("X-Real-IP");
        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getRemoteAddr();
        }
        return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : EscapeUtil.clean(ip);
    }

组装微信支付请求

public <T> T createWxOrder(ReqStringParam param) throws WxPayException {
        WxPayService wxPayService = wxPayConfiguration.wxService();
        WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
        request.setAppid(wxPayService.getConfig().getAppId());
        request.setMchId(wxPayService.getConfig().getMchId());
        request.setDetail("交易描述");
        
        request.setOutTradeNo(order.getOrderSn());
        //支付回调地址
        request.setNotifyUrl(wxPayService.getConfig().getNotifyUrl());
        request.setFeeType("CNY");// 货币类型 人民币
        // 支付金额
        BigDecimal actualPrice = BigDecimal.valueOf(100L);

        request.setTotalFee(actualPrice.multiply(BigDecimal.valueOf(100L)).intValue());
        request.setSpbillCreateIp(IpUtils.getIpAddr(httpServletRequest));// 获取ip
        request.setTradeType("JSAPI");// 交易类型
        request.setBody("支付");
        request.setOpenid(user.getWeixinOpenid());// 微信openId

        //设置支付方式
        return wxService.createOrder(request);
    }

回调处理

public String parseWxOrderNotifyResult(String xmlData) throws WxPayException {
        WxPayOrderNotifyResult wxPayOrderNotifyResult = wxService.parseOrderNotifyResult(xmlData);
        String outtradeNo = wxPayOrderNotifyResult.getOutTradeNo();
        MallOrder order = iMallOrderService.lambdaQuery().eq(MallOrder::getOrderSn, wxPayOrderNotifyResult.getOutTradeNo()).one();
        if ("FAIL".equals(wxPayOrderNotifyResult.getResultCode())) {
             // 失败业务逻辑处理
        } else {
             // 成功业务逻辑处理
        }
            return "   ";
        
    }

你可能感兴趣的:(java,微信,开发语言)