我正在迁移 Laravel Cashier 设置以利用 Stripe 结帐功能。我的平台提供两种服务:订阅和一次性收费。这些一次性费用之一是补充用户帐户中的短信积分的能力,最初,我使用的是
invoicePrice
方法并传递一些元数据:
$addonItemPrice = Cashier::stripe()->prices->retrieve($addonItem->stripe_id);
Auth::user()->invoicePrice(
$addonItem->stripe_id, 1, [
'metadata' => [
'is_addon' => true,
'is_sms_addon' => true,
'created_at' => Carbon::now(),
'user_id' => Auth::id(),
'addon_id' => $addonItem->id,
'addon_quantity' => $addonItem->quantity,
'apply_credit_balance' => true,
],
]
);
然后,我正在侦听一个 Webhook 事件,以确保确定将 SMS 积分添加到他们的帐户中:
invoice.payment_succeeded
但是,我现在正在迁移到使用 Stripe 的结帐,所以现在看起来像:
/**
* Handle received Stripe webhooks.
*/
public function handle(WebhookReceived $event)
{
match ($event->payload['type']) {
'customer.subscription.created' => $this->handleSubscriptionCreated($event->payload),
'invoice.payment_succeeded' => $this->handleInvoicePaymentSucceeded($event->payload),
default => null
};
}
但我现在根本没有收到
$charge = $user->checkout([$addonItemPrice->id => 1], [
'success_url' => "$frontendURL"."account/billing/checkout/success/",
'cancel_url' => "$frontendURL"."account/billing/add-ons/",
'metadata' => [
'is_addon' => true,
'is_sms_addon' => true,
'created_at' => Carbon::now(),
'user_id' => Auth::id(),
'addon_id' => $addonItem->id,
'addon_quantity' => $addonItem->quantity,
'apply_credit_balance' => true,
],
]);
事件。看来我的元数据现在与
invoice.payment_succeeded
事件相关联。我应该迁移到这个新活动,还是这会不可靠?我只想在发票付款成功时触发此类事件
checkout.session.completed
会触发)。
我不熟悉 laravel 库支持的内容,但是看看这个invoice.payment_succeeded
函数的参数,它可能与
Stripe
checkout
函数是一对一的。在这种情况下,您可能会通过以下参数得到您想要的:
checkout.sessions.create