Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

wontonesaju's avatar

Laravel Cashier Custom Model

I am implementing a cashier in my custom model name Customers. But i am getting a error "Mission a param source" . I am also facing one more issue most of the stripe keys are not reading from env also.

My code is this :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <h1 class="text-primary text-center">
              <strong>Testing</strong>
            </h1>
        </div>
    </div>
    <div class="row">
      <div class="col-md-6 col-md-offset-3">
        <div class="panel panel-default credit-card-box">
            <div class="panel-heading display-table" >
                <div class="row display-tr" >
                    <strong>Testing</strong>
                </div>                    
            </div>
            <div class="panel-body">
                <div class="col-md-12">
                  {!! Form::open(['url' => route('order-post'), 'data-parsley-validate', 'id' => 'payment-form']) !!}
                    @if ($message = Session::get('success'))
                    <div class="alert alert-success alert-block">
                      <button type="button" class="close" data-dismiss="alert">×</button> 
                            <strong>{{ $message }}</strong>
                    </div>
                    @endif
                    <div class="form-group" id="product-group">
                        {!! Form::label('plane', 'Select Plan:') !!}
                        {!! Form::select('plane', ['price_1KEd6LB97FbU1pDEfUmn6WC9' => 'Laravel ()', 'vue' => 'Vue ()', 'react' => 'React ()'], 'Book', [
                            'class'                       => 'form-control',
                            'required'                    => 'required',
                            'data-parsley-class-handler'  => '#product-group'
                            ]) !!}
                    </div>
                    <div class="form-group" id="cc-group">
                        {!! Form::label(null, 'Credit card number:') !!}
                        {!! Form::text(null, null, [
                            'class'                         => 'form-control',
                            'required'                      => 'required',
                            'data-stripe'                   => 'number',
                            'data-parsley-type'             => 'number',
                            'maxlength'                     => '16',
                            'data-parsley-trigger'          => 'change focusout',
                            'data-parsley-class-handler'    => '#cc-group'
                            ]) !!}
                    </div>
                    <div class="form-group" id="ccv-group">
                        {!! Form::label(null, 'CVC (3 or 4 digit number):') !!}
                        {!! Form::text(null, null, [
                            'class'                         => 'form-control',
                            'required'                      => 'required',
                            'data-stripe'                   => 'cvc',
                            'data-parsley-type'             => 'number',
                            'data-parsley-trigger'          => 'change focusout',
                            'maxlength'                     => '4',
                            'data-parsley-class-handler'    => '#ccv-group'
                            ]) !!}
                    </div>
                    <div class="row">
                      <div class="col-md-6">
                        <div class="form-group" id="exp-m-group">
                            {!! Form::label(null, 'Ex. Month') !!}
                            {!! Form::selectMonth(null, null, [
                                'class'                 => 'form-control',
                                'required'              => 'required',
                                'data-stripe'           => 'exp-month'
                            ], '%m') !!}
                        </div>
                      </div>
                      <div class="col-md-6">
                        <div class="form-group" id="exp-y-group">
                            {!! Form::label(null, 'Ex. Year') !!}
                            {!! Form::selectYear(null, date('Y'), date('Y') + 10, null, [
                                'class'             => 'form-control',
                                'required'          => 'required',
                                'data-stripe'       => 'exp-year'
                                ]) !!}
                        </div>
                      </div>
                    </div>
                      <div class="form-group">
                          {!! Form::submit('Place order!', ['class' => 'btn btn-lg btn-block btn-primary btn-order', 'id' => 'submitBtn', 'style' => 'margin-bottom: 10px;']) !!}
                      </div>
                      <div class="row">
                        <div class="col-md-12">
                            <span class="payment-errors" style="color: red;margin-top:10px;"></span>
                        </div>
                      </div>
                  {!! Form::close() !!}
                </div>
            </div>
        </div>
        
      </div>
    </div>
        
        <script>
            window.ParsleyConfig = {
                errorsWrapper: '<div></div>',
                errorTemplate: '<div class="alert alert-danger parsley" role="alert"></div>',
                errorClass: 'has-error',
                successClass: 'has-success'
            };
        </script>
        
        <script src="//parsleyjs.org/dist/parsley.js"></script>
        <script type="text/javascript" src="https://js.stripe.com/v2/"></script>
        <script>
            Stripe.setPublishableKey("pk_live_51JhUHQB97FbU1pDEDWidcJ7Cv8VyUXE1uPhBvBHSz0mOU5MafKTY3cw8sJ03NIFydb0slMOi6SO5sW3ttYDCXmHs008EaJJta8");
            jQuery(function($) {
                $('#payment-form').submit(function(event) {
                    var $form = $(this);
                    $form.parsley().subscribe('parsley:form:validate', function(formInstance) {
                        formInstance.submitEvent.preventDefault();
                        alert();
                        return false;
                    });
                    $form.find('#submitBtn').prop('disabled', true);
                    Stripe.card.createToken($form, stripeResponseHandler);
                    return false;
                });
            });
            function stripeResponseHandler(status, response) {
                var $form = $('#payment-form');
                if (response.error) {
                    $form.find('.payment-errors').text(response.error.message);
                    $form.find('.payment-errors').addClass('alert alert-danger');
                    $form.find('#submitBtn').prop('disabled', false);
                    $('#submitBtn').button('reset');
                } else {
                    var token = response.id;
                    $form.append($('<input type="hidden" name="stripeToken" />').val(token));
                    $form.get(0).submit();
                }
            };
        </script>
    </body>
    </html>
 public function orderPost(Request $request)
    {

    
            $user = Customers::find(24);
            $input = $request->all();
            $token =  $request->stripeToken;
            $paymentMethod = $request->paymentMethod;
         //   $input = $request->all();
          //  $token =  $request->stripeToken;
           // $paymentMethod = $request->paymentMethod;

         

            try {

                Stripe\Stripe::setApiKey(env('STRIPE_SECRET'));
                
                if (is_null($user->stripe_id)) {
                    $stripeCustomer = $user->createAsStripeCustomer();

                }

                \Stripe\Customer::createSource(
                    $user->stripe_id,
                    ['source' => $token]
                );

                $user->newSubscription('test',$input['plane'])
                    ->create($paymentMethod, [
                   'email' => $user->email,
                ]);

                return back()->with('success','Subscription is completed.');
            } catch (Exception $e) {
                return back()->with('success',$e->getMessage());
            }
            
    }
0 likes
0 replies

Please or to participate in this conversation.