Создайте нового пользователя Stripe на платном плане, установив пробный период, без кредитной карты

При использовании Stripe API создание нового пользователя на платном плане с пробным периодом не работает без маркера кредитной карты.

Я использую PHP SDK и делаю следующее:

$customer = \Stripe\Customer::create(array(
    "source" => NULL,
    "plan" => 'PROFESSIONAL',
    "email" => $email_address,
    "trial_end" => $unix_timestamp
);

Который возвращает ошибку:

Ошибка: неверный исходный объект: должен быть словарем или непустой строкой.

Есть две причины, по которым я думаю, что это должно работать, поэтому я думаю, что я делаю что-то не так.

  1. Добавление trial_end добавляет пробную версию к подписке, поэтому оплата не требуется, а это значит, что в этот момент ей не нужна кредитная карта.
  2. Используя онлайн-портал Stripe, вы можете создать пользователя по платной подписке, а также переместить существующих пользователей в платную подписку без необходимости использования кредитной карты, когда вы указываете пробный период. Если вы можете сделать это на портале, почему вы не можете сделать это через API?

Есть ли что-то, что я пропустил в документации, чтобы позволить мне сделать это?

2 ответа

Решение

Просто попробовал следующее, которое сработало.

$customer = \Stripe\Customer::create(array(
    "plan" => 'PROFESSIONAL',
    "email" => $email_address,
    "trial_end" => $unix_timestamp
);

В основном я только что удалил source ключ / значение полностью. Затем он создал пользователя на платном плане с пробной версией.

Странное поведение, так как при создании пользователя на БЕСПЛАТНОМ плане вы можете получить source ключ там со значением NULL и это работает. Также не документировано, насколько я могу видеть.

Следуйте за этим шагом

  1. Создать клиента, используя

    \Stripe\Customer::create(array( "description" => $description, "email" => $email));

  2. Сохраните возвращенный идентификатор клиента с полосы

  3. Теперь подпишите клиента на этот план

    $ customer = \ Stripe \ Customer:: retrieve ($ customer_id);

    $ subscription = $customer->subscription->create(array("plan" => $plan_id));

Пожалуйста, убедитесь, что план уже создан на полосе.

Другие вопросы по тегам