Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel Cashier - where does $stripeToken come from?

The documentation on Laravel Cashier is quite vague and misses some very important details like what the $stripeToken is and where does it come from?

So to create a new subscription we do this:

$user->newSubscription('main', 'premium')->create($stripeToken);

This is the first time a user will be subscribing so where does $stripeToken come from exactly?

In the docs it says:

The create method, which accepts a Stripe credit card / source token, will begin the subscription as well as update your database with the customer ID and other relevant billing information.

Does this mean I have to manually create the customer object in Stripe first and then pass the customer id as the $stripeToken? It mentions card details but how do I pass them? What is the format and what do I expect in return?

If $stripeToken is the customer id in Stripe then Cashier is assuming that we already have customers created in Stripe which we won't have the first time.

Can anyone shed some light on this?

like image 542
user3574492 Avatar asked Jun 13 '18 11:06

user3574492


Video Answer


1 Answers

It turns out that the stripeToken is usually generated by stripe.js forms when they are submitted.

As I am using API driven checkout forms and not standard html submission forms I need to use the Stripe API to create the token from the card details provided.

$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')
                       )
                   ));

Then I use $stripeToken->id and pass it:

$user->newSubscription('main', 'premium')->create($stripeToken->id);
like image 86
user3574492 Avatar answered Oct 23 '22 05:10

user3574492