我正在尝试从Stripe Checkout表单提交中检索各种数据,而我只是在使用Stripe仪表板中提供的Stripe Checkout代码。
在我的checkout_submission_completed
事件中,我有一个Webhook试图检索email
,name
,以便在成功购买后可以采取其他措施。
这非常困难。
这是我如何检索电子邮件(其中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'];
我有更好的方法吗?
谢谢, 布莱恩
答案 0 :(得分:1)
我认为,收集的名称是持卡人的名称,并且与卡[0]关联,而不与客户关联。客户最终可能会使用多种卡或其他付款方式,并且他们可能合理地拥有不同的持卡人姓名。因此,默认情况下,该信息不会转移给客户。
您的方法通常看起来不错-我将亲自使用API的扩展功能[1],因此您可以通过一次调用来获取Checkout会话及其付款和客户的完整上下文,从而跳过一堆API调用。 webhook处理程序。
endpointId