samedi 12 juin 2021

Not getting data for authenticated user from database in Laravel for setting stripe

I've been trying to get the saved customer id for stripe from database but with no luck. It works everywhere else, I could get it and save it again if I wanted, but whenever I try to use it in payment intent to automatically renew a subscription, it gives me this error: Trying to get property 'stripecustomerid' of non-object.

this is the bit of the stripe code for recurring charge where the error happens:

 public function renew($subscription)
    {
        \Stripe\Stripe::setApiKey('sk_test_XXXXXXXX');
        header('Content-Type: application/json');


        try {
               $json_str = file_get_contents('php://input');
               $json_obj = json_decode($json_str);
               $user = \Auth::user();

               $payment_methods = \Stripe\PaymentMethod::all([
                    'customer' => $user->stripecustomerid,
                    'type' => 'card'
                ]);

               $payment_intent = \Stripe\PaymentIntent::create([
                    'amount' => $subscription->plan->stripePrice(),
                    'currency' => 'usd',
                    'customer' => $user->stripecustomerid,
                    'payment_method' => $payment_methods->data[0]->id,
                    'off_session' => true,
                    'confirm' => true,

                ]);

               echo json_encode([
                    'paymentIntent' => $payment_intent,
                ]);
           }
      catch (\Exception $e) {
                http_response_code(500);
                echo json_encode(['error' => $e->getMessage()]);
      }

    }

and stripecustomerid is the name of the column where I saved the customer id.

I can print it in another function, but it just doesn't work when the subscription tries to renew.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire