收藏
回答

微信支付从平台证书切换成微信支付公钥,回调的Wechatpay-Serial总是平台证书序列号

正准备从平台证书序列号切换到公钥支付,但是支付回调通知的Wechatpay-Serial【总是】原来的平台证书序列号,而不是以PUB_KEY_ID_开头的公钥。

以下是支付参数:

1、使用RSAPublicKeyConfig构建配置:

new RSAPublicKeyConfig.Builder()

        .merchantId(mchId) //微信支付的商户号

        .privateKeyFromPath(mchCertPath) // 商户API证书私钥的存放路径

        .publicKeyFromPath(publicKeyPath) //微信支付公钥的存放路径

        .publicKeyId(publicKeyId) //微信支付公钥ID

        .merchantSerialNumber(mchCertSerial) //商户API证书序列号

        .apiV3Key(v3Key) //APIv3密钥

        .build();

2、使用拦截器在请求头加上了Wechatpay-Serial:

public class WechatPaySerialInterceptor implements Interceptor {

    private final String publicKeyId;

    public WechatPaySerialInterceptor(String publicKeyId) {

        this.publicKeyId = publicKeyId;

    }

    @Override

    public @NotNull Response intercept(Chain chain) throws IOException {

        Request originalRequest = chain.request();

        Request requestWithHeader = originalRequest.newBuilder()

                .header("Wechatpay-Serial", publicKeyId)

                .build();

        return chain.proceed(requestWithHeader);

    }

}

3、更换进度:


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

2 个回答

  • 晓
    06-18

    请问我使用 sdk 调用的下单的时候,总是返回以下错误是怎么回事?publicKeyId[PUB_KEY_ID_0113214043012xxxxxxxxxxx] and serialNumber[7B77373C3A93AA83xxxxxxxxxxxxxxxxxx] are not equal

    返回的serialNumber应该是publicKeyId啊,我调用的时候这里传的也是publicKeyId

    publicKeyId(publicKeyId) //微信支付公钥ID

    为什么下单返回变成了序列号,什么原因?

    06-18
    有用
    回复
  • Memory
    Memory
    06-16

    回调使用公钥的比例:是微信支付控制的,会按照第一天0.1%,第二天1%,第三天 5%,第四天10%,第五天20%,第六天50%,第七天 100% 的进度,自动灰度,商户不可以操作。灰度期间会按照上述比例使用公钥签名,剩余比例用平台证书签名,因此商户需要实现根据回调请求的 wechatpay-serial头来判断当前的回调是使用公钥还是平台证书,并使用对应的公钥或者平台证书验签。


    发起请求时的Wechatpay-Serial是做应答验证的,和回调不是一回事

    06-16
    有用
    回复 3
    • 明月别枝
      明月别枝
      06-16
      是的,我会根据回调的wechatpay-serial分别处理,但是文档说:【回调场景:微信支付会将签名所用平台证书序列号或微信支付公钥ID放入回调请求的HTTP头部 Wechatpay-Serial中。】而我的通知回调wechatpay-serial头一直是平台证书序列号,支付了几十笔,没有一笔的回调是PUB_KEY_ID_xxxxx公钥,所以就很疑惑。
      06-16
      回复
    • Memory
      Memory
      06-16回复明月别枝
      很明显你是第一天,比例是很低的
      06-16
      回复
    • 明月别枝
      明月别枝
      06-16回复Memory
      好的,我再观察几天,谢谢
      06-16
      回复
登录 后发表内容