Java 对接微信支付v3版本(APP支付)

本文介绍了Java对接微信支付v3版本的APP支付步骤,包括在微信开放平台获取AppID和AppSecret,商户平台注册并设置密钥,下载证书文件,配置pom.xml和application.yml,以及Java代码实现的关键点,如签名和参数封装等。
摘要由CSDN通过智能技术生成

前言

APP支持微信支付遇到的二三事。

一、准备工作

到微信开放平台提交APP,一系列操作(微信开放平台获取应用AppID及AppSecret),创建应用,等待审批,审批通过后获取到AppID。进入应用中开通微信支付。
到微信商户平台注册成为商户,并在【API安全】设置密钥,API v3的也要设置秘钥,具体流程网上也有,这里就不复述了。下载证书文件解压后得到 apiclient_cert.p12,apiclient_cert.pem,apiclient_key.pem(私钥)。将文件在本地,后续要生成平台证书需要用,这个后续会说。

二、配置文件

pom.xml引入依赖

	<ijapy.version>2.7.4</ijapy.version>

	<dependency>
           <groupId>com.github.javen205</groupId>
           <artifactId>IJPay-WxPay</artifactId>
           <version>${ijapy.version}</version>
       </dependency>

application.yml

v3:
  #由微信生成的应用ID
  appId: 
  #商户号
  mchId: 
  #api秘钥
  apiKey: 
  #apiv3秘钥
  apiKey3: 
  #秘钥 这里需要用绝对路径
  keyPath: D://cert//apiclient_key.pem 
  #CA证书 格式.pem 这里需要用绝对路径
  certPath: D://cert//apiclient_cert.pem
  #CA证书 格式.12这里需要用绝对路径
  certP12Path: D://cert//apiclient_cert.p12
  #平台证书 格式.pem 这里需要用绝对路径
  platformCertPath: D://cert//platformCert.pem
  # 支付回调地址
  domain: 

二、Java代码

WxPayV3Bean.java 需要get和set

@Component
@ConfigurationProperties(prefix = "v3")
public class WxPayV3Bean {
   
    private String appId;
    private String keyPath;
    private String certPath;
    private String certP12Path;
    private String platformCertPath;
    private String mchId;
    private String apiKey;
    private String apiKey3;
    private String domain;
    ...
}

WxPayV3Controller.java

@Controller
@RequestMapping("v3")
@Api(tags = "微信支付相关接口")
public class WxPayV3Controller{
   
	private final Logger log = LoggerFactory.getLogger(this.getClass());
	@Autowired
    private WxPayV3Bean wxPayV3Bean;
    
	private String serialNo;
	/**
     * 获取证书序列号
     * @return
     */
	private String getSerialNumber() {
   
        if (StrUtil.isEmpty(serialNo)) {
   
            // 获取证书序列号
            X509Certificate certificate = PayKit.getCertificate(FileUtil.getInputStream(wxPayV3Bean.getCertPath()));
            serialNo = certificate.getSerialNumber().toString(16).toUpperCase();
        }
        return serialNo;
    }
    /**
     * 该接口是生成平台证书,根据配置配件中所填地址保存。后续证书都需要上传到服务器上。
     */
	@RequestMapping("/get")
    @ResponseBody
    public String v3Get() {
   
        // 获取平台证书列表
        try {
   
            IJPayHttpResponse response = WxPayApi.v3(
                    RequestMethod.GET,
                    WxDomain.CHINA.toString(),
                    WxApiType.GET_CERTIFICATES.toString(),
                    wxPayV3Bean.getMchId(),
                    getSerialNumber(),
               
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值