فهرست مستندات پروژه
شماره کارت
بررسی Luhn شماره کارت و پیدا کردن بانک از BIN.
CardNumber شماره کارت شانزدهرقمی را با Luhn بررسی میکند و بانک را از شش رقم اول یا BIN پیدا میکند.
نمونه قابل اجرا
کد را کنار vendor/ ذخیره و اجرا کنید:
<?php
require 'vendor/autoload.php';
use Eram\Abzar\Validation\CardNumber;
$card = CardNumber::from('6037-7016-8909-5443');
echo $card->bank(), "\n";
echo $card->masked(), "\n";
بانک کشاورزی
6037 70** **** 5443
قواعد و نکتهها
ارقام یکسانسازی میشوند و فاصله، خط تیره و علامتهای نامرئی حذف میشوند. دقیقا شانزده رقم لازم است؛ شانزده رقم یکسان رد میشود و checksum باید درست باشد.
1234567890123452 از نظر Luhn معتبر است، ولی BIN آن در جدول نیست. isValid() برابر true و isStrictlyValid() برابر false است. هشدار CARD_NUMBER.UNKNOWN_BIN و بانک null خواهد بود. from() و tryFrom() هم آن را میپذیرند.
برای نمونه بالا، bin() برابر 603770 و bankEnum() برابر Bank::KESHAVARZI است. formatted() مقدار 6037 7016 8909 5443 را میدهد. masked() شش رقم اول و چهار رقم آخر را نگه میدارد. تبدیل به string و JSON شماره کامل را دارند؛ JSON شامل value، bin و bank است.
extractAll() شانزده رقم پیوسته یا جداشده با فاصله و خط تیره را بررسی میکند و کارتهای دارای هشدار را هم میپذیرد. fake() BIN شناختهشده انتخاب میکند؛ fake('603770') آن را ثابت میکند. BIN باید شش رقم باشد، وگرنه FAKE.INVALID_ARGUMENT رخ میدهد.
Luhn وجود کارت، فعال بودن یا مالکیت را ثابت نمیکند. ماسک کردن بهتنهایی تضمین رعایت استانداردهای پرداخت نیست. شماره کامل را بیدلیل در لاگ ننویسید. شماره تولیدشده برای تست، شماره رزروشده نیست و ممکن است واقعی باشد.
کدهای خطا
کدهای همین بخش و پیام دقیق کتابخانه در جدول کدهای خطا آمده است. برای شرطهای برنامه از کد استفاده کنید، نه متن پیام.
مطالب مرتبط: اعتبارسنجی، مدیریت خطا، اتصال به فریمورک.