Stripe checkout 不接受元数据

sev*_*een 10 php stripe-payments

我已经集成了 Stripe checkout(最新版本)并且需要发送额外的数据,以便我可以协调稍后的 webhook。

Stripe 拒绝元数据并出现以下错误

Fatal error: Uncaught exception 'Stripe\Error\InvalidRequest' with message 'Received unknown parameter: metadata' 
Run Code Online (Sandbox Code Playgroud)

我部分编辑的代码如下所示

$object = \Stripe\Checkout\Session::create([
    'success_url' => 'www/payment_processor.php?action=success',
    'cancel_url' => 'www/payment_processor.php?action=cancel',
    'payment_method_types' => ['card'],
    'customer_email' => $email,
    'metadata' => ['user_id' => $user_id],
    'line_items' => [[
        'amount' => $amount,
        'currency' => $currency,
        'name' => 'Purchase',
        'description' => $description,
        'quantity' => 1,
    ]]
]);
Run Code Online (Sandbox Code Playgroud)

我希望元数据被接受并与 webhook 一起返回,如Stripe 文档中所述

Mat*_*att 8

对于仍然遇到此问题的任何人,即使使用 2020-08-27 API ,仅放置一个client_reference_idormetadata参数对我也不起作用。

添加payment_intent_data元数据是让它为我工作的原因。您可以尝试添加以下代码:

'payment_intent_data'=>['metadata' => ["order_id" => $orderID, "type" => "myProduct"],
Run Code Online (Sandbox Code Playgroud)


Fit*_*tzi 7

链接文档的第一句话指出:

\n
\n

可更新的 Stripe 对象\xe2\x80\x94 包括帐户、费用、客户、付款意图、退款、订阅和转移\xe2\x80\x94 具有元数据参数。

\n
\n

您没有创建这些,您正在创建一个会话

\n

更新
\n正如 Oliver Dixon 指出的那样,Stripe Sessions 现在确实具有元数据属性(尽管元数据文章中仍然没有说明)

\n

  • 如果我正确理解您的评论,您可能会寻找会话对象的 *client_reference_id* 属性:“引用结账会话的唯一字符串。这可以是客户 ID、购物车 ID 或类似的,并且可用于使会话与您的内部系统保持一致。” (3认同)

w00*_*00t 7

您无法将元数据附加到Session,但可以将元数据附加到将在会话中创建的payment_intent或。setup_intent

请参阅文档,将其传递为payment_intent_data.metadata.

请注意,Stripe警告您不要将敏感数据放入 中metadata,因此,如果您想存储客户端名称等,最好将其放入数据库中的唯一键下,然后将该键作为 传递client_reference_id


小智 6

你可以这样做

stripe.checkout.sessions.create({
    payment_intent_data: {
        application_fee_amount: this.booking_fee,
        metadata: {
            key1 : value1,
            key2 : value2,
            .
            .
            key N : value N
        }
    }
})
Run Code Online (Sandbox Code Playgroud)


Dav*_*han 5

截至 2020 年 10 月,会话对象具有元数据。

  • 是的,但似乎没有正确返回。然而,通过“ payment_intent_data.metadata ”传递它是可行的。或者也许只是我。 (6认同)