Я использую Laravel и Stripe. У меня в приложении 5 разных планов подписки. Каждый план имеет свой набор параметров, например
Базовый план
— максимальное количество кампаний — 20
— макс. писем — 100
Pro Plan
— максимальное количество кампаний — 40
— макс. писем — 200
и т.п.
Как мне представить эти параметры в моей БД?
Я использую кассу Laravel, она прекрасно обрабатывает таблицу подписок, где хранится имя подписки, идентификатор плана полосы и т. Д.
Но я хочу, чтобы позже, когда пользователь собирается создать кампанию, проверил, может ли он это сделать, т. Е. Он не достиг предела кампаний в соответствии со своим планом.
Похоже, мне нужен другой стол, как plan_options
где бы я хранил все это Меня беспокоит, как мне подключить его к этой таблице подписок? вручную? нужно ли сразу после подписки пользователя найти имя подписки, которое он выбрал, найти в таблице plan_options и подключить его с помощью идентификатора? это правильный способ сделать это?
Вы можете сохранить plan_options
в метаданные плана подписки в Stripe. Таким образом, все остается на одном месте, и синхронизация не требуется.
Вы можете получить доступ к метаданным с помощью API следующим образом.
Пример запроса:
\Stripe\Stripe::setApiKey("sk_test_ascfadfaeadsfadsfasdfasdfV");
\Stripe\Plan::retrieve("pro");
Пример ответа:
Stripe\Plan JSON: {
"id": "pro",
"object": "plan",
"amount": 1000,
"created": 1453123864,
"currency": "usd",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {
"campaigns_limit": "40",
"emails_limit": "200"},
"name": "Pro Plan",
"statement_descriptor": null,
"trial_period_days": 30
}
При наличии многих планов подписки централизованная информация устранит многие сложности.
PS: Ответ содержит строки, а не числа / целые числа в JSON.
Других решений пока нет …