Stripe payments “的目的是什么?”;v0“;Stripe webhook API中的签名方案?

Stripe payments “的目的是什么?”;v0“;Stripe webhook API中的签名方案?,stripe-payments,Stripe Payments,上的条带文档说明: 目前,唯一有效的签名方案是v1。为了帮助测试,Stripe为测试模式事件发送一个附加签名,该签名带有一个伪v0方案 Stripe-Signature: t=1492774577, v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd, v0=6ffbb59b2300aae63f272406069a9788598b792a944a07aba816edb039989a39 v0签名

上的条带文档说明:

目前,唯一有效的签名方案是
v1
。为了帮助测试,Stripe为测试模式事件发送一个附加签名,该签名带有一个伪
v0
方案

Stripe-Signature: t=1492774577,
    v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd,
    v0=6ffbb59b2300aae63f272406069a9788598b792a944a07aba816edb039989a39
v0
签名以何种方式帮助测试?我可以用它做什么


如何生成
v0
签名?它只是一个随机字符串,还是一些可以验证的HMAC摘要,类似于
v1
方案?

如果您正在构建自己的客户端来验证Stripe的webhook事件签名,那么
v0
方案可能很有用。它用于测试您的客户端是否忽略
条带签名
标题中的未知方案(或者,可能在将来某个时候,不推荐的方案)

v0
摘要不使用为端点生成的签名密钥;Stripe尚未发布用于创建它的机密,因此您无法验证它

Stripe自身包含一个忽略无效方案的测试用例。例如,在Ruby库中:

should "raise a SignatureVerificationError when there are no signatures with the expected scheme" do
  header = generate_header(scheme: "v0")
  e = assert_raises(Stripe::SignatureVerificationError) do
    Stripe::Webhook::Signature.verify_header(EVENT_PAYLOAD, header, "secret")
  end
  assert_match("No signatures found with expected scheme", e.message)
end