Hello, Today we are going to be looking at validating credit card, adding a credit card to our app needs some level of validation before it will be store in the database.
Click on my profile to follow me to get more updates.
Step 1: Install the package required
We are going to be using a package Laravel Validator Rules - Credit Card, so we need to install it
composer require laravel-validation-rules/credit-card
Step 2: Create the Form Request
For a comprehensive explanation of this step, check out this material Laravel Form Validation
php artisan make:request CardVerificationRequest
Step 3: Write the Form Request Rules and Error Message
Open the file that is created in app/Http/Requests/, CardVerificationRequest.php and edit to this
<?php
namespace App\Http\Requests;
use LVR\CreditCard\CardCvc;
use LVR\CreditCard\CardNumber;
use LVR\CreditCard\CardExpirationYear;
use LVR\CreditCard\CardExpirationMonth;
use Illuminate\Foundation\Http\FormRequest;
class CardVerificationRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'card_number' => ['required', 'unique:cards,cardNo', new CardNumber],
'expiration_year' => ['required', new CardExpirationYear($this->get('expiration_month'))],
'expiration_month' => ['required', new CardExpirationMonth($this->get('expiration_year'))],
'cvc' => ['required', new CardCvc($this->get('card_number'))]
];
}
public function messages()
{
return [
'card_number.required' => 'The card number is compulsory'
];
}
}
Step 4: Type-hint the CardVerificationRequest in our Controller
Go to the controller method, where you want to use the validation and use my code as a guide
/**
* Store a newly created resource in storage.
*
* @param \App\Http\Requests\CardVerificationRequest $request
* @return \Illuminate\Http\Response
*/
public function store(CardVerificationRequest $request)
{
$validatedData = $request->validated();
$newCard = new Card;
$newCard->cardNo = $validatedData["card_number"];
$newCard->cardExpiringMonth = $validatedData["expiration_month"];
$newCard->cardExpiringYear = $validatedData["expiration_year"];
$newCard->cardCVV = $validatedData["cvc"];
$newCard->save();
return response()->json([
"status" => "success",
"message" => "Card saved successfully.",
"data" => $newCard
], StatusCodes::SUCCESS);
}
Testing
Running the app with fields that violates the rules
When the fields are correct
Follow me for more of my articles, you can leave comments, suggestions, and reactions.
I am open to any vacancy as a PHP (Laravel) backend engineer, I am also available for any job.
click the link to view my profile and follow me
Thank you for your time
Top comments (5)
Remember, to store credit card data you need to be compliant with PCI-DSS rules globalpaymentsintegrated.com/en-us... and is not easy.
My broker didn't mention that checking the credit card with this validation request could be possible. Sometimes I feel a little worried about all these banks and cards, yesterday, I watched a tv show, and the guy from the show said that banks could use credit cards to locate their customers, and some banks can use cards to hear what customers are saying. It was too much for me, and I went to my Mortgage Broker Bradford, to ask if it was possible. The broker said this was impossible, but I didn't trust him. He is also a capitalist, so if you heard a good way to check if they can watch where I'm located, please share it here.
I'd recommend using stripe it's super easy to integrate
Thanks for the feedback, Will write on that shortly
can you do us a favor and write something about using paystack on Registration form