Php 条带webhook响应时间
客户付款时,以下条目存储到数据库中:Php 条带webhook响应时间,php,laravel,laravel-5,stripe-payments,webhooks,Php,Laravel,Laravel 5,Stripe Payments,Webhooks,客户付款时,以下条目存储到数据库中: DB::table('subscriptions')->insert([ 'user_id' => $user->id, 'quantity' => 1, 'stripe_id' => $request->paymentIntent, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:
DB::table('subscriptions')->insert([
'user_id' => $user->id,
'quantity' => 1,
'stripe_id' => $request->paymentIntent,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s')
]);
$paymentInstance = DB::table('subscriptions')->where('stripe_id',$paymentIntent->id)->first();
记录已成功保存。在收听Stripe webhookpayment\u intent.successed
时,我想从webhook中获取paymentIntent Id并在我的数据库中查找记录:
DB::table('subscriptions')->insert([
'user_id' => $user->id,
'quantity' => 1,
'stripe_id' => $request->paymentIntent,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s')
]);
$paymentInstance = DB::table('subscriptions')->where('stripe_id',$paymentIntent->id)->first();
变量$paymentIntent
直接在webhook中初始化:
$event = \Stripe\Webhook::constructEvent(
$payload, $sig_header, $endpoint_secret
);
...
switch ($event->type) {
case 'payment_intent.succeeded':
$paymentIntent = $event->data->object;
// Usage of $paymentIntent->id....
第一个调用响应为
null
(echo$paymentInstance)。当我在Stripe仪表板中点击resend时,我得到了期望的结果这是怎么可能的?初始记录的存储速度必须比webhook第一次到达服务器的速度更快——或者我弄错了?变量$paymentIntent
是如何初始化的?在代码运行并保存完付款之前,事件肯定有可能到达您的手中创建后的意图id。@levi我用这个缺失的部分更新了我的问题。@koopajah这真的不应该发生。如果第一次呼叫成功,那么就不会有第二次甚至第三次尝试,我也无法相应地处理响应。@Andreas,正如@koopajah所说,很难判断问题的原因,肯定有可能是某个地方被中断了。我的建议是,无论您希望向数据库发送什么附加数据,都可以将这些数据添加到前端的条带请求主体中。因此,您可以从$paymentIntent
中检索。