Создайте нового пользователя Stripe на платном плане, установив пробный период, без кредитной карты
При использовании Stripe API создание нового пользователя на платном плане с пробным периодом не работает без маркера кредитной карты.
Я использую PHP SDK и делаю следующее:
$customer = \Stripe\Customer::create(array(
"source" => NULL,
"plan" => 'PROFESSIONAL',
"email" => $email_address,
"trial_end" => $unix_timestamp
);
Который возвращает ошибку:
Ошибка: неверный исходный объект: должен быть словарем или непустой строкой.
Есть две причины, по которым я думаю, что это должно работать, поэтому я думаю, что я делаю что-то не так.
- Добавление
trial_end
добавляет пробную версию к подписке, поэтому оплата не требуется, а это значит, что в этот момент ей не нужна кредитная карта. - Используя онлайн-портал Stripe, вы можете создать пользователя по платной подписке, а также переместить существующих пользователей в платную подписку без необходимости использования кредитной карты, когда вы указываете пробный период. Если вы можете сделать это на портале, почему вы не можете сделать это через API?
Есть ли что-то, что я пропустил в документации, чтобы позволить мне сделать это?
2 ответа
Просто попробовал следующее, которое сработало.
$customer = \Stripe\Customer::create(array(
"plan" => 'PROFESSIONAL',
"email" => $email_address,
"trial_end" => $unix_timestamp
);
В основном я только что удалил source
ключ / значение полностью. Затем он создал пользователя на платном плане с пробной версией.
Странное поведение, так как при создании пользователя на БЕСПЛАТНОМ плане вы можете получить source
ключ там со значением NULL
и это работает. Также не документировано, насколько я могу видеть.
Следуйте за этим шагом
Создать клиента, используя
\Stripe\Customer::create(array( "description" => $description, "email" => $email));
Сохраните возвращенный идентификатор клиента с полосы
Теперь подпишите клиента на этот план
$ customer = \ Stripe \ Customer:: retrieve ($ customer_id);
$ subscription = $customer->subscription->create(array("plan" => $plan_id));
Пожалуйста, убедитесь, что план уже создан на полосе.