在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'),
],
答案 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);
步骤: