简体   繁体   中英

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?

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

You can use the Stripe JS to get the stripeToken but if you are using the custom form then you can use Stripe checkout method.

Using both the ways you will get stripeToken in javascript and then you have to pass this token to your REST API for further processing.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM