java接入微信支付

  1. 引入微信支付依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-pay</artifactId>
    <version>3.7.1</version>
</dependency>
  1. 配置微信支付参数

在配置文件中添加以下配置,配置微信支付相关参数:

wx:
  pay:
    appId: your_appId
    mchId: your_mchId
    mchKey: your_mchKey
    keyPath: your_keyPath
    notifyUrl: your_notifyUrl

其中,appId、mchId和mchKey是微信支付分配的账号信息,keyPath是API证书的路径,notifyUrl是支付结果通知地址。

  1. 创建微信支付服务

创建一个微信支付服务,包括创建订单、发起支付请求、处理支付结果等功能。例如:

@Service
public class WeixinPayService {
    @Autowired
    private WxPayService wxPayService;

    /**
     * 创建微信支付订单
     */
    public WxPayUnifiedOrderResult createOrder(WxPayUnifiedOrderRequest request) throws WxPayException {
        return wxPayService.unifiedOrder(request);
    }

    /**
     * 查询微信支付订单
     */
    public WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo) throws WxPayException {
        return wxPayService.queryOrder(transactionId, outTradeNo);
    }

    /**
     * 处理微信支付结果通知
     */
    public String processPayResultNotify(String xmlData) throws WxPayException {
        WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
        // 处理支付结果通知
        return "SUCCESS";
    }
}

在上面的代码中,WeixinPayService中封装了微信支付的一些操作,包括创建订单、查询订单、处理支付结果通知等。

  1. 调用微信支付服务

在需要使用微信支付的地方,注入WeixinPayService,并调用相关方法。例如:

@RestController
public class PayController {
    @Autowired
    private WeixinPayService weixinPayService;

    @PostMapping("/pay")
    public WxPayUnifiedOrderResult pay(@RequestBody PayRequestDTO request) throws WxPayException {
        WxPayUnifiedOrderRequest wxPayRequest = new WxPayUnifiedOrderRequest();
        wxPayRequest.setBody(request.getBody());
        wxPayRequest.setOutTradeNo(request.getOutTradeNo());
        wxPayRequest.setTotalFee(BaseWxPayRequest.yuanToFen(request.getTotalFee()));
        wxPayRequest.setSpbillCreateIp(request.getSpbillCreateIp());
        wxPayRequest.setTradeType(request.getTradeType());
        wxPayRequest.setNotifyUrl(request.getNotifyUrl());
        wxPayRequest.setOpenid(request.getOpenid());
        return weixinPayService.createOrder(wxPayRequest);
    }
}

在上面的代码中,PayController接收支付请求并将请求转换为WxPayUnifiedOrderRequest,调用WeixinPayService的createOrder方法创建微信支付订单,并返回结果。

  1. 处理支付结果通知

在微信支付结果通知的地址上,接收微信支付结果通知,并调用WeixinPayService的processPayResultNotify方法处理支付结果通知。例如:

@RestController
public class PayResultNotifyController {
    @Autowired
    private WeixinPayService weixinPayService;

    @PostMapping("/pay/notify")
    public String payResultNotify(@RequestBody String xmlData) throws WxPayException {
        return weixinPayService.processPayResultNotify(xmlData);
    }
}

在上面的代码中,PayResultNotifyController接收支付结果通知,并调用WeixinPayService的processPayResultNotify方法处理支付结果通知。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值