документация на Кассе Laravel довольно расплывчато и пропускает некоторые очень важные детали, такие как то, что $stripeToken
и откуда это?
Итак, чтобы создать новую подписку, мы делаем это:
$user->newSubscription('main', 'premium')->create($stripeToken);
Это первый раз, когда пользователь будет подписываться, так где же $stripeToken
откуда именно?
В документах сказано:
Метод create, который принимает кредитную карту Stripe / токен источника,
начнется подписка, а также обновит вашу базу данных с
идентификатор клиента и другая соответствующая платежная информация.
Означает ли это, что мне нужно сначала создать объект клиента в Stripe, а затем передать идентификатор клиента в качестве $stripeToken
? Здесь упоминаются данные карты, но как мне их передать? Какой формат и что я ожидаю взамен?
Если $stripeToken
если в Stripe есть идентификатор клиента, то Cashier предполагает, что в Stripe уже созданы клиенты, которых у нас не будет в первый раз.
Может кто-нибудь пролить некоторый свет на это?
Оказывается, что stripeToken
обычно генерируется формами stripe.js при отправке.
Поскольку я использую управляемые API-формы, а не стандартные формы отправки html, мне нужно использовать Stripe API для создания токена из предоставленных данных карты.
$stripeToken = Token::create(array(
"card" => array(
"number" => $request->get('number'),
"exp_month" => str_before($request->get('expiry'), '/'),
"exp_year" => str_after($request->get('expiry'), '/'),
"cvc" => $request->get('cvc'),
"name" => $request->get('name')
)
));
Тогда я использую $stripeToken->id
и передать его:
$user->newSubscription('main', 'premium')->create($stripeToken->id);
Вы можете использовать Полоса JS чтобы получить stripeToken, но если вы используете пользовательскую форму, то вы можете использовать Полоса проверки метод.
Используя оба способа, вы получите stripeToken в javascript, а затем вам нужно будет передать этот токен вашему REST API для дальнейшей обработки.