mattesj
mattesj

Reputation: 609

Laravel Cashier creates customer but not subscription

I'm using Laravel 5.2 and after deploying my app the stripe checkout doesnt work. In localhost mode it works and creates a customer with subscription but in production it throws an "InvalidRequest" error and only creates a customer in Stripe but without the subscription.

The apikeys are set in services, stripe and .env and it gets the stripeToken.

                try {
                  // Use Stripe's library to make requests...

                    $user = new User;

                    $user->name = $request->input('name');
                    $user->email = $request->input('email');
                    $user->password = Hash::make($request->input('password'));
                    $user->created_at = Carbon::now();
                    $user->save();

                    $creditCardToken = $request->input('stripeToken');

                    $user->newSubscription('Silver', 'Silver')->create($creditCardToken);


                } catch(\Stripe\Error\Card $e) {
                  // Since it's a decline, \Stripe\Error\Card will be caught

                    $error = 'Det verkade vara något fel med ditt kreditkort. Vänligen testa igen.';
                    return redirect()->back()->with('error', $error);  

                } catch (\Stripe\Error\RateLimit $e) {
                  // Too many requests made to the API too quickly

                    $error = 'Vi upplever för tillfälligt ett högt tryck. Vänligen försök igen om en liten stund.';
                    return redirect()->back()->with('error', $error);  

                } catch (\Stripe\Error\InvalidRequest $e) {
                  // Invalid parameters were supplied to Stripe's API

                    $error = 'Ops! Något gick fel. Vänligen testa igen';
                    return redirect()->back()->with('error', $error);  

                } catch (\Stripe\Error\Authentication $e) {
                  // Authentication with Stripe's API failed
                  // (maybe you changed API keys recently)

                    $error = 'Ops! Något gick fel. Vänligen konktakta kundtjänst så vi kan fixa problemet. Tack!';
                    return redirect()->back()->with('error', $error);  

                } catch (\Stripe\Error\ApiConnection $e) {
                  // Network communication with Stripe failed
                    $error = 'Ops! Servern är för tillfälligt nere. Vänligen testa inom kort igen.';
                    //return redirect()->back()->with('error', $error);  

                } catch (\Stripe\Error\Base $e) {
                  // Display a very generic error to the user, and maybe send
                  // yourself an email
                    $error = 'Ops! Något gick fel.';
                    //return redirect()->back()->with('error', $error);  
                } catch (Exception $e) {
                  // Something else happened, completely unrelated to Stripe
                    $error = 'Ops! Något gick fel. Vänligen kontakta kundtjänst.';
                    //return redirect()->back()->with('error', $error);  
                }

                    $name = $request->input('name');

                    return view('checkout.confirmation', compact('plan', 'name'));

Upvotes: 0

Views: 163

Answers (1)

Mauro Baptista
Mauro Baptista

Reputation: 305

It should be a comment, but I have no reputation to do it. So...

On catch (\Stripe\Error\InvalidRequest $e) { include a dd($e->getMessage());

I believe it will give you a better hint about the problem.

Upvotes: 2

Related Questions