使用 Stripe 将元数据存储在订阅中

And*_*wby 0 stripe-payments

我正在尝试弄清楚如何将元数据直接存储到 Stripe CC 支付订阅中。我正在使用 PHP SDK 并且有:

  $test = $stripe->checkout->sessions->create([
      'customer_email' => $_GET["who"],
      'success_url' => $success_url,
      'payment_method_types' => ['card'],
      'cancel_url' => "https://www.example.com",
      'line_items' => [
        [
          'price' => $price_plan_id,
          'quantity' => 1,
        ],
      ],
      'payment_intent_data' => [
        'metadata' => [
            'who' => $_GET["who"],
            'total' => $_GET["total"],
            'period' => $_GET["period"],
            'description' => $_GET["description"],
            'district' => $_GET["district"],
            'what' => $_GET["what"],
            'ip' => $_SERVER["REMOTE_ADDR"]
        ]
      ],
      'mode' => $mode 'subscription',
    ]);
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

您无法通过payment_intent_data模式subscription

我试过这样做:

  $test = $stripe->checkout->sessions->create([
      'customer_email' => $_GET["who"],
      'success_url' => $success_url,
      'payment_method_types' => ['card'],
      'cancel_url' => "https://www.example.com",
      'line_items' => [
        [
          'price' => $price_plan_id,
          'quantity' => 1,
        ],
      ],
      'metadata' => [
          'who' => $_GET["who"],
          'total' => $_GET["total"],
          'period' => $_GET["period"],
          'description' => $_GET["description"],
          'district' => $_GET["district"],
          'what' => $_GET["what"],
          'ip' => $_SERVER["REMOTE_ADDR"]
      ],
      'mode' => $mode 'subscription',
    ]);
Run Code Online (Sandbox Code Playgroud)

虽然它有效,但它没有分配给订阅(当您查看它时,元数据为空)

我该如何传递这个?我想将此数据存储在订阅元素中(不仅仅是付款)

谢谢

小智 5

您希望通过在以下位置设置元数据将元数据传递给生成的订阅对象subscription_data.metadata: https: //stripe.com/docs/api/checkout/sessions/create#create_checkout_session-subscription_data-metadata

  • 文档建议 `subscription_data.metadata` 应该是一个字典,但是当我尝试将 `subscription_data={"metadata": {"user_id": user.id}},` 传递给 `stripe.checkout.Session.create` 时,没有结账后,元数据会附加到生成的订阅中。你知道我做错了什么吗? (2认同)