让支付更简单 Sping Boot 对接微信支付V3 (Java详细教程)

相关jar包

        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-pay</artifactId>
            <version>4.4.9.B</version>
        </dependency>

添加相关配置

package com.yz.utils.pay;

import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
@ConditionalOnClass(WxPayService.class)
@AllArgsConstructor
@Slf4j
public class WxPayConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public WxPayService wxService() {
        WxPayConfig payConfig = new WxPayConfig();
        payConfig.setApiV3Key(StringUtils.trimToNull(WxPayProConfig.mchKey));
        payConfig.setAppId(StringUtils.trimToNull(WxPayProConfig.appId));
        payConfig.setMchId(StringUtils.trimToNull(WxPayProConfig.mchId));
        payConfig.setMchKey(StringUtils.trimToNull(WxPayProConfig.mchKey));
        payConfig.setPrivateKeyContent(WxPayProConfig.privateKey.getBytes());
        payConfig.setPrivateCertContent(WxPayProConfig.certPem.getBytes());
        //payConfig.setSignType("HMAC-SHA256");
        payConfig.setSignType("MD5");

        payConfig.setKeyPath("D:\\developApp\\project\\camping\\src\\main\\resources\\apiclient_cert.p12");
        //payConfig.setKeyPath("/usr/project/file/apiclient_cert.p12");

        // 可以指定是否使用沙箱环境
        payConfig.setUseSandboxEnv(false);
        WxPayService wxPayService = new WxPayServiceImpl();
        wxPayService.setConfig(payConfig);
        log.debug("wxConfig:{}", payConfig);
        return wxPayService;
    }
}

服务层注入 wxService

封装好参数直接调用createOrderV3就可以了

import com.github.binarywang.wxpay.service.WxPayService;

@Autowired
private WxPayService wxService;

wxService.createOrderV3();

回调处理 直接在notifyResult 可以拿到支付单号 


    @RequestMapping("/goodsNotify")
    public String goodsNotify(@RequestBody String xmlData) throws WxPayException, IOException {
    WxPayOrderNotifyV3Result notifyResult = wxService.parseOrderNotifyV3Result(xmlData, null);
        //处理业务
    }

另外wxService还有很多方法,比如退款、提现、转账等。

在您使用微信支付的过程中,务必要遵循微信支付官方文档中的规范和安全要求。确保您的代码和交易流程符合最佳实践,以保障支付的安全性和可靠性。

希望本文对您有所帮助,并且能够激发您在微信支付领域的进一步探索。随着技术的不断发展,支付领域也在不断演进,我们期待看到更多创新和便捷的支付解决方案的出现。

如果您在实际应用中遇到任何问题或有任何反馈,欢迎随时与我们分享。祝愿您在微信支付的开发和使用过程中取得成功!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值