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请求的时候,报错空指针,这是为什么?

debug下源码自己看看