为何带区检出不将客户名称添加到客户记录?

时间:2019-09-05 18:01:24

标签: php stripe-payments

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

在我的checkout_submission_completed事件中,我有一个Webhook试图检索emailname,以便在成功购买后可以采取其他措施。

这非常困难。

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

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

好的,没什么大不了的。

姓名呢?好吧,这是真正有趣的地方。点击表格付款提交按钮后,Stripe创建一个客户,完成一次成功的收费。但是在“客户”对象中没有名称。是的,没有名字。在今天与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'];

我有更好的方法吗?

谢谢, 布莱恩

1 个答案:

答案 0 :(得分:1)

我认为,收集的名称是持卡人的名称,并且与卡[0]关联,而不与客户关联。客户最终可能会使用多种卡或其他付款方式,并且他们可能合理地拥有不同的持卡人姓名。因此,默认情况下,该信息不会转移给客户。

您的方法通常看起来不错-我将亲自使用API​​的扩展功能[1],因此您可以通过一次调用来获取Checkout会话及其付款和客户的完整上下文,从而跳过一堆API调用。 webhook处理程序。

endpointId

[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