使用试用版Laravel Cashier创建付费计划时出错

时间:2018-10-13 17:03:02

标签: php laravel laravel-5 stripe-payments laravel-cashier

简单的问题,但我无法一生解决这个问题。

我的Stripe帐户有3个订阅,一个是免费的,两个订阅的试用期为14天(在Stripe中设置)。一切正常,除了当我立即为新用户订阅付费试用计划时,我不断收到有关客户没有存档付款来源的错误消息。我的代码如下:

// Create new User
$user = new Account($validatedUserData);

// Create Stripe user and subscribe to plan. Laravel automatically adds Stripe Customer ID 
// Free plan, create customer and subscribe to free plan in one line of code 
if ($planInRequest == 1) { 
    $user->newSubscription('My Subscription', 'Free Plan')->create(null, ['email' => $user->email]); 
} 

// If Paid plan...
else { 
     // Create user in Stripe first (this works) 
     $user->createAsStripeCustomer(null);

     // Subscribe user to paid plan with trial period
     $user->newSubscription('My Subscription', $planToUse)->create(null, ['email' => $user->email]); }

但是,当我运行此代码时,出现错误

  

不存在客户的付款来源。

我知道我尚未向客户添加Stripe Source(因此传递null),但是我认为如果有免费试用期,我现在可以为其订购。我也尝试也不将null传递给付费计划订阅(as per this SO post),但这给了我一个无效的令牌错误。

我的用户模型还包含Laravel文档推荐的“ trial_ends_at”,“ updated_at”和“ created_at”字段。将Stripe客户添加得很好,当我尝试将付费订阅添加到Stripe仪表板中的新客户时,一切正常。

有人有什么想法吗?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

最终弄清楚了我在挖掘Cashier的Billable,Subscription和SubscriptionBuilder控制器后必须在试验计划中使用以下代码,以防万一其他人遇到相同的问题!

$user->newSubscription('My Subscription', $planToUse)->trialUntil($user->trial_ends_at)->create(null, [
                'email' => $user->email,
                'description' => $user->name
            ]);