没有这样的计划:每月;一个名称为每月,但其ID是主要的Laravel Cashier

时间:2016-10-27 01:29:14

标签: laravel laravel-5 laravel-cashier

在Stripe测试中遇到此问题。以前一切都在测试中工作,但是当我在Stripe中创建一个新计划并删除原始计划时,我现在收到以下错误:

No such plan: monthly; one exists with a name of monthly, but its ID is primary.

控制器

$user->newSubscription('primary', 'monthly')->create($token, [ ]);

计划详情

ID: primary
Name: monthly
Price: $19.99 USD/month
Trial period: No trial
php artisan config:明确无济于事。我正在使用Laravel 5.2和Cashier 6.0。

.env文件

STRIPE_KEY=pk_test_...
STRIPE_SECRET=sk_test_....

配置/ services.php

'stripe' => [
    'model'  => App\User::class,
    'key'    => env('STRIPE_KEY'),
    'secret' => env('STRIPE_SECRET'),
],

4 个答案:

答案 0 :(得分:2)

区分产品标识符和计划标识符很重要。自从编写了许多教程以来,条纹可能已经改变了。我花了数小时的时间才意识到这一点。由于我是新手,所以很容易找到产品和产品ID,但很难找到计划ID。实际上,我不得不从产品页面“导出计划”到CSV甚至获取计划ID的ID。

希望这可以帮助像我一样迷路的人

答案 1 :(得分:1)

请改用:

$user->newSubscription('primary', 'primary')->create($token, [ ]);

来自文档:

  

传递给newSubscription方法的第一个参数应该是订阅的名称。第二个参数是用户订阅的特定Stripe计划。此值应与Stripe中的计划标识符相对应。

所以第二个参数必须等于我的Stripe计划中的ID值!在这种情况下,该值为primary,而不是monthly

答案 2 :(得分:0)

主要问题是您正在传递计划名称,而不是在newSubscription()的第二个参数中传递计划ID。 应该是这样

  

$ user-> newSubscription('main','plan_GNxxxxxxx')-> create($ request-> stripeToken,[]);

答案 3 :(得分:0)

$user->newSubscription('XXXX', 'price_XXXXXXX')->create($request->stripeToken);

步骤:

  1. 为条带帐户创建订阅(测试模式)。
  2. 在订阅下需要创建具有数量和价格以及重复选项的产品。
  3. 创建产品后,您可以在“产品”菜单中看到一个产品,点击它并找到 API ID。
  4. SO 最后在函数 newSubscription() 中,第一个参数将是您在创建它时编写的订阅名称,第二个参数将是产品下的 APP ID。