收藏
回答

商家转账提示:当前商户号接入升级版本功能,暂不支持使用升级前功能,请在产品中心-商家转账-前往功能查

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用的也是最新的,不知道为啥还是报错???

回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容