英文:
Can I add a custom Id to Session::create so I can retrieve it in a webhook?
问题
基本上,按照 Stripe 文档,您可以创建一个结帐会话:
$checkout_session = \Stripe\Checkout\Session::create([
'line_items' => [[
'price' => $prices->data[0]->id,
'quantity' => 1,
]],
'mode' => 'subscription',
'success_url' => $YOUR_DOMAIN . '/success.html?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
]);
用户将被重定向到 Stripe,完成交易,然后重定向回网站,webhook
会触发相关事件。
现在,在 webhook 监听器中,您可以获取有关付款和客户的信息,但我不知道在我的端上是哪个客户。
所以,我可以在 Session::create
中附加一些自定义数据,以便在服务器上的 webhook 监听器中识别哪个用户进行了购买吗?
英文:
Basically, following the stripe docs, you create a checkout session
$checkout_session = \Stripe\Checkout\Session::create([
'line_items' => [[
'price' => $prices->data[0]->id,
'quantity' => 1,
]],
'mode' => 'subscription',
'success_url' => $YOUR_DOMAIN . '/success.html?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
]);
The user gets redirected to stripe, completes the transaction, gets redirected back to the website, and the events
for the webhook
fire.
Now in the webhook listener, you can get the info about the payment and customer, but I have no idea who that customer is on my end.
So, can I attach some custom data to the Session::create
so I can identify witch user made the purchase in the webhook listener on the server ?
答案1
得分: 1
您可以在创建 Stripe 会话时传递一个 metadata
对象,其中包含您希望添加的所有自定义数据,例如您数据库中的 customerId
。当触发 Webhook 时,Stripe 将与此处列出的其他字段一起发布 metadata
对象。
因此,您的代码应该如下所示:
$checkout_session = \Stripe\Checkout\Session::create([
'line_items' => [[
'price' => $prices->data[0]->id,
'quantity' => 1,
]],
'mode' => 'subscription',
'success_url' => $YOUR_DOMAIN . '/success.html?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
'metadata' => [
'customerId' => 'some-value'
]
]);
英文:
You can pass a metadata
object in your session create call to Stripe with all custom data that you'd like to add for eg, customerId
of your database. When the webhook is triggered, stripe will post the metadata
object along with other fields listed here.
So your code should look like
$checkout_session = \Stripe\Checkout\Session::create([
'line_items' => [[
'price' => $prices->data[0]->id,
'quantity' => 1,
]],
'mode' => 'subscription',
'success_url' => $YOUR_DOMAIN . '/success.html?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
'metadata' => [
'customerId' => 'some-value'
]
]);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论