wechatpay-apiv3/wechatpay-apache-httpclient

[验签]通知回调场景,对项目集成了多商户的情况下应该提供更可靠的验签支持

GeTOUO opened this issue · 2 comments

目前sdk在处理主动请求和应答时,验签应该不会遇到问题。

但是如果项目中集成了多个商户,那么在接收到回调通知的时候,目前看来http报文在验签和解密前是无法知道该消息应该执行哪个商户的验签流程。

官方是不是可以考虑优化一下这个通知回调的参数?

比如增加一个商户号在http头部或解密前可读,或者在支付时允许提交回调时的透传参数用以回调时区分?

在没有以上依据时,目前我想到的办法是每个商户指定不同的回调地址,但其实我更想在一个接口里面处理这个回调请求。

不知道回调的url支不支持路径参数?如果我把回调url附加一个路径参数是允许的吗?

就像这样 https://hostport/notify/$mchid

$mchid 就是我的商户id

或者需不需要对$mchid 进行加密,转义处理或者 mapping 也行

就是这个意思:

@PostMapping("/event/{merchant}")
void payEvent(
            @RequestBody PayNotify notify,
            @PathVariable(value="merchant") MerchantEnum id,
            HttpServletRequest request) {
        String serial = request.getHeader(WeChatPayConst.SERIAL_HEADER);
        String signature = request.getHeader(...);
        String sign = request...;
        Merchant merchant = weChatPayTemplate.merchantOf(id);
        merchant .verify(serial, sign, signature);
        ...
}

目前是支持的吗?

如果我把回调url附加一个路径参数是允许的吗?

对。多商户的系统,可以这样设计URL。回调通知URL是下单时指定的,或者按商户配置的。

如果我把回调url附加一个路径参数是允许的吗?

对。多商户的系统,可以这样设计URL。回调通知URL是下单时指定的,或者按商户配置的。

好的明白