wechatpay-apiv3/wechatpay-java

v3支付不能支持多商户

Closed this issue · 7 comments

您的功能请求与问题有关吗? 请描述您遇到的问题

有两个商户收款,但是v3版本不能初始化多个商户配置

描述您想要的解决方案

根据商户号自动初始化支付参数,证书

您还有其他的方案吗?

No response

其他信息

No response

其他方案 可以提供在CertificateProvider 接口 提供删除此 ConcurrentHashMap<BigInteger, X509Certificate> certificates =
new ConcurrentHashMap<>() 方法,重新构建支付参数不报错
RSAAutoCertificateConfig.Builder builder = new RSAAutoCertificateConfig.Builder();
//商户号
builder.merchantId(merchant.getMerchantNo())
.privateKey(merchant.getApiClientKey().split(",")[0])
.merchantSerialNumber(merchant.getMerchantSerialNo().split(",")[0])
//只能用pem
.apiV3Key(merchant.getApiKey())
.build();
//通过构造函数产生
beanDefinitionBuilder.addConstructorArgValue(builder);
// 注册bean
defaultListableBeanFactory.registerBeanDefinition(name, beanDefinitionBuilder.getRawBeanDefinition());

@xy-peng 多商户功能新增了吗?

一直是可以支持多个商户的,每个商户构造一个自己的 Config 即可。

你遇到了什么具体的问题吗?

服务商模式的支付回调// 如果已经初始化了 RSAAutoCertificateConfig,可直接使用
// 没有的话,则构造一个
NotificationConfig config = new RSAAutoCertificateConfig.Builder()
.merchantId(merchantId)
.privateKeyFromPath(privateKeyPath)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3key)
.build();
这里需要merchantId,我的业务场景是服务商下的特约商户进行支付,那么回调的时候这个merchantId该传什么值呢,如果传特约商户的merchantId,这时我有多个特约商户又该怎么确定是那个呢

我的建议是,不同的商户使用不同的回调路径,这样就能识别不同的商户了。例如,将商户号的摘要放到回调路径中。

我的建议是,不同的商户使用不同的回调路径,这样就能识别不同的商户了。例如,将商户号的摘要放到回调路径中。

大牛我这里有一个问题 不好解决 是我的商户配置是从mysql中读取的 考虑的问题就是如果修改了去重新创建RSAAutoCertificateConfig 但问题就在于微信并没有提供更新配置信息的方法 现在无法更新 如果您有什么建议请联系我 xiaoGdeweixin99 微信 谢谢

@timber0725 请见 #202#194