WxJava icon indicating copy to clipboard operation
WxJava copied to clipboard

[微信支付] 支持将原有的平台证书验签方式灰度到公私钥模式

Open zhanyan-Ader1y opened this issue 11 months ago • 4 comments

简要描述

对于2024-10月以前开通的微信支付商户来说, 将平台证书验签的方式切换到公私钥模式时 需要进行灰度. 目前已经实现了公私钥验签功能(PR: #3425 ).

微信支持的灰度方案

  • 如上文描述回调的灰度切换进度由微信支付自动控制,在7天左右完成;
  • 请求应答的切换进度由商户通过http的Wechatpay-Serial来控制
  • 若你的系统出现故障,可以点击“停止更换”,停止后将全部切换回平台证书,请谨慎操作

能力

需要通过一个配置项实现灰度的策略. 这个配置项需要具有以下的能力:

  • 在初始化时通过开关自由配置
  • 可配置灰度比例 (避免在单节点的服务直接切流)
  • 灰度可降级 (在商户 点击“停止更换”时, 避免由于验签方式切换为平台证书导致失败)

官方文档地址

4-2按场景将平台证书切换到公私钥模式

zhanyan-Ader1y avatar Dec 20 '24 07:12 zhanyan-Ader1y

在初始化时通过开关自由配置 可配置灰度比例 (避免在单节点的服务直接切流) 灰度可降级 (在商户 点击“停止更换”时, 避免由于验签方式切换为平台证书导致失败)

第一点可实现 第二点鉴于微信的机制, 开启了灰度切换后如果serial请求头不传或值有误则使用原有的平台证书 第三点应该在业务层做处理, 并不应该放到工具层中

zhanyan-Ader1y avatar Dec 23 '24 06:12 zhanyan-Ader1y

@[zhanyan-Ader1y] 你真是个sha狗,在3451里说3454给出解决方案,在3454里面又说弄个业务配置,HttpPost实体是在com.github.binarywang.wxpay.service.impl.WxPayServiceApacheHttpImpl#postV3(java.lang.String, java.lang.String)内部创建的,你特么不给业务传入http-header的入口,试问怎么传入??按理github人素质应该都可以,但是看到你这么3451与3454踢皮球的行为我真是受不了。get out出去吧,这么优秀的开源项目你不配加入!!!

MrWangLong avatar Jan 15 '25 07:01 MrWangLong

楼上的请注意文明交流,理性发言。

binarywang avatar Jan 16 '25 05:01 binarywang

@[zhanyan-Ader1y] 你真是个sha狗,在3451里说3454给出解决方案,在3454里面又说弄个业务配置,HttpPost实体是在com.github.binarywang.wxpay.service.impl.WxPayServiceApacheHttpImpl#postV3(java.lang.String, java.lang.String)内部创建的,你特么不给业务传入http-header的入口,试问怎么传入??按理github人素质应该都可以,但是看到你这么3451与3454踢皮球的行为我真是受不了。get out出去吧,这么优秀的开源项目你不配加入!!!

你有想法可以自己提PR, 不用在这里发癫. 你不理解我上文中的业务配置是什么也不怪你, 估计都没怎么看Issue内容

zhanyan-Ader1y avatar Feb 10 '25 02:02 zhanyan-Ader1y