拉拉维尔收银员 它不会自动创建订阅



这是代码:

<?php
namespace AppHttpControllers;
use InertiaInertia;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
class BillingController extends Controller
{
public function index(Request $request) {
return Auth::user()
->newSubscription('default', 'price_#################')
->checkout();
}
}

它正确地重定向我在stripe的结帐页面,它正确地处理支付和重定向我回到我的网站。我实际上可以在stripe的面板中看到活动订阅,但我的网站帐户上没有活动订阅。

>>> User::first()->subscriptions;
=> IlluminateDatabaseEloquentCollection {#4476
all: [],
}
>>> User::first()->subscribed('default');
=> false

在Laravel文档中有一点说它会自动处理订阅关联(我猜是通过一个神奇的内部方法),但它没有工作。

Stripe的CLI在我的支付操作中捕获了这些事件:

2021-10-19 23:34:16   --> charge.succeeded [evt_############]
2021-10-19 23:34:16   --> checkout.session.completed [evt_############]
2021-10-19 23:34:16   --> invoice.created [evt_############]
2021-10-19 23:34:16   --> invoice.finalized [evt_############]
2021-10-19 23:34:16   --> customer.subscription.created [evt_############]
2021-10-19 23:34:17   --> invoice.updated [evt_############]
2021-10-19 23:34:17   --> customer.subscription.updated [evt_############]
2021-10-19 23:34:17   --> invoice.paid [evt_############]
2021-10-19 23:34:17   --> invoice.payment_succeeded [evt_############]
2021-10-19 23:34:17   --> payment_intent.succeeded [evt_############]
2021-10-19 23:34:17   --> payment_intent.created [evt_############]

我错过了什么?我应该手动监听customer.subscription.created并使用我自己的逻辑吗?

你做得很好,但是你需要用新的/更新的代码来更新你的WebhookController.php代码从vendorlaravel收银员srcHttpControllersWebhookController.php

。如果你检查这两个文件,你会注意到函数handleccustomersubscriptioncreatedhandleCustomerSubscriptionUpdated已更改,以反映订阅项支持等

所以把这些函数复制到你的WebhookController.php中,如果你有一些自定义逻辑,可以根据你的需要进行更新。

最新更新