bs2_api 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.env.example +3 -0
- data/.gitignore +4 -0
- data/Gemfile +6 -1
- data/Gemfile.lock +49 -7
- data/Makefile +2 -0
- data/README.md +126 -17
- data/bin/setup +1 -3
- data/bs2_api.gemspec +6 -1
- data/lib/bs2_api.rb +61 -3
- data/lib/bs2_api/configuration.rb +15 -0
- data/lib/bs2_api/entities/account.rb +59 -0
- data/lib/bs2_api/entities/bank.rb +40 -0
- data/lib/bs2_api/entities/customer.rb +51 -0
- data/lib/bs2_api/entities/payment.rb +38 -0
- data/lib/bs2_api/entities/pix_key.rb +40 -0
- data/lib/bs2_api/errors/bad_request.rb +7 -0
- data/lib/bs2_api/errors/base.rb +7 -0
- data/lib/bs2_api/errors/invalid_customer.rb +7 -0
- data/lib/bs2_api/errors/invalid_pix_key.rb +7 -0
- data/lib/bs2_api/errors/missing_configuration.rb +7 -0
- data/lib/bs2_api/errors/server_error.rb +7 -0
- data/lib/bs2_api/errors/unauthorized.rb +7 -0
- data/lib/bs2_api/initializers/hash.rb +9 -0
- data/lib/bs2_api/initializers/object.rb +11 -0
- data/lib/bs2_api/payment/base.rb +45 -0
- data/lib/bs2_api/payment/key.rb +22 -0
- data/lib/bs2_api/payment/manual.rb +22 -0
- data/lib/bs2_api/request/auth.rb +51 -0
- data/lib/bs2_api/util/bank_service.rb +20 -0
- data/lib/bs2_api/util/banks.yml +393 -0
- data/lib/bs2_api/version.rb +1 -1
- metadata +95 -4
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Entities
|
5
|
+
class Bank
|
6
|
+
attr_accessor :ispb, :account, :customer
|
7
|
+
|
8
|
+
def initialize(args = {})
|
9
|
+
@ispb = args.fetch(:ispb, nil)
|
10
|
+
@account = args.fetch(:account, nil)
|
11
|
+
@customer = args.fetch(:customer, nil)
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_hash
|
15
|
+
ActiveSupport::HashWithIndifferentAccess.new(
|
16
|
+
{
|
17
|
+
"ispb": get_ispb,
|
18
|
+
"conta": @account.to_hash,
|
19
|
+
"pessoa": @customer.to_hash
|
20
|
+
}
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.from_response(hash_payload)
|
25
|
+
hash = ActiveSupport::HashWithIndifferentAccess.new(hash_payload)
|
26
|
+
|
27
|
+
Bs2Api::Entities::Bank.new(
|
28
|
+
ispb: hash["ispb"],
|
29
|
+
account: Bs2Api::Entities::Account.from_response(hash["conta"]),
|
30
|
+
customer: Bs2Api::Entities::Customer.from_response(hash["pessoa"])
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def get_ispb
|
36
|
+
Bs2Api::Util::BankService.find_by_code(@account.bank_code)["ispb"]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Entities
|
5
|
+
class Customer
|
6
|
+
attr_accessor :document, :type, :name, :business_name
|
7
|
+
|
8
|
+
TYPES = {
|
9
|
+
personal: 'CPF',
|
10
|
+
business: 'CNPJ'
|
11
|
+
}
|
12
|
+
|
13
|
+
def initialize(args = {})
|
14
|
+
@document = args.fetch(:document, nil)
|
15
|
+
@type = args.fetch(:type, 'CPF')
|
16
|
+
@name = args.fetch(:name, nil)
|
17
|
+
@business_name = args.fetch(:business_name, nil)
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_hash
|
21
|
+
ActiveSupport::HashWithIndifferentAccess.new(
|
22
|
+
{
|
23
|
+
"documento": @document,
|
24
|
+
"tipoDocumento": @type,
|
25
|
+
"nome": @name,
|
26
|
+
"nomeFantasia": @business_name
|
27
|
+
}
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.from_response(hash_payload)
|
32
|
+
hash = ActiveSupport::HashWithIndifferentAccess.new(hash_payload)
|
33
|
+
|
34
|
+
Bs2Api::Entities::Customer.new(
|
35
|
+
document: hash["documento"],
|
36
|
+
type: hash["tipoDocumento"],
|
37
|
+
name: hash["nome"],
|
38
|
+
business_name: hash["nomeFantasia"]
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def personal?
|
43
|
+
@type == TYPES[:personal]
|
44
|
+
end
|
45
|
+
|
46
|
+
def business?
|
47
|
+
@type == TYPES[:business]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Entities
|
5
|
+
class Payment
|
6
|
+
attr_accessor :id, :merchant_id, :receiver, :payer
|
7
|
+
|
8
|
+
def initialize(args = {})
|
9
|
+
@id = args.fetch(:id, nil)
|
10
|
+
@merchant_id = args.fetch(:merchant_id, nil)
|
11
|
+
@receiver = args.fetch(:receiver, nil)
|
12
|
+
@payer = args.fetch(:payer, nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_hash
|
16
|
+
ActiveSupport::HashWithIndifferentAccess.new(
|
17
|
+
{
|
18
|
+
"pagamentoId": @id,
|
19
|
+
"endToEndId": @merchant_id,
|
20
|
+
"recebedor": @receiver.to_hash,
|
21
|
+
"pagador": @payer.to_hash
|
22
|
+
}
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.from_response(hash_payload)
|
27
|
+
hash = ActiveSupport::HashWithIndifferentAccess.new(hash_payload)
|
28
|
+
|
29
|
+
Bs2Api::Entities::Payment.new(
|
30
|
+
id: hash["pagamentoId"],
|
31
|
+
merchant_id: hash["endToEndId"],
|
32
|
+
receiver: Bs2Api::Entities::Bank.from_response(hash["recebedor"]),
|
33
|
+
payer: Bs2Api::Entities::Bank.from_response(hash["pagador"])
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Entities
|
5
|
+
class PixKey
|
6
|
+
attr_accessor :key, :type
|
7
|
+
|
8
|
+
TYPES = {
|
9
|
+
cpf: 'CPF',
|
10
|
+
cnpj: 'CNPJ',
|
11
|
+
phone: 'PHONE',
|
12
|
+
email: 'EMAIL',
|
13
|
+
random: 'EVP'
|
14
|
+
}
|
15
|
+
|
16
|
+
def initialize(args = {})
|
17
|
+
@key = args.fetch(:key, nil)
|
18
|
+
@type = args.fetch(:type, 'CPF')
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_hash
|
22
|
+
ActiveSupport::HashWithIndifferentAccess.new(
|
23
|
+
{
|
24
|
+
"valor": @key,
|
25
|
+
"tipo": @type
|
26
|
+
}
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.from_response(hash_payload)
|
31
|
+
hash = ActiveSupport::HashWithIndifferentAccess.new(hash_payload)
|
32
|
+
|
33
|
+
Bs2Api::Entities::PixKey.new(
|
34
|
+
key: hash["valor"],
|
35
|
+
type: hash["tipo"]
|
36
|
+
)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Payment
|
5
|
+
class Base
|
6
|
+
def call
|
7
|
+
response = HTTP.auth("Bearer #{bearer_token}")
|
8
|
+
.headers(headers)
|
9
|
+
.post(
|
10
|
+
url,
|
11
|
+
json: payload
|
12
|
+
)
|
13
|
+
|
14
|
+
raise Bs2Api::Errors::BadRequest, response.body.to_s if !response.status.created?
|
15
|
+
|
16
|
+
Bs2Api::Entities::Payment.from_response(response.parse)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def headers
|
21
|
+
{
|
22
|
+
"Content-Type": "application/json",
|
23
|
+
"Accept": "application/json",
|
24
|
+
"Accept-Encoding": "gzip,deflate"
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
def bearer_token
|
29
|
+
Bs2Api::Request::Auth.token
|
30
|
+
end
|
31
|
+
|
32
|
+
def payload
|
33
|
+
no_method_error
|
34
|
+
end
|
35
|
+
|
36
|
+
def url
|
37
|
+
no_method_error
|
38
|
+
end
|
39
|
+
|
40
|
+
def no_method_error
|
41
|
+
raise NoMethodError, "Missing #{__method__} to #{self.class}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Payment
|
5
|
+
class Key < Base
|
6
|
+
def initialize key
|
7
|
+
@key = key
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def url
|
12
|
+
"#{Bs2Api.endpoint}/pix/direto/forintegration/v1/pagamentos/chave"
|
13
|
+
end
|
14
|
+
|
15
|
+
def payload
|
16
|
+
{
|
17
|
+
"chave": @key.to_hash
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Payment
|
5
|
+
class Manual < Base
|
6
|
+
def initialize bank
|
7
|
+
@bank = bank
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def url
|
12
|
+
"#{Bs2Api.endpoint}/pix/direto/forintegration/v1/pagamentos/manual"
|
13
|
+
end
|
14
|
+
|
15
|
+
def payload
|
16
|
+
{
|
17
|
+
"recebedor": @bank.to_hash
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bs2Api
|
4
|
+
module Request
|
5
|
+
class Auth
|
6
|
+
class << self
|
7
|
+
def token
|
8
|
+
Bs2Api.configuration.valid?
|
9
|
+
|
10
|
+
response = create_session
|
11
|
+
|
12
|
+
raise Bs2Api::Errors::Unauthorized, response.parse["error_description"] if response.status.unauthorized?
|
13
|
+
raise Bs2Api::Errors::BadRequest, response.parse["error_description"] if response.status.bad_request?
|
14
|
+
raise Bs2Api::Errors::ServerError, response.body.to_s if !response.status.success?
|
15
|
+
|
16
|
+
response.parse["access_token"]
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def create_session
|
21
|
+
HTTP.basic_auth(
|
22
|
+
user: Bs2Api.configuration.client_id,
|
23
|
+
pass: Bs2Api.configuration.client_secret
|
24
|
+
).post(
|
25
|
+
auth_url,
|
26
|
+
body: body,
|
27
|
+
headers: headers
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def headers
|
32
|
+
{
|
33
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
34
|
+
"Accept": "application/json"
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def body
|
39
|
+
{
|
40
|
+
grant_type: "client_credentials",
|
41
|
+
scope: "pix.write%20pix.read"
|
42
|
+
}.to_query
|
43
|
+
end
|
44
|
+
|
45
|
+
def auth_url
|
46
|
+
"#{Bs2Api.endpoint}/auth/oauth/v2/token"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module Bs2Api
|
6
|
+
module Util
|
7
|
+
class BankService
|
8
|
+
class << self
|
9
|
+
def find_by_code code
|
10
|
+
bank_list.find {|b| b["code"] == code }
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def bank_list
|
15
|
+
@bank_list ||= YAML.load_file(File.join(__dir__, 'banks.yml'))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,393 @@
|
|
1
|
+
- name: "Banco A.J. RENNER"
|
2
|
+
code: "654"
|
3
|
+
ispb: "92874270"
|
4
|
+
- name: "Banco ABC Brasil"
|
5
|
+
code: "246"
|
6
|
+
ispb: "28195667"
|
7
|
+
- name: "Banco ABN AMRO"
|
8
|
+
code: "75"
|
9
|
+
ispb: "3532415"
|
10
|
+
- name: "Banco ALFA"
|
11
|
+
code: "25"
|
12
|
+
ispb: "3323840"
|
13
|
+
- name: "Banco ARBI"
|
14
|
+
code: "213"
|
15
|
+
ispb: "54403563"
|
16
|
+
- name: "Banco AZTECA do Brasil"
|
17
|
+
code: "19"
|
18
|
+
ispb: "9391857"
|
19
|
+
- name: "Banco BARCLAYS"
|
20
|
+
code: "740"
|
21
|
+
ispb: "61146577"
|
22
|
+
- name: "Banco BBM"
|
23
|
+
code: "107"
|
24
|
+
ispb: "15114366"
|
25
|
+
- name: "Banco BMFBOVESPA"
|
26
|
+
code: "96"
|
27
|
+
ispb: "997185"
|
28
|
+
- name: "Banco BMG"
|
29
|
+
code: "318"
|
30
|
+
ispb: "61186680"
|
31
|
+
- name: "Banco BNP PARIBAS Brasil"
|
32
|
+
code: "752"
|
33
|
+
ispb: "1522368"
|
34
|
+
- name: "Banco BOA VISTA INTERATLANTICO"
|
35
|
+
code: "248"
|
36
|
+
ispb: "33485541"
|
37
|
+
- name: "Banco BONSUCESSO"
|
38
|
+
code: "218"
|
39
|
+
ispb: "71027866"
|
40
|
+
- name: "Banco BRACCE"
|
41
|
+
code: "65"
|
42
|
+
ispb: "48795256"
|
43
|
+
- name: "Banco BRADESCARD"
|
44
|
+
code: "63"
|
45
|
+
ispb: "4184779"
|
46
|
+
- name: "Banco BRADESCO"
|
47
|
+
code: "237"
|
48
|
+
ispb: "60746948"
|
49
|
+
- name: "Banco BRADESCO BBI"
|
50
|
+
code: "36"
|
51
|
+
ispb: "60746948"
|
52
|
+
- name: "Banco BRADESCO CARTÕES"
|
53
|
+
code: "204"
|
54
|
+
ispb: "59438325"
|
55
|
+
- name: "Banco BRADESCO FINANCIAMENTOS"
|
56
|
+
code: "394"
|
57
|
+
ispb: "7207996"
|
58
|
+
- name: "Banco BTG PACTUAL"
|
59
|
+
code: "208"
|
60
|
+
ispb: "30306294"
|
61
|
+
- name: "Banco CACIQUE"
|
62
|
+
code: "263"
|
63
|
+
ispb: "33349358"
|
64
|
+
- name: "Banco CAIXA GERAL – Brasil"
|
65
|
+
code: "473"
|
66
|
+
ispb: "33466988"
|
67
|
+
- name: "Banco CAPITAL"
|
68
|
+
code: "412"
|
69
|
+
ispb: "15173776"
|
70
|
+
- name: "Banco CARGILL"
|
71
|
+
code: "40"
|
72
|
+
ispb: "3609817"
|
73
|
+
- name: "Banco CEDULA"
|
74
|
+
code: "266"
|
75
|
+
ispb: "33132044"
|
76
|
+
- name: "Banco CETELEM"
|
77
|
+
code: "739"
|
78
|
+
ispb: "558456"
|
79
|
+
- name: "Banco CIFRA"
|
80
|
+
code: "233"
|
81
|
+
ispb: "62421979"
|
82
|
+
- name: "Banco CITIBANK"
|
83
|
+
code: "745"
|
84
|
+
ispb: "33479023"
|
85
|
+
- name: "Banco CLÁSSICO"
|
86
|
+
code: "241"
|
87
|
+
ispb: "31597552"
|
88
|
+
- name: "Banco COOPERATIVO do Brasil – Bancoob"
|
89
|
+
code: "756"
|
90
|
+
ispb: "2038232"
|
91
|
+
- name: "Banco COOPERATIVO SICREDI"
|
92
|
+
code: "748"
|
93
|
+
ispb: "1181521"
|
94
|
+
- name: "Banco CREDIT AGRICOLE Brasil"
|
95
|
+
code: "222"
|
96
|
+
ispb: "75647891"
|
97
|
+
- name: "Banco CREDIT SUISSE (Brasil)"
|
98
|
+
code: "505"
|
99
|
+
ispb: "32062580"
|
100
|
+
- name: "Banco da AMAZONIA"
|
101
|
+
code: "3"
|
102
|
+
ispb: "4902979"
|
103
|
+
- name: "Banco da CHINA Brasil"
|
104
|
+
code: "83"
|
105
|
+
ispb: "10690848"
|
106
|
+
- name: "Banco DAYCOVAL"
|
107
|
+
code: "707"
|
108
|
+
ispb: "62232889"
|
109
|
+
- name: "Banco de LA NACION ARGENTINA"
|
110
|
+
code: "300"
|
111
|
+
ispb: "33042151"
|
112
|
+
- name: "Banco de LA PROVINCIA de BUENOS AIRES"
|
113
|
+
code: "495"
|
114
|
+
ispb: "44189447"
|
115
|
+
- name: "Banco de LA REPUBLICA ORIENTAL DEL URUGUAY"
|
116
|
+
code: "494"
|
117
|
+
ispb: "51938876"
|
118
|
+
- name: "Banco de TOKYO MITSUBISHI UFJ Brasil"
|
119
|
+
code: "456"
|
120
|
+
ispb: "60498557"
|
121
|
+
- name: "Banco DIBENS"
|
122
|
+
code: "214"
|
123
|
+
ispb: "61199881"
|
124
|
+
- name: "Banco do BRASIL"
|
125
|
+
code: "1"
|
126
|
+
ispb: "0"
|
127
|
+
- name: "Banco do ESTADO de SERGIPE"
|
128
|
+
code: "47"
|
129
|
+
ispb: "13009717"
|
130
|
+
- name: "Banco do ESTADO do PARA"
|
131
|
+
code: "37"
|
132
|
+
ispb: "4913711"
|
133
|
+
- name: "Banco do ESTADO do RIO GRANDE do SUL (BANRISUL"
|
134
|
+
code: "41"
|
135
|
+
ispb: "92702067"
|
136
|
+
- name: "Banco do NORDESTE do Brasil"
|
137
|
+
code: "4"
|
138
|
+
ispb: "7237373"
|
139
|
+
- name: "Banco FATOR"
|
140
|
+
code: "265"
|
141
|
+
ispb: "33644196"
|
142
|
+
- name: "Banco FIBRA"
|
143
|
+
code: "224"
|
144
|
+
ispb: "58616418"
|
145
|
+
- name: "Banco FICSA"
|
146
|
+
code: "626"
|
147
|
+
ispb: "61348538"
|
148
|
+
- name: "Banco GERADOR"
|
149
|
+
code: "121"
|
150
|
+
ispb: "10664513"
|
151
|
+
- name: "Banco GUANABARA"
|
152
|
+
code: "612"
|
153
|
+
ispb: "31880826"
|
154
|
+
- name: "Banco INDUSTRIAL do Brasil"
|
155
|
+
code: "604"
|
156
|
+
ispb: "31895683"
|
157
|
+
- name: "Banco INDUSTRIAL e COMERCIAL"
|
158
|
+
code: "320"
|
159
|
+
ispb: "7450604"
|
160
|
+
- name: "Banco INDUSVAL"
|
161
|
+
code: "653"
|
162
|
+
ispb: "61024352"
|
163
|
+
- name: "Banco INTERCAP"
|
164
|
+
code: "630"
|
165
|
+
ispb: "58497702"
|
166
|
+
- name: "Banco INTERMEDIUM"
|
167
|
+
code: "77"
|
168
|
+
ispb: "416968"
|
169
|
+
- name: "Banco INVESTCRED UNIBANCO"
|
170
|
+
code: "249"
|
171
|
+
ispb: "61182408"
|
172
|
+
- name: "Banco ITAU BBA"
|
173
|
+
code: "184"
|
174
|
+
ispb: "17298092"
|
175
|
+
- name: "Banco ITAÚ HOLDING FINANCEIRA"
|
176
|
+
code: "652"
|
177
|
+
ispb: "60872504"
|
178
|
+
- name: "Banco J. SAFRA"
|
179
|
+
code: "74"
|
180
|
+
ispb: "3017677"
|
181
|
+
- name: "Banco J.P. MORGAN"
|
182
|
+
code: "376"
|
183
|
+
ispb: "33172537"
|
184
|
+
- name: "Banco JOHN DEERE"
|
185
|
+
code: "217"
|
186
|
+
ispb: "91884981"
|
187
|
+
- name: "Banco KDB do Brasil"
|
188
|
+
code: "76"
|
189
|
+
ispb: "7656500"
|
190
|
+
- name: "Banco KEB do Brasil"
|
191
|
+
code: "757"
|
192
|
+
ispb: "2318507"
|
193
|
+
- name: "Banco LUSO BRASILEIRO"
|
194
|
+
code: "600"
|
195
|
+
ispb: "59118133"
|
196
|
+
- name: "Banco MÁXIMA"
|
197
|
+
code: "243"
|
198
|
+
ispb: "33923798"
|
199
|
+
- name: "Banco MERCANTIL do BRASIL"
|
200
|
+
code: "389"
|
201
|
+
ispb: "17184037"
|
202
|
+
- name: "Banco MIZUHO do Brasil"
|
203
|
+
code: "370"
|
204
|
+
ispb: "61088183"
|
205
|
+
- name: "Banco MODAL"
|
206
|
+
code: "746"
|
207
|
+
ispb: "30723886"
|
208
|
+
- name: "Banco MORGAN STANLEY DEAN WITTER"
|
209
|
+
code: "66"
|
210
|
+
ispb: "2801938"
|
211
|
+
- name: "Banco ORIGINAL"
|
212
|
+
code: "212"
|
213
|
+
ispb: "92894922"
|
214
|
+
- name: "Banco ORIGINAL do Agronegócio"
|
215
|
+
code: "79"
|
216
|
+
ispb: "9516419"
|
217
|
+
- name: "Banco PANAMERICANO"
|
218
|
+
code: "623"
|
219
|
+
ispb: "59285411"
|
220
|
+
- name: "Banco PAULISTA"
|
221
|
+
code: "611"
|
222
|
+
ispb: "61820817"
|
223
|
+
- name: "Banco PECUNIA"
|
224
|
+
code: "613"
|
225
|
+
ispb: "60850229"
|
226
|
+
- name: "Banco PETRA"
|
227
|
+
code: "94"
|
228
|
+
ispb: "11758741"
|
229
|
+
- name: "Banco PINE"
|
230
|
+
code: "643"
|
231
|
+
ispb: "62144175"
|
232
|
+
- name: "Banco POTTENCIAL"
|
233
|
+
code: "735"
|
234
|
+
ispb: "253448"
|
235
|
+
- name: "Banco RABOBANK INTERNATIONAL Brasil"
|
236
|
+
code: "747"
|
237
|
+
ispb: "1023570"
|
238
|
+
- name: "Banco RANDON"
|
239
|
+
code: "88"
|
240
|
+
ispb: "11476673"
|
241
|
+
- name: "Banco RENDIMENTO"
|
242
|
+
code: "633"
|
243
|
+
ispb: "68900810"
|
244
|
+
- name: "Banco RIBEIRAO PRETO"
|
245
|
+
code: "741"
|
246
|
+
ispb: "517645"
|
247
|
+
- name: "Banco RODOBENS"
|
248
|
+
code: "120"
|
249
|
+
ispb: "33603457"
|
250
|
+
- name: "Banco SAFRA"
|
251
|
+
code: "422"
|
252
|
+
ispb: "58160789"
|
253
|
+
- name: "Banco SANTANDER (Brasil"
|
254
|
+
code: "33"
|
255
|
+
ispb: "90400888"
|
256
|
+
- name: "Banco SEMEAR"
|
257
|
+
code: "743"
|
258
|
+
ispb: "795423"
|
259
|
+
- name: "Banco SOCIETE GENERALE Brasil"
|
260
|
+
code: "366"
|
261
|
+
ispb: "61533584"
|
262
|
+
- name: "Banco SOFISA"
|
263
|
+
code: "637"
|
264
|
+
ispb: "60889128"
|
265
|
+
- name: "Banco SUMITOMO MITSUI Brasileiro"
|
266
|
+
code: "464"
|
267
|
+
ispb: "60518222"
|
268
|
+
- name: "Banco TOPAZIO"
|
269
|
+
code: "82"
|
270
|
+
ispb: "7679404"
|
271
|
+
- name: "Banco TRIÂNGULO"
|
272
|
+
code: "634"
|
273
|
+
ispb: "17351180"
|
274
|
+
- name: "Banco VOTORANTIM"
|
275
|
+
code: "655"
|
276
|
+
ispb: "59588111"
|
277
|
+
- name: "Banco VR"
|
278
|
+
code: "610"
|
279
|
+
ispb: "78626983"
|
280
|
+
- name: "Banco WESTERN UNION do Brasil"
|
281
|
+
code: "119"
|
282
|
+
ispb: "13720915"
|
283
|
+
- name: "Banco WOORI BANK do Brasil"
|
284
|
+
code: "124"
|
285
|
+
ispb: "15357060"
|
286
|
+
- name: "BANESTES (Banco do ESTADO do ESPIRITO SANTO"
|
287
|
+
code: "21"
|
288
|
+
ispb: "28127603"
|
289
|
+
- name: "BANIF – Banco INTERNACIONAL do FUNCHAL (Brasil)"
|
290
|
+
code: "719"
|
291
|
+
ispb: "33884941"
|
292
|
+
- name: "BANK OF AMERICA MERRILL LYNCH Banco Múltiplo"
|
293
|
+
code: "755"
|
294
|
+
ispb: "62073200"
|
295
|
+
- name: "BCV – Banco de Crédito e Varejo"
|
296
|
+
code: "250"
|
297
|
+
ispb: "50585090"
|
298
|
+
- name: "BES Investimento do Brasil – Banco de Investimento"
|
299
|
+
code: "78"
|
300
|
+
ispb: "34111187"
|
301
|
+
- name: "BM TRICURY"
|
302
|
+
code: "18"
|
303
|
+
ispb: "57839805"
|
304
|
+
- name: "BNY MELLON"
|
305
|
+
code: "17"
|
306
|
+
ispb: "42272526"
|
307
|
+
- name: "BPN Brasil Banco Múltiplo"
|
308
|
+
code: "69"
|
309
|
+
ispb: "61033106"
|
310
|
+
- name: "BRADESCO BERJ"
|
311
|
+
code: "122"
|
312
|
+
ispb: "33147315"
|
313
|
+
- name: "BRASIL PLURAL Banco Múltiplo"
|
314
|
+
code: "125"
|
315
|
+
ispb: "45246410"
|
316
|
+
- name: "BRB – Banco de Brasília"
|
317
|
+
code: "70"
|
318
|
+
ispb: "208"
|
319
|
+
- name: "BRICKELL Crédito Financiamento e Investimento"
|
320
|
+
code: "92"
|
321
|
+
ispb: "12865507"
|
322
|
+
- name: "CAIXA ECONOMICA FEDERAL"
|
323
|
+
code: "104"
|
324
|
+
ispb: "360305"
|
325
|
+
- name: "CC CREDICOAMO Crédito Rural Cooperativa"
|
326
|
+
code: "10"
|
327
|
+
ispb: "81723108"
|
328
|
+
- name: "CC UNICRED Brasil Central"
|
329
|
+
code: "112"
|
330
|
+
ispb: "4243780"
|
331
|
+
- name: "CC UNICRED do Brasil"
|
332
|
+
code: "136"
|
333
|
+
ispb: "315557"
|
334
|
+
- name: "CC UNIPRIME NORTE do PARANA"
|
335
|
+
code: "84"
|
336
|
+
ispb: "2398976"
|
337
|
+
- name: "CECOOPES – Central das Cooperativas de Economia e Crédito Mútuo"
|
338
|
+
code: "114"
|
339
|
+
ispb: "5790149"
|
340
|
+
- name: "CITIBANK N.A."
|
341
|
+
code: "477"
|
342
|
+
ispb: "33042953"
|
343
|
+
- name: "Cooperativa Central de Crédito do Estado de SP"
|
344
|
+
code: "90"
|
345
|
+
ispb: "73085573"
|
346
|
+
- name: "Cooperativa Central de Crédito NOROESTE Brasileiro"
|
347
|
+
code: "97"
|
348
|
+
ispb: "4632856"
|
349
|
+
- name: "Cooperativa Central de Crédito Urbano – CECRED"
|
350
|
+
code: "85"
|
351
|
+
ispb: "5463212"
|
352
|
+
- name: "Cooperativa de Crédito Rural da Região da Mogiana"
|
353
|
+
code: "89"
|
354
|
+
ispb: "62109566"
|
355
|
+
- name: "CREDIALIANCA Cooperativa de Crédito RURAL"
|
356
|
+
code: "98"
|
357
|
+
ispb: "78157146"
|
358
|
+
- name: "DEUTSCHE BANK – Banco ALEMÃO"
|
359
|
+
code: "487"
|
360
|
+
ispb: "62331228"
|
361
|
+
- name: "HIPERCARD Banco Múltiplo"
|
362
|
+
code: "62"
|
363
|
+
ispb: "3012230"
|
364
|
+
- name: "HSBC BANK Brasil – Banco Múltiplo"
|
365
|
+
code: "399"
|
366
|
+
ispb: "1701201"
|
367
|
+
- name: "ICBC do Brasil Banco Múltiplo"
|
368
|
+
code: "132"
|
369
|
+
ispb: "17453575"
|
370
|
+
- name: "ING BANK N.V."
|
371
|
+
code: "492"
|
372
|
+
ispb: "49336860"
|
373
|
+
- name: "ITAÚ UNIBANCO"
|
374
|
+
code: "341"
|
375
|
+
ispb: "60701190"
|
376
|
+
- name: "NOVO Banco CONTINENTAL"
|
377
|
+
code: "753"
|
378
|
+
ispb: "74828799"
|
379
|
+
- name: "PARANA Banco"
|
380
|
+
code: "254"
|
381
|
+
ispb: "14388334"
|
382
|
+
- name: "SCOTIABANK Brasil Banco Múltiplo"
|
383
|
+
code: "751"
|
384
|
+
ispb: "29030467"
|
385
|
+
- name: "UNICRED Central RS – Central de Cooperativa de Economia e Crédito Mútuo do Estado do RS"
|
386
|
+
code: "91"
|
387
|
+
ispb: "1634601"
|
388
|
+
- name: "UNICRED Central Santa Catarina"
|
389
|
+
code: "87"
|
390
|
+
ispb: "543968"
|
391
|
+
- name: "UNIPRIME Central – Central Interestadual de Cooperativa de Crédito"
|
392
|
+
code: "99"
|
393
|
+
ispb: "3046391"
|