laravel-iranian-banks maintained by lokiwich
Laravel Iranian Banks
Iranian Shetab banks for Laravel — names (FA/EN), SVG icons, card BIN prefixes, Sheba bank codes, and bank detection from card numbers or IBAN.
Features
- Directory of Shetab banks with Persian & English names
- Multiple card BIN prefixes per bank stored as JSON
- Sheba (
iban_code) per bank + mod-97 IBAN helpers - Detect bank from a card number / BIN (
6+digits) or Sheba - Persian / Arabic digit normalization
- Optional Luhn validation helper
- Colored & monochrome SVG logos (vendored from snapp-store/iranian-banks-react-icons, MIT)
- Blade component for bank logos
php artisan iranian-banks:install
Requirements
- PHP 8.2+
- Laravel 10–13
Installation
composer require lokiwich/laravel-iranian-banks
php artisan iranian-banks:install
Or publish pieces manually:
php artisan vendor:publish --tag=iranian-banks-config
php artisan vendor:publish --tag=iranian-banks-migrations
php artisan migrate
php artisan db:seed --class="Lokiwich\\IranianBanks\\Database\\Seeders\\IranianBanksSeeder"
Local path development
{
"repositories": [
{ "type": "path", "url": "packages/laravel-iranian-banks", "options": { "symlink": true } }
],
"require": {
"lokiwich/laravel-iranian-banks": "*"
}
}
Usage
use Lokiwich\IranianBanks\Facades\IranianBanks;
use Lokiwich\IranianBanks\Models\Bank;
use Lokiwich\IranianBanks\Support\CardNumber;
use Lokiwich\IranianBanks\Support\Iban;
$bank = IranianBanks::detect('6037697512345678');
// Longest matching card_prefixes wins (e.g. Blu 62198619 over Saman 621986).
// or
$bank = Bank::findByCardNumber('۶۰۳۷۶۹');
$iban = Iban::make('012', '1234567890123456789'); // valid IR… Sheba
$bank = IranianBanks::detectFromIban($iban); // Bank Mellat
Iban::passesMod97($iban); // true
Iban::bankCode($iban); // '012'
$bank?->name_fa; // بانک صادرات ایران
$bank?->name_en; // Bank Saderat Iran
$bank?->card_prefixes; // ['603769', '903769']
$bank?->iban_code; // '019'
$bank?->displayName(); // locale-aware
$bank?->iconSvg('color'); // SVG markup
CardNumber::normalize('۶۰۳۷-۶۹'); // '603769'
CardNumber::bin('6037697512345678'); // '603769'
CardNumber::passesLuhn('6037697512345678'); // bool
Blade logo
<x-iranian-banks::bank-logo :bank="$bank" variant="color" :width="40" :height="40" />
Publishing to Packagist
- Push
packages/laravel-iranian-banksto its own GitHub repository (e.g.lokiwich/laravel-iranian-banks). - Create a release / tag (
v1.0.0). - Submit the package on packagist.org and enable GitHub Auto-Update.
Icon attribution
SVG bank logos are adapted from @snapp-store/iranian-banks-react-icons (MIT © Snapp Store).
License
MIT © Lokiwich