Stripe CLI:如何使用嵌套元数据触发事件

Stripe CLI: How to trigger events with nested metadata

我正在使用 Stripe CLI 触发本地 webhook 事件。该命令允许我使用以下选项/语法设置元数据:

--add resource:path1.path2=value

我尝试创建的元数据结构如下所示:

{
    id: 1,
    artistId: 2,
    image: { 
        url: `https://somepath` 
    }
}

这是我的命令:

$ stripe trigger payment_intent.succeeded --add payment_intent:metadata.id=1 --add payment_intent:metadata.artistId=1 --add payment_intent:metadata.image.url=https://www.arweave.net/ij5O6dDlzxOuWHUnikZapq10kkeEVe_elLWvpfE6ado?ext=PNG
⣟ Checking for new versions... Setting up fixture for: payment_intent
Running fixture for: payment_intent
Trigger failed: Request failed, status=400, body={
  "error": {
    "message": "Invalid value type: {:url=\u003E\"https://www.arweave.net/ij5O6dDlzxOuWHUnikZapq10kkeEVe_elLWvpfE6ado?ext=PNG\"} must be a string",
    "param": "metadata",
    "type": "invalid_request_error"
  }
}

起初,我以为 URL 中的 . 破坏了语法。但是当我用 foo.

替换 URL 时,我得到了同样的错误

我想我一定是在路径语法上做错了什么。或者数据结构的深度可能有最大限制?

更新:

为了回避这个问题,我尝试使用 fixtures json file 来实现同样的目的,但没有成功。我得到了同样的错误,即使语法是 JSON 并且明确。我联系了 Stripe 支持,他们似乎也对这种行为感到困惑。我正在等待他们升级团队的回复。

image.url 键中的 . 给您带来了问题。 . 表示向下一个级别,但元数据参数不能像那样嵌套。

您可以将密钥修改为可接受的值,例如 image_urlimageURL,这应该可以解决您遇到的错误。 (image_url 帮了我大忙)

Stripe 支持确认元数据对象只能有键/值对,其中的值是字符串。我试图使用对象作为值来创建更复杂的数据结构,但这是不受支持的。 :-(

如果有人来这里寻找在元数据中添加多个项目的方法,您可以通过以下方式实现:

Stripe trigger payment_intent.succeeded --add payment_intent:metadata['key']=testing --add payment_intent:metadata['key2']=testing2