springboot开发接入微信支付,pom.xml引入:
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId>
<version>0.2.17</version>
</dependency>
@Getter
@Configuration
public class WxPayConfig {
@Value("${wx.pay.appId}")
private String appId;
@Value("${wx.pay.mchId}")
private String mchId;
/**
* 设置 API v3 密钥(32位)
*/
@Value("${wx.pay.apiV3Key}")
private String apiV3Key; // V3 接口
/**
* 设置 商户私钥 的路径
* apiclient_key.pem
*/
@Value("${wx.pay.privateKeyPath}")
private String privateKeyPath;
/**
* 设置 商户API证书(公钥证书) 的路径
* apiclient_cert.pem
*/
@Value("${wx.pay.privateCertPath}")
private String privateCertPath;
/**
* API证书管理: 证书序列号
*/
@Value("${wx.pay.certSerialNo}")
private String certSerialNo;
@Value("${wx.pay.notifyUrl}")
private String notifyUrl;
/**
* 构建微信 SDK 的自动证书配置对象
*/
@Bean
public RSAAutoCertificateConfig wechatPayConfig() {
System.out.println("privateKeyPath:" + privateKeyPath);
return new RSAAutoCertificateConfig.Builder()
.merchantId(mchId)
.privateKeyFromPath(privateKeyPath)
.merchantSerialNumber(certSerialNo)
.apiV3Key(apiV3Key)
.build();
}
/**
* 注入商家转账服务(TransferBatchService)
*/
@Bean
public TransferBatchService transferBatchService(RSAAutoCertificateConfig wechatPayConfig) {
return new TransferBatchService.Builder()
.config(wechatPayConfig)
.build();
}
}
调用转账功能:
public InitiateBatchTransferResponse transfer(String openid, Long amount) {
TransferDetailInput detail = new TransferDetailInput();
detail.setOutDetailNo(generateOutBatchNo());
detail.setTransferAmount(amount);
detail.setTransferRemark("现金奖励");
detail.setOpenid(openid);
InitiateBatchTransferRequest request = new InitiateBatchTransferRequest();
request.setAppid(wxPayConfig.getAppId());
request.setOutBatchNo(generateOutDetailNo());
request.setTransferSceneId("1000");
request.setBatchName("现金奖励");
request.setBatchRemark("新会员有礼");
request.setTotalAmount(amount);
request.setTotalNum(1);
request.setTransferDetailList(List.of(detail));
request.setNotifyUrl(wxPayConfig.getNotifyUrl());
log.info("转账开始 openid:{} request:{}", openid, JsonUtil.toJsonString(request));
InitiateBatchTransferResponse result = null;
try {
result = transferBatchService.initiateBatchTransfer(request);
log.info("转账成功 openid:{} result:{}", openid, result);
} catch (Exception e) {
log.error("转账失败 openid:{} error: {}", openid, e.getMessage(), e);
}
return result;
}
现在报错:
httpResponseBody[{"code":"NO_AUTH","message":"当前商户号接入升级版本功能,暂不支持使用升级前功能,请在产品中心-商家转账-前往功能查看接口文档"}]
请各个大侠们帮忙看看,商户已经申请下来了商家转账产品,java SDK用的也是最新的,不知道为啥还是报错???
使用自定义请求调https://pay.weixin.qq.com/doc/v3/merchant/4012062524