【问题标题】:Preserve types in Stripe Plan metadata在 Stripe Plan 元数据中保留类型
【发布时间】:2019-12-28 17:10:17
【问题描述】:

我正在使用Stripe 创建一个Plan,我将一些字段附加到metadata

Stripe 似乎总是将元数据值转换为Strings。我想保留这些类型。

我制定了这样的计划:

const basic = await stripe.plans.create({
  product: product.id,
  nickname: 'Foo Plan',
  amount: 1000,
  metadata: {
    foo: true, // Boolean
    bar: 10 // Number
  }
})

但是,当取回 Plan 时,元数据字段如下所示:

metadata: {
  foo: "true", // String
  bar: "10" // String
}

一种解决方案是将元数据存储为单个 JSON 并解析回来,但我想避免这种情况。

【问题讨论】:

    标签: stripe-payments


    【解决方案1】:

    我最终存储了一个 JSON,然后像这样解析:

    const basic = await stripe.plans.create({
      product: product.id,
      nickname: 'Foo Plan',
      amount: 1000,
      metadata: {
        restrictions: JSON.stringify({
          foo: true,
          bar: 10
        })
      }
    })
    
    const getPlan = planId => stripe.plans.retrieve(planId)
      .then(data => Object.assign(data, {
        metadata: JSON.parse(data.metadata.restrictions)
      }))
    
    const plan = await getPlan('id-foo-plan')
    console.log(plan.metadata)
    

    仅供参考,来自https://stripe.com/docs/api/metadata

    您最多可以指定 50 个键,键名最长为 40 个字符,值最长为 500 个字符

    【讨论】:

      【解决方案2】:

      metadata 始终是字符串键和字符串值的字典。

      我会避免将元数据存储为单个 JSON 字符串,因为元数据值的最大长度为 500 个字符,并且通常将 JSON 存储在值字段中会导致与超出此限制相关的错误。

      https://stripe.com/docs/api/metadata

      【讨论】:

        猜你喜欢
        • 2018-11-20
        • 1970-01-01
        • 1970-01-01
        • 2021-07-19
        • 1970-01-01
        • 1970-01-01
        • 2020-05-11
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多