gpt4 book ai didi

php - 为什么 Stripe Checkout 不将客户名称添加到客户记录中?

转载 作者:行者123 更新时间:2023-12-03 16:22:50 24 4
gpt4 key购买 nike

我正在尝试从 Stripe Checkout 表单提交中检索各种数据,我只是使用 Stripe Dashboard 中提供的 Stripe Checkout 代码。

在我的 checkout_submission_completed事件我有我试图检索的 webhook email , name以便在成功购买后我可以采取其他行动。

这是令人惊讶的困难。

这是我如何检索电子邮件(其中 payload 是我的 webhook 收到的响应):

 $cust = $payload['data']['object']['customer'];
$custdata = \Stripe\Customer::retrieve($cust);
$email=$custdata->email;

好吧,没什么大不了的。

名字呢?好吧,这就是事情变得非常有趣的地方。点击表单支付提交按钮后,Stripe 会创建一个客户,完成一次成功的收费。但是在 Customer 对象中没有名称。是的,没有名字。在今天与 Stripe 的聊天中,他们没有做出任何解释,并表示他们会进一步调查。

结果表明,表单上输入的名称出现在 Stripe 对象中的唯一地方是 Payment Intent 对象中的 Payment Details 对象。

我是认真的。所以这就是我如何获取名称(使用 cust 来自以前的代码:
   $piid = $cust = $payload['data']['object']['payment_intent'];
$pi = \Stripe\PaymentIntent::retrieve($piid);
$name = $pi['charges']['data'][0]['billing_details']['name'];

有没有更好的方法来做到这一点?

谢谢,
布赖恩

最佳答案

我认为这个想法是收集的名称是持卡人姓名,并且与卡 [0] 相关联,而不是客户。客户最终可能会拥有多张卡或其他付款方式,而且他们可能都有不同的持卡人姓名。因此,默认情况下该信息不会转移到客户。

您的方法总体上看起来不错——我个人会使用 API 的扩展功能 [1],这样您就可以通过从 webhook 处理程序的一次调用中检索结帐 session 及其付款和客户的完整上下文来跳过一堆 API 调用。

$session  = \Stripe\Checkout\Session::retrieve(
$payload['data']['object']['id'],
["expand" => ["payment_intent", "customer"]]);

$cardholderName = $session['payment_intent']['charges']['data'][0]['billing_details']['name'];
\Stripe\Customer::update($session['customer'].id,
["name" => $cardholderName]);

[0] - https://stripe.com/docs/api/payment_methods/object?lang=php#payment_method_object-billing_details-name

[1] - https://stripe.com/docs/api/expanding_objects?lang=php

关于php - 为什么 Stripe Checkout 不将客户名称添加到客户记录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com