【问题标题】:Stripe: Add metadata to subscription on creationStripe:在创建时将元数据添加到订阅
【发布时间】:2017-04-02 23:35:30
【问题描述】:

所以我最近一直在尝试学习 Stripe API……我进展缓慢,但在元数据信息方面遇到了一些障碍。

我希望实现的是在创建订阅和客户时向订阅添加元数据。

这是创建客户和订阅的原始脚本:

$customer = \Stripe\Customer::create(array(
               'email' => $_POST['stripeEmail'],
               'source'  => $_POST['stripeToken'],
               'customer' => $randomID,
               'plan' => $item
              ));

在文档中我可以看到有多个区域可以添加更多信息?示例:

Stripe\StripeObject JSON: {
  "id": "sub_9aZ6q72UQs7664",
  "object": "subscription",
  "application_fee_percent": null,
  "cancel_at_period_end": false,
  "canceled_at": null,
  "created": 1479520145,
  "current_period_end": 1482112145,
  "current_period_start": 1479520145,
  "customer": "XXXXXXX",
  "discount": null,
  "ended_at": null,
  "livemode": false,
  "metadata": {
  },
  "plan": {
    "id": "AdFree",
    "object": "plan",
    "amount": 700,
    "created": 1479261871,
    "currency": "gbp",
    "interval": "month",
    "interval_count": 1,
    "livemode": false,
    "metadata": {
    },
    "name": "AdFree Hosting",
    "statement_descriptor": "WEBSITE",
    "trial_period_days": null
  },
  "quantity": 1,
  "start": 1479520145,
  "status": "active",
  "tax_percent": null,
  "trial_end": null,
  "trial_start": null
}

我感兴趣的是两个metadata 元素。我想出的第一个是Customer metadata,可以像这样添加......

$customer = \Stripe\Customer::create(array(
               'email' => $_POST['stripeEmail'],
               'source'  => $_POST['stripeToken'],
               'customer' => $randomID,
               'plan' => $item,
               'metadata' => array("test1" => "test2", "testa" => "testb")
              ));

虽然我希望将信息添加到第二个元数据标记,以便将其添加到"plan" (subscription)

我查遍了,似乎找不到任何答案。我希望有人能把我推向正确的方向。

我也阅读了文档,但在此处找不到任何相关帮助,但可以在此处找到文档:

https://stripe.com/docs/api#create_subscription

【问题讨论】:

    标签: php api metadata payment subscriptions


    【解决方案1】:

    我最终通过创建两个单独的请求来实现这一点。看起来好像没有一种方法可以使用一个请求执行相同的操作,您必须将客户和订阅分开。

    $randomID = mt_rand(10000000, 99999999);     
    
    $customer = \Stripe\Customer::create(array(
          'email' => $_POST['stripeEmail'],
          'source'  => $_POST['stripeToken'],
          'customer' => $randomID
    ));
    
    $subscription = \Stripe\Subscription::create(array(
          'customer' => $randomID,
          'plan' => $item,
          'metadata' => array("website_ref" => $website_ref, "user_id" => $user_id)
    ));
    

    【讨论】:

    • 很好,谢谢。您可以让 Stripe 为您处理,而不是为客户 ID 生成随机数 - 创建客户时不要指定 ID,然后在创建订阅时您可以访问 Stripe 在$customer['id']
    猜你喜欢
    • 2021-03-11
    • 2016-03-10
    • 1970-01-01
    • 2020-10-19
    • 2020-09-18
    • 2018-10-20
    • 1970-01-01
    • 2014-04-08
    • 2021-04-10
    相关资源
    最近更新 更多