Laravel 收银员:新用户的一般试用不会显示在 Stripe 仪表板中
Laravel Cashier: generic trials for new users do not show in Stripe dashboard
我有一个注册端点,我可以在其中创建一个新用户并将其设置为通用试用期(无需输入信用卡信息):
public function register(Request $request) {
//... other not important things for this
$user = new User([
'name' => $request->get('name'),
'email' => $request->get('email'),
// other fields not important...
'trial_ends_at' => now()->addDays(1),
]);
$user->createAsStripeCustomer(); // not sure if needed
$user->save();
return response()->json($user, 201);
}
在数据库中,我可以看到我使用以下字段和值创建了一个用户:trial_ends_at: 2020-09-21 05:20:47
。此外,在“客户”下我可以看到新注册的用户电子邮件:
但是,在 Stripe 仪表板中,它表示新试验为零:
我还有一个 customer.subscription.updated
webhook,它不是 运行 当我期待它时(当试用结束时),所以我在想是什么导致 Stripe 无法检测到新的试用也是最终导致 webhook 不触发的原因。
为什么 Stripe 不“接受”/不知道新试用?
在 Laravel 方面,用户似乎正在试用($user->onTrial()
returns 正确),但在 Stripe 仪表板上,同一用户似乎没有正在试用(没有新的试用显示,请参见上面的屏幕截图)。
Stripe 没有“通用试用”的概念(试用未附加到特定订阅计划),只有 Laravel Cashier 有这个概念(使用 trial_ends_at
字段) .
我创建了一个计划订阅,而不是一般试用,为 paymentMethod 传入 null
,还包括 trial_period_days
选项。这使我们无需先为该用户备案付款方式即可创建试用版。
这是执行此操作的代码:
$trialDays = 30;
$planId = "<your stripe price id>";
$user->createAsStripeCustomer();
$user->newSubscription('<name of subscription>', $planId)
->create(null, [
'email' => $user->email
], ['trial_period_days' => $trialDays]);
此外,在创建用户时,请记住仍然包含 trial_ends_at
字段,以便我们数据库中的内容与 Stripe 中的内容相匹配:
$trialEndsAt = now()->addDays($trialDays);
$user = new User([
//...
'trial_ends_at' => $trialEndsAt
]);
$user->save();
用户现在将在 Stripe 仪表板中处于试用期,使用 $user->onTrial()
将 return 为真,因为 trial_ends_at
字段中的日期时间大于当前日期时间.
我有一个注册端点,我可以在其中创建一个新用户并将其设置为通用试用期(无需输入信用卡信息):
public function register(Request $request) {
//... other not important things for this
$user = new User([
'name' => $request->get('name'),
'email' => $request->get('email'),
// other fields not important...
'trial_ends_at' => now()->addDays(1),
]);
$user->createAsStripeCustomer(); // not sure if needed
$user->save();
return response()->json($user, 201);
}
在数据库中,我可以看到我使用以下字段和值创建了一个用户:trial_ends_at: 2020-09-21 05:20:47
。此外,在“客户”下我可以看到新注册的用户电子邮件:
但是,在 Stripe 仪表板中,它表示新试验为零:
我还有一个 customer.subscription.updated
webhook,它不是 运行 当我期待它时(当试用结束时),所以我在想是什么导致 Stripe 无法检测到新的试用也是最终导致 webhook 不触发的原因。
为什么 Stripe 不“接受”/不知道新试用?
在 Laravel 方面,用户似乎正在试用($user->onTrial()
returns 正确),但在 Stripe 仪表板上,同一用户似乎没有正在试用(没有新的试用显示,请参见上面的屏幕截图)。
Stripe 没有“通用试用”的概念(试用未附加到特定订阅计划),只有 Laravel Cashier 有这个概念(使用 trial_ends_at
字段) .
我创建了一个计划订阅,而不是一般试用,为 paymentMethod 传入 null
,还包括 trial_period_days
选项。这使我们无需先为该用户备案付款方式即可创建试用版。
这是执行此操作的代码:
$trialDays = 30;
$planId = "<your stripe price id>";
$user->createAsStripeCustomer();
$user->newSubscription('<name of subscription>', $planId)
->create(null, [
'email' => $user->email
], ['trial_period_days' => $trialDays]);
此外,在创建用户时,请记住仍然包含 trial_ends_at
字段,以便我们数据库中的内容与 Stripe 中的内容相匹配:
$trialEndsAt = now()->addDays($trialDays);
$user = new User([
//...
'trial_ends_at' => $trialEndsAt
]);
$user->save();
用户现在将在 Stripe 仪表板中处于试用期,使用 $user->onTrial()
将 return 为真,因为 trial_ends_at
字段中的日期时间大于当前日期时间.