فهرست مستندات پروژه

ابزارهای بانکی

Pardakhtv1.0.0-beta.4مشاهده منبعفارسی / انگلیسی

پرداخت شامل آبجکت‌های مقداری برای اعتبارسنجی و کار با شماره کارت‌های بانکی ایرانی و شماره شبا (IBAN) است.

CardNumber

آبجکت مقداری برای شماره کارت‌های بانکی ایرانی ۱۶ رقمی با اعتبارسنجی Luhn و تشخیص خودکار بانک.

ساخت و اعتبارسنجی

use Eram\Pardakht\Banking\CardNumber;

// ساخت با اعتبارسنجی (در صورت نامعتبر بودن خطا پرتاب می‌کند)
$card = new CardNumber('6037991234567890');
$card = new CardNumber('6037-9912-3456-7890'); // خط‌تیره‌ها حذف می‌شوند

// اعتبارسنجی استاتیک (بدون خطا)
CardNumber::isValid('6037991234567890'); // true
CardNumber::isValid('1234567890123456'); // false (بررسی Luhn ناموفق)

ساخت در صورت زیر \InvalidArgumentException پرتاب می‌کند:

  • شماره دقیقاً ۱۶ رقم نباشد
  • چک‌سام Luhn ناموفق باشد

فرمت‌بندی

$card = new CardNumber('6037991234567890');

$card->number();    // "6037991234567890"
$card->formatted(); // "6037-9912-3456-7890"
$card->masked();    // "603799******7890"

تشخیص بانک

$card = new CardNumber('6037991234567890');
$card->bankName(); // "ملی" (یا null اگر BIN ناشناخته باشد)

تشخیص بانک از ۶ رقم اول (BIN) برای شناسایی بانک صادرکننده استفاده می‌کند.

مقایسه

$a = new CardNumber('6037991234567890');
$b = new CardNumber('6037-9912-3456-7890');
$a->equals($b); // true

Sheba (شبا)

آبجکت مقداری برای شبای ایرانی (شماره حساب بانکی بین‌المللی) با اعتبارسنجی چک‌سام ISO 13616 و تشخیص بانک.

فرمت شبای ایرانی: IR + ۲ رقم کنترلی + ۲۲ رقم = مجموعاً ۲۶ کاراکتر.

ساخت و اعتبارسنجی

use Eram\Pardakht\Banking\Sheba;

// با یا بدون پیشوند IR
$sheba = new Sheba('IR062960000000100324200001');
$sheba = new Sheba('062960000000100324200001'); // IR خودکار اضافه می‌شود

// اعتبارسنجی استاتیک
Sheba::isValid('IR062960000000100324200001'); // true

ساخت در صورت زیر \InvalidArgumentException پرتاب می‌کند:

  • فرمت IR + ۲۴ رقم نباشد
  • چک‌سام mod-97 طبق ISO 13616 ناموفق باشد

خواندن مقادیر

$sheba = new Sheba('IR062960000000100324200001');

$sheba->value();  // "IR062960000000100324200001"
$sheba->digits(); // "062960000000100324200001" (بدون پیشوند IR)

فرمت‌بندی

$sheba->formatted(); // "IR06 2960 0000 0010 0324 2000 01"

تشخیص بانک

$sheba->bankName(); // "ملت" (یا null اگر کد بانک ناشناخته باشد)

تشخیص بانک از کد بانک موجود در شبا (ارقام ۵ تا ۷ بعد از IR) استفاده می‌کند.

مقایسه

$a = new Sheba('IR062960000000100324200001');
$b = new Sheba('062960000000100324200001');
$a->equals($b); // true

BankIdentifier

کلاس BankIdentifier متدهای استاتیک برای تشخیص بانک بدون ساخت آبجکت مقداری فراهم می‌کند:

use Eram\Pardakht\Banking\BankIdentifier;

BankIdentifier::fromCardNumber('6037991234567890');     // "ملی"
BankIdentifier::fromSheba('IR062960000000100324200001'); // "ملت"

هر دو متد ?string برمی‌گردانند — اگر کد بانک در پایگاه داده نباشد null برمی‌گردد.

جستجو در مستندات

در همه پروژه‌ها جستجو کنید. با بستن این پنجره به راهنما برمی‌گردید.

Tab برای جابه‌جایی · Enter برای باز کردنEsc برای بستن