Jan 6, 2022
0
Level 1
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());
}
}
Please or to participate in this conversation.