收藏
回答

为什么在用sdk 的服务商支付时报空指针异常?


public JsapiService createJsapiService(WxPayMerchant wxPayMerchant) {
    if (wxPayMerchant == null) {
        throw new IllegalArgumentException("支付商户信息不能为空");
    }

    String merchantId = wxPayMerchant.getMerchantId();
    String cacheKey = merchantId + "_jsapi";

    return jsapiServiceCache.computeIfAbsent(cacheKey, k -> {
        Config config = createWeChatPayConfig(wxPayMerchant);
        return new JsapiService.Builder().config(config).build();
    });
}


public Config createWeChatPayConfig(WxPayMerchant wxPayMerchant) {
    if (wxPayMerchant == null) {
        throw new IllegalArgumentException("支付商户信息不能为空");
    }

    String merchantId = wxPayMerchant.getMerchantId();
    String cacheKey = merchantId + "_config";

    return configCache.computeIfAbsent(cacheKey, k -> {
        try {
            log.info("创建微信支付配置,商户号: {}", merchantId);

            RSAAutoCertificateConfig.Builder builder = new RSAAutoCertificateConfig.Builder()
                    .merchantId(merchantId)
                    .merchantSerialNumber(wxPayMerchant.getMerchantSerialNumber() != null ?
                            wxPayMerchant.getMerchantSerialNumber() : "")
                    .apiV3Key(wxPayMerchant.getApiKey());
            // 处理证书路径
            String certPath = wxPayMerchant.getCertData();
            builder.privateKey(certPath);
            Config config = builder.build();
            log.info("微信支付配置创建成功,商户号: {}", merchantId);
            return config;
        } catch (Exception e) {
            log.error("创建微信支付配置失败,商户号: {}", merchantId, e);
            throw new RuntimeException("创建微信支付配置失败: " + e.getMessage(), e);
        }
    });
}


// 发起支付请求
PrepayResponse response = jsapiService.prepay(request);

构建支付配置成功,但是在发起prepay请求的时候,报错空指针,这是为什么?

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

1 个回答

  • Mr.Zhao
    Mr.Zhao
    09-24

    debug下源码自己看看

    09-24
    有用 1
    回复
登录 后发表内容