Нет такого плана: ежемесячно; существует имя с названием ежемесячно, но его идентификатор является основным.

Получение этой проблемы в тесте 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: ясно, не помогает. Я использую 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 ответа

Решение

Используйте это вместо:

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

Из документации:

Первым аргументом, передаваемым методу newSubscription, должно быть имя подписки. Второй аргумент - это конкретный план Stripe, на который подписывается пользователь. Это значение должно соответствовать идентификатору плана в Stripe.

Таким образом, второй аргумент должен быть равен значению идентификатора из моего плана Stripe! В этом случае это значение primaryне monthly,

Важно различать идентификатор продукта и идентификатор плана. Возможно, полоса изменилась, так как было написано много уроков. Мне потребовалось несколько часов поиска, чтобы узнать это. Поскольку я новичок, мне было легко найти Product и Product Id, но найти Plan Id было сложнее. Фактически мне пришлось "экспортировать планы" в CSV со страницы продукта, чтобы даже получить идентификатор для идентификатора плана.

Надеюсь, это поможет кому-то, кто был потерян, как я

Основная проблема заключается в том, что вы передаете имя плана вместо идентификатора плана во втором параметре newSubscription(). это должно быть так

$user->newSubscription('основная', 'plan_GNxxxxxxx')-> создать ($request->stripeToken,[ ]);

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

Steps:

  1. Create a Subscription for the stripe account (Test Mode).
  2. Under subscription need to create a product with quantity and price and recurring option.
  3. Once product is created you can see a product inside Product menu, click on it and find API ID.
  4. SO finally inside function newSubscription(), first parameter would be the subscription name that you written while creating it and second parameter would be the APP ID under product.
Другие вопросы по тегам