1<?php
2
3namespace Faker\Provider\pl_PL;
4
5class Payment extends \Faker\Provider\Payment
6{
7    /**
8     * @var array list of Polish banks, source: https://ewib.nbp.pl/
9     */
10    protected static $banks = array(
11        '101' => 'Narodowy Bank Polski',
12        '102' => 'Powszechna Kasa Oszczędności Bank Polski SA',
13        '103' => 'Bank Handlowy w Warszawie SA',
14        '105' => 'ING Bank Śląski SA',
15        '106' => 'Bank BPH SA',
16        '109' => 'Bank Zachodni WBK SA',
17        '113' => 'Bank Gospodarstwa Krajowego',
18        '114' => 'mBank SA',
19        '116' => 'Bank Millennium SA',
20        '122' => 'Bank Handlowo-Kredytowy Spółka Akcyjna w Katowicach w likwidacji',
21        '124' => 'Bank Polska Kasa Opieki SA',
22        '128' => 'HSBC Bank Polska SA',
23        '132' => 'Bank Pocztowy SA',
24        '147' => 'Euro Bank SA',
25        '154' => 'Bank Ochrony Środowiska SA',
26        '158' => 'Mercedes-Benz Bank Polska SA',
27        '161' => 'SGB-Bank SA',
28        '167' => 'RBS Bank (Polska) SA',
29        '168' => 'PLUS BANK SA',
30        '175' => 'Raiffeisen Bank Polska SA',
31        '184' => 'Societe Generale SA Oddział w Polsce',
32        '187' => 'Nest Bank S.A.',
33        '189' => 'Pekao Bank Hipoteczny SA',
34        '191' => 'Deutsche Bank Polska SA',
35        '193' => 'BANK POLSKIEJ SPÓŁDZIELCZOŚCI SA',
36        '194' => 'Credit Agricole Bank Polska SA',
37        '195' => 'Idea Bank SA',
38        '203' => 'Bank BGŻ BNP Paribas SA',
39        '212' => 'Santander Consumer Bank SA',
40        '213' => 'VOLKSWAGEN BANK POLSKA SA',
41        '214' => 'FCA-Group Bank Polska SA',
42        '215' => 'mBank Hipoteczny SA',
43        '216' => 'Toyota Bank Polska SA',
44        '219' => 'DNB Bank Polska SA',
45        '224' => 'Banque PSA Finance SA Oddział w Polsce',
46        '225' => 'Svenska Handelsbanken AB SA Oddział w Polsce',
47        '229' => 'BPI Bank Polskich Inwestycji SA',
48        '232' => 'Nykredit Realkredit A/S SA - Oddział w Polsce',
49        '235' => 'BNP PARIBAS SA Oddział w Polsce',
50        '236' => 'Danske Bank A/S SA Oddział w Polsce',
51        '237' => 'Skandinaviska Enskilda Banken AB (SA) - Oddział w Polsce',
52        '239' => 'CAIXABANK, S.A. (SPÓŁKA AKCYJNA)ODDZIAŁ W POLSCE',
53        '241' => 'Elavon Financial Services Designated Activity Company (spółka z o.o. o wyznaczonym przedmiocie działalności) Oddział w Polsce',
54        '243' => 'BNP Paribas Securities Services SKA Oddział w Polsce',
55        '247' => 'HAITONG BANK, S.A. Spółka Akcyjna Oddział w Polsce',
56        '248' => 'Getin Noble Bank SA',
57        '249' => 'Alior Bank SA',
58        '251' => 'Aareal Bank Aktiengesellschaft (Spółka Akcyjna) - Oddział w Polsce',
59        '254' => 'Citibank Europe plc (Publiczna Spółka Akcyjna) Oddział w Polsce',
60        '255' => 'Ikano Bank AB (publ) Spółka Akcyjna Oddział w Polsce',
61        '256' => 'Nordea Bank AB SA Oddział w Polsce',
62        '257' => 'UBS Limited (spółka z ograniczoną odpowiedzialnością) Oddział w Polsce',
63        '258' => 'J.P. Morgan Europe Limited Sp. z o.o. Oddział w Polsce',
64        '260' => 'Bank of China (Luxembourg) S.A. Spółka Akcyjna Oddział w Polsce',
65        '262' => 'Industrial and Commercial Bank of China (Europe) S.A. (Spółka Akcyjna) Oddział w Polsce',
66        '263' => 'Saxo Bank A/S Spółka Akcyjna Oddział w Polsce w likwidacji',
67        '264' => 'RCI Banque Spółka Akcyjna Oddział w Polsce',
68        '265' => 'EUROCLEAR Bank SA/NV (Spółka Akcyjna) - Oddział w Polsce',
69        '266' => 'Intesa Sanpaolo S.p.A. Spółka Akcyjna Oddział w Polsce',
70        '267' => 'Western Union International Bank GmbH, Sp. z o.o. Oddział w Polsce',
71        '269' => 'PKO Bank Hipoteczny SA',
72        '270' => 'TF BANK AB (Spółka z ograniczoną odpowiedzialnością) Oddział w Polsce',
73        '271' => 'FCE Bank Spółka Akcyjna Oddział w Polsce',
74        '272' => 'AS Inbank Spółka Akcyjna - Oddział w Polsce',
75        '273' => 'China Construction Bank (Europe) S.A. (Spółka Akcyjna) Oddział w Polsce',
76        '274' => 'MUFG Bank (Europe) N.V. S.A. Oddział w Polsce',
77        '275' => 'John Deere Bank S.A. Spółka Akcyjna Oddział w Polsce',
78    );
79
80    /**
81     * @example 'Euro Bank SA'
82     */
83    public static function bank()
84    {
85        return static::randomElement(static::$banks);
86    }
87
88    /**
89     * International Bank Account Number (IBAN)
90     * @link http://en.wikipedia.org/wiki/International_Bank_Account_Number
91     * @param  string  $prefix      for generating bank account number of a specific bank
92     * @param  string  $countryCode ISO 3166-1 alpha-2 country code
93     * @param  integer $length      total length without country code and 2 check digits
94     * @return string
95     */
96    public static function bankAccountNumber($prefix = '', $countryCode = 'PL', $length = null)
97    {
98        return static::iban($countryCode, $prefix, $length);
99    }
100
101    protected static function addBankCodeChecksum($iban, $countryCode = 'PL')
102    {
103        if ($countryCode != 'PL' || strlen($iban) <= 8) {
104            return $iban;
105        }
106        $checksum = 0;
107        $weights = array(7, 1, 3, 9, 7, 1, 3);
108        for ($i = 0; $i < 7; $i++) {
109            $checksum += $weights[$i] * (int) $iban[$i];
110        }
111        $checksum = $checksum % 10;
112
113        return substr($iban, 0, 7) . $checksum . substr($iban, 8);
114    }
115}
116