我想为我的用户提供将他们的利率锁定 X 年的能力。但是,这对于 Stripe API 或 Cashier 是不可能的。这就是为什么我必须在我的应用程序端这样做。为此,我需要一个 subscribed_at 列。我知道我可以直接从 Stripe 客户的订阅(字段 current_period_start)中获得它,但检索它需要太多时间,而且我将非常需要这个功能。因此,在我的订阅表中,我有 Cashier 所需的所有字段(stripe_id、stripe_active、...、subscription_ends_at),我想添加这个 subscribed_at 列。现在,我想在创建、恢复或取消订阅时自动更新此值。取消时,我需要将值设置为 NULL。
我不想(这不是一个好习惯)修改 Cashier 的代码。(在 StripeGateway.php 中有一个方法 updateLocalStripeData() 会针对这三个选项触发,但正如我所说,我不想修改它)。
我无法覆盖 StripeGateway.php 方法 updateLocalStripeData() 因为我的订阅模型没有扩展它。
到目前为止,唯一可行但我不太喜欢的解决方案是使用模型事件保存并在那里检索订阅的 current_period_start 字段并将其插入到我的订阅模型的 subscribed_at 字段中。
还有什么其他方法可以做到这一点?