pagseguro-oficial 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +9 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE-2.0.txt +177 -0
  7. data/README.md +320 -0
  8. data/Rakefile +5 -0
  9. data/examples/abandoned_transactions.rb +26 -0
  10. data/examples/boot.rb +9 -0
  11. data/examples/invalid_transaction_by_notification_code.rb +9 -0
  12. data/examples/payment_request.rb +49 -0
  13. data/examples/transaction_by_notification_code.rb +5 -0
  14. data/examples/transactions_by_date.rb +23 -0
  15. data/lib/pagseguro/address.rb +40 -0
  16. data/lib/pagseguro/errors.rb +28 -0
  17. data/lib/pagseguro/exceptions.rb +3 -0
  18. data/lib/pagseguro/extensions/ensure_type.rb +9 -0
  19. data/lib/pagseguro/extensions/mass_assignment.rb +11 -0
  20. data/lib/pagseguro/item.rb +30 -0
  21. data/lib/pagseguro/items.rb +27 -0
  22. data/lib/pagseguro/notification.rb +21 -0
  23. data/lib/pagseguro/payment_method.rb +38 -0
  24. data/lib/pagseguro/payment_request/response.rb +30 -0
  25. data/lib/pagseguro/payment_request/serializer.rb +91 -0
  26. data/lib/pagseguro/payment_request.rb +96 -0
  27. data/lib/pagseguro/payment_status.rb +33 -0
  28. data/lib/pagseguro/phone.rb +12 -0
  29. data/lib/pagseguro/report.rb +124 -0
  30. data/lib/pagseguro/request.rb +78 -0
  31. data/lib/pagseguro/sender.rb +23 -0
  32. data/lib/pagseguro/shipping.rb +57 -0
  33. data/lib/pagseguro/transaction/response.rb +12 -0
  34. data/lib/pagseguro/transaction/serializer.rb +115 -0
  35. data/lib/pagseguro/transaction.rb +167 -0
  36. data/lib/pagseguro/version.rb +3 -0
  37. data/lib/pagseguro-oficial.rb +1 -0
  38. data/lib/pagseguro.rb +94 -0
  39. data/locales/pt-BR.yml +115 -0
  40. data/pagseguro-oficial.gemspec +32 -0
  41. data/spec/fixtures/by_date/success.xml +85 -0
  42. data/spec/fixtures/invalid_code.xml +7 -0
  43. data/spec/fixtures/payment_request/failure.xml +7 -0
  44. data/spec/fixtures/payment_request/success.xml +5 -0
  45. data/spec/fixtures/transactions/additional.xml +53 -0
  46. data/spec/fixtures/transactions/success.xml +53 -0
  47. data/spec/pagseguro/address_spec.rb +17 -0
  48. data/spec/pagseguro/errors_spec.rb +91 -0
  49. data/spec/pagseguro/item_spec.rb +20 -0
  50. data/spec/pagseguro/items_spec.rb +56 -0
  51. data/spec/pagseguro/notification_spec.rb +18 -0
  52. data/spec/pagseguro/pagseguro_spec.rb +54 -0
  53. data/spec/pagseguro/payment_method_spec.rb +41 -0
  54. data/spec/pagseguro/payment_request/response_spec.rb +24 -0
  55. data/spec/pagseguro/payment_request/serializer_spec.rb +142 -0
  56. data/spec/pagseguro/payment_request_spec.rb +107 -0
  57. data/spec/pagseguro/payment_status_spec.rb +24 -0
  58. data/spec/pagseguro/phone_spec.rb +6 -0
  59. data/spec/pagseguro/request_spec.rb +75 -0
  60. data/spec/pagseguro/sender_spec.rb +9 -0
  61. data/spec/pagseguro/shipping_spec.rb +40 -0
  62. data/spec/pagseguro/transaction/serializer_spec.rb +61 -0
  63. data/spec/pagseguro/transaction_spec.rb +118 -0
  64. data/spec/spec_helper.rb +29 -0
  65. data/spec/support/ensure_type_macro.rb +17 -0
  66. data/spec/support/mass_assignment_macro.rb +11 -0
  67. metadata +289 -0
@@ -0,0 +1,115 @@
1
+ module PagSeguro
2
+ class Transaction
3
+ class Serializer
4
+ attr_reader :xml
5
+
6
+ def initialize(xml)
7
+ @xml = xml
8
+ end
9
+
10
+ def serialize
11
+ {}.tap do |data|
12
+ serialize_general(data)
13
+ serialize_amounts(data)
14
+ serialize_dates(data)
15
+ serialize_items(data)
16
+ serialize_sender(data)
17
+ serialize_shipping(data) if xml.css("shipping").any?
18
+ end
19
+ end
20
+
21
+ def serialize_general(data)
22
+ data[:code] = xml.css(">code").text
23
+ data[:reference] = xml.css("reference").text
24
+ data[:type_id] = xml.css(">type").text
25
+ data[:payment_link] = xml.css("paymentLink").text
26
+ data[:status] = xml.css("status").text
27
+
28
+ cancellation_source = xml.css("cancellationSource")
29
+ data[:cancellation_source] = cancellation_source.text if cancellation_source.any?
30
+
31
+ data[:payment_method] = {
32
+ type_id: xml.css("paymentMethod > type").text,
33
+ code: xml.css("paymentMethod > code").text
34
+ }
35
+ end
36
+
37
+ def serialize_dates(data)
38
+ data[:created_at] = Time.parse(xml.css("date").text)
39
+
40
+ updated_at = xml.css("lastEventDate").text
41
+ data[:updated_at] = Time.parse(updated_at) unless updated_at.empty?
42
+
43
+ escrow_end_date = xml.css("escrowEndDate")
44
+ data[:escrow_end_date] = Time.parse(escrow_end_date.text) if escrow_end_date.any?
45
+ end
46
+
47
+ def serialize_amounts(data)
48
+ data[:gross_amount] = BigDecimal(xml.css("grossAmount").text)
49
+ data[:discount_amount] = BigDecimal(xml.css("discountAmount").text)
50
+ data[:fee_amount] = BigDecimal(xml.css("feeAmount").text)
51
+ data[:net_amount] = BigDecimal(xml.css("netAmount").text)
52
+ data[:extra_amount] = BigDecimal(xml.css("extraAmount").text)
53
+ data[:installments] = xml.css("installmentCount").text.to_i
54
+ end
55
+
56
+ def serialize_items(data)
57
+ data[:items] = []
58
+
59
+ xml.css("items > item").each do |node|
60
+ item = {}
61
+ item[:id] = node.css("id").text
62
+ item[:description] = node.css("description").text
63
+ item[:quantity] = node.css("quantity").text.to_i
64
+ item[:amount] = BigDecimal(node.css("amount").text)
65
+
66
+ data[:items] << item
67
+ end
68
+ end
69
+
70
+ def serialize_sender(data)
71
+ sender = {
72
+ name: xml.css("sender > name").text,
73
+ email: xml.css("sender > email").text
74
+ }
75
+
76
+ serialize_phone(sender)
77
+ data[:sender] = sender
78
+ end
79
+
80
+ def serialize_phone(data)
81
+ data[:phone] = {
82
+ area_code: xml.css("sender > phone > areaCode").text,
83
+ number: xml.css("sender > phone > number").text
84
+ }
85
+ end
86
+
87
+ def serialize_shipping(data)
88
+ shipping = {
89
+ type_id: xml.css("shipping > type").text,
90
+ cost: BigDecimal(xml.css("shipping > cost").text),
91
+ }
92
+
93
+ serialize_address(shipping)
94
+ data[:shipping] = shipping
95
+ end
96
+
97
+ def serialize_address(data)
98
+ data[:address] = {
99
+ street: address_node.css("> street").text,
100
+ number: address_node.css("> number").text,
101
+ complement: address_node.css("> complement").text,
102
+ district: address_node.css("> district").text,
103
+ city: address_node.css("> city").text,
104
+ state: address_node.css("> state").text,
105
+ country: address_node.css("> country").text,
106
+ postal_code: address_node.css("> postalCode").text,
107
+ }
108
+ end
109
+
110
+ def address_node
111
+ @address_node ||= xml.css("shipping > address")
112
+ end
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,167 @@
1
+ module PagSeguro
2
+ class Transaction
3
+ include Extensions::MassAssignment
4
+ include Extensions::EnsureType
5
+
6
+ # When the payment request was created.
7
+ attr_accessor :created_at
8
+
9
+ # The transaction code.
10
+ attr_accessor :code
11
+
12
+ # The reference code identifies the order you placed on the payment request.
13
+ # It's used by the store and can be something like the order id.
14
+ attr_accessor :reference
15
+
16
+ # The transaction type.
17
+ attr_accessor :type_id
18
+
19
+ # The last notification's update.
20
+ attr_accessor :updated_at
21
+
22
+ # The transaction status.
23
+ attr_reader :status
24
+
25
+ # The payment method.
26
+ attr_reader :payment_method
27
+
28
+ # The boleto payment url.
29
+ attr_accessor :payment_link
30
+
31
+ # The gross amount.
32
+ attr_accessor :gross_amount
33
+
34
+ # The discount amount.
35
+ attr_accessor :discount_amount
36
+
37
+ # The PagSeguro fee amount.
38
+ attr_accessor :fee_amount
39
+
40
+ # The net amount.
41
+ attr_accessor :net_amount
42
+
43
+ # Set the extra amount applied to the transaction's total.
44
+ # It's considered as an extra charge when positive, or a discount if
45
+ # negative.
46
+ attr_accessor :extra_amount
47
+
48
+ # The installment count.
49
+ attr_accessor :installments
50
+
51
+ # The payer information (who is sending money).
52
+ attr_reader :sender
53
+
54
+ # The shipping information.
55
+ attr_reader :shipping
56
+
57
+ # The cancellation source.
58
+ attr_accessor :cancellation_source
59
+
60
+ # The escrow end date.
61
+ attr_accessor :escrow_end_date
62
+
63
+ # Set the transaction errors.
64
+ attr_reader :errors
65
+
66
+ # Find a transaction by its transactionCode
67
+ # Return a PagSeguro::Transaction instance
68
+ def self.find_by_code(code)
69
+ load_from_response Request.get("transactions/#{code}")
70
+ end
71
+
72
+ # Find a transaction by its notificationCode.
73
+ # Return a PagSeguro::Transaction instance.
74
+ def self.find_by_notification_code(code)
75
+ load_from_response Request.get("transactions/notifications/#{code}")
76
+ end
77
+
78
+ # Search transactions within a date range.
79
+ # Return a PagSeguro::Report instance.
80
+ #
81
+ # Options:
82
+ #
83
+ # # +starts_at+: the starting date. Defaults to the last 24-hours.
84
+ # # +ends_at+: the ending date.
85
+ # # +page+: the current page.
86
+ # # +per_page+: the result limit.
87
+ #
88
+ def self.find_by_date(options = {}, page = 0)
89
+ options = {
90
+ starts_at: Time.now - 86400,
91
+ ends_at: Time.now,
92
+ per_page: 50
93
+ }.merge(options)
94
+
95
+ Report.new(Transaction, "transactions", options, page)
96
+ end
97
+
98
+ # Get abandoned transactions.
99
+ # Return a PagSeguro::Report instance.
100
+ #
101
+ # Options:
102
+ #
103
+ # # +starts_at+: the starting date. Defaults to the last 24-hours.
104
+ # # +ends_at+: the ending date. Defaults to 15 minutes ago. **Attention:** you have to set it this to <tt>Time.now - 15 minutes</tt>, otherwise the "finalDate must be lower than allowed limit" error will be returned.
105
+ # # +page+: the current page.
106
+ # # +per_page+: the result limit.
107
+ #
108
+ def self.find_abandoned(options = {}, page = 0)
109
+ options = {
110
+ starts_at: Time.now - 86400,
111
+ ends_at: Time.now - 900,
112
+ per_page: 50
113
+ }.merge(options)
114
+
115
+ Report.new(Transaction, "transactions/abandoned", options, page)
116
+ end
117
+
118
+ # Serialize the HTTP response into data.
119
+ def self.load_from_response(response) # :nodoc:
120
+ if response.success? and response.xml?
121
+ load_from_xml Nokogiri::XML(response.body).css("transaction").first
122
+ else
123
+ Response.new Errors.new(response)
124
+ end
125
+ end
126
+
127
+ # Serialize the XML object.
128
+ def self.load_from_xml(xml) # :nodoc:
129
+ new Serializer.new(xml).serialize
130
+ end
131
+
132
+ # Normalize the sender object.
133
+ def sender=(sender)
134
+ @sender = ensure_type(Sender, sender)
135
+ end
136
+
137
+ # Normalize the shipping object.
138
+ def shipping=(shipping)
139
+ @shipping = ensure_type(Shipping, shipping)
140
+ end
141
+
142
+ # Hold the transaction's items.
143
+ def items
144
+ @items ||= Items.new
145
+ end
146
+
147
+ # Normalize the items list.
148
+ def items=(_items)
149
+ _items.each {|item| items << item }
150
+ end
151
+
152
+ # Normalize the payment method.
153
+ def payment_method=(payment_method)
154
+ @payment_method = ensure_type(PaymentMethod, payment_method)
155
+ end
156
+
157
+ # Normalize the payment status.
158
+ def status=(status)
159
+ @status = ensure_type(PaymentStatus, status)
160
+ end
161
+
162
+ private
163
+ def after_initialize
164
+ @errors = Errors.new
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,3 @@
1
+ module PagSeguro
2
+ VERSION = "2.0.5"
3
+ end
@@ -0,0 +1 @@
1
+ require "pagseguro"
data/lib/pagseguro.rb ADDED
@@ -0,0 +1,94 @@
1
+ require "bigdecimal"
2
+ require "forwardable"
3
+ require "time"
4
+
5
+ require "nokogiri"
6
+ require "aitch"
7
+ require "i18n"
8
+
9
+ require "pagseguro/version"
10
+ require "pagseguro/errors"
11
+ require "pagseguro/exceptions"
12
+ require "pagseguro/extensions/mass_assignment"
13
+ require "pagseguro/extensions/ensure_type"
14
+ require "pagseguro/address"
15
+ require "pagseguro/shipping"
16
+ require "pagseguro/phone"
17
+ require "pagseguro/item"
18
+ require "pagseguro/items"
19
+ require "pagseguro/payment_method"
20
+ require "pagseguro/payment_request"
21
+ require "pagseguro/payment_request/serializer"
22
+ require "pagseguro/payment_request/response"
23
+ require "pagseguro/payment_status"
24
+ require "pagseguro/request"
25
+ require "pagseguro/report"
26
+ require "pagseguro/sender"
27
+ require "pagseguro/notification"
28
+ require "pagseguro/transaction"
29
+ require "pagseguro/transaction/response"
30
+ require "pagseguro/transaction/serializer"
31
+
32
+ I18n.load_path += Dir[File.expand_path("../../locales/*.yml", __FILE__)]
33
+
34
+ module PagSeguro
35
+ class << self
36
+ # Primary e-mail associated with this account.
37
+ attr_accessor :email
38
+
39
+ # The e-mail that will be displayed when sender is redirected
40
+ # to PagSeguro.
41
+ attr_accessor :receiver_email
42
+
43
+ # The API token associated with this account.
44
+ attr_accessor :token
45
+
46
+ # The encoding that will be used.
47
+ attr_accessor :encoding
48
+
49
+ # The PagSeguro environment.
50
+ # Only +production+ for now.
51
+ attr_accessor :environment
52
+ end
53
+
54
+ self.encoding = "UTF-8"
55
+ self.environment = :production
56
+
57
+ # Register endpoints by environment.
58
+ def self.uris
59
+ @uris ||= {
60
+ production: {
61
+ api: "https://ws.pagseguro.uol.com.br/v2",
62
+ site: "https://pagseguro.uol.com.br/v2"
63
+ }
64
+ }
65
+ end
66
+
67
+ # Return the root uri based on its type.
68
+ # Current types are <tt>:api</tt> or <tt>:site</tt>
69
+ def self.root_uri(type)
70
+ root = uris.fetch(environment.to_sym) { raise InvalidEnvironmentError }
71
+ root[type.to_sym]
72
+ end
73
+
74
+ # Set the global configuration.
75
+ #
76
+ # PagSeguro.configure do |config|
77
+ # config.email = "john@example.com"
78
+ # config.token = "abc"
79
+ # end
80
+ #
81
+ def self.configure(&block)
82
+ yield self
83
+ end
84
+
85
+ # The API endpoint.
86
+ def self.api_url(path)
87
+ File.join(root_uri(:api), path)
88
+ end
89
+
90
+ # The site url.
91
+ def self.site_url(path)
92
+ File.join(root_uri(:site), path)
93
+ end
94
+ end
data/locales/pt-BR.yml ADDED
@@ -0,0 +1,115 @@
1
+ pt-BR:
2
+ pagseguro:
3
+ errors:
4
+ unauthorized: "Não autorizado."
5
+ "10001": "O parâmetro email deve ser informado."
6
+ "10002": "O parâmetro token deve ser informado."
7
+ "10003": "O valor informado no parâmetro email é inválido."
8
+ "11001": "O parâmetro receiverEmail deve ser informado."
9
+ "11002": "O tamanho do valor informado no parâmetro receiverEmail é inválido."
10
+ "11003": "O valor informado no parâmetro receiverEmail é inválido."
11
+ "11004": "O parâmetro currency deve ser informado."
12
+ "11005": "O valor informado no parâmetro currency é inválido."
13
+ "11006": "O tamanho do valor informado no parâmetro redirectURL é inválido."
14
+ "11007": "O valor informado no parâmetro redirectURL é inválido."
15
+ "11008": "O tamanho do valor informado no parâmetro reference é inválido."
16
+ "11009": "O tamanho do valor informado no parâmetro senderEmail é inválido."
17
+ "11010": "O valor informado no parâmetro senderEmail é inválido."
18
+ "11011": "O tamanho do valor informado no parâmetro senderName é inválido."
19
+ "11012": "O valor informado no parâmetro senderName é inválido."
20
+ "11013": "O valor informado no parâmetro senderAreaCode é inválido."
21
+ "11014": "O valor informado no parâmetro senderPhone é inválido."
22
+ "11015": "O parâmetro shippingType deve ser informado."
23
+ "11016": "O tipo definido no parâmetro shippingType é inválido."
24
+ "11017": "O valor informado no parâmetro shippingPostalCode é inválido."
25
+ "11018": "O tamanho do valor informado no parâmetro shippingAddressStreet é inválido."
26
+ "11019": "O tamanho do valor informado no parâmetro shippingAddressNumber é inválido."
27
+ "11020": "O tamanho do valor informado no parâmetro shippingAddressComplement é inválido."
28
+ "11021": "O tamanho do valor informado no parâmetro shippingAddressDistrict é inválido."
29
+ "11022": "O tamanho do valor informado no parâmetro shippingAddressCity é inválido."
30
+ "11023": "O formato do valor informado no parâmetro shippingAddressState é inválido."
31
+ "11024": "O valor informado no parâmetro itemQuantity é inválido."
32
+ "11025": "O parâmetro itemId deve ser informado."
33
+ "11026": "O parâmetro itemQuantity deve ser informado."
34
+ "11027": "O valor informado no parâmetro itemQuantity é inválido."
35
+ "11028": "O parâmetro itemAmount deve ser informado."
36
+ "11029": "O formato do valor informado no parâmetro itemAmount é inválido."
37
+ "11030": "O valor informado no parâmetro itemAmount é inválido."
38
+ "11031": "O formato do valor informado no parâmetro itemShippingCost é inválido."
39
+ "11032": "O valor informado no parâmetro itemShippingCost é inválido."
40
+ "11033": "O parâmetro itemDescription deve ser informado."
41
+ "11034": "O tamanho do valor informado no parâmetro itemDescription é inválido."
42
+ "11035": "O valor informado no parâmetro itemWeight é inválido."
43
+ "11036": "O formato do valor informado no parâmetro extraAmount é inválido."
44
+ "11037": "O valor informado no parâmetro extraAmount é inválido."
45
+ "11038": "Valor não autorizado para receiverEmail."
46
+ "11039": "A estrutura do xml está incorreta."
47
+ "11040": "O formato do valor informado no parâmetro maxAge é inválido."
48
+ "11041": "O valor informado no parâmetro maxAge é inválido."
49
+ "11042": "O formato do valor informado no parâmetro maxUses é inválido."
50
+ "11043": "O valor informado no parâmetro maxUses é inválido."
51
+ "11044": "O parâmetro initialDate deve ser informado."
52
+ "11045": "O valor informado no parâmetro initialDate deve ser inferior ou igual a data atual."
53
+ "11046": "O valor informado no parâmetro initialDate não pode ser anterior a 180 dias contados da data atual."
54
+ "11047": "O valor informado no parâmetro initialDate deve ser menor ou igual ao valor informado no parâmetro finalDate."
55
+ "11048": "O intervalo entre os parâmetros initialDate e finalDate deve ser inferior ou igual a 30 dias."
56
+ "11049": "O valor informado no parâmetro finalDate deve ser inferior ou igual a data atual."
57
+ "11050": "O valor informado no parâmetro initialDate é inválido. O formato correto é yyyy-MM-ddTHH:mm."
58
+ "11051": "O valor informado no parâmetro finalDate é inválido. O formato correto é yyyy-MM-ddTHH:mm."
59
+ "11052": "O valor informado no parâmetro page é inválido. Utilize um inteiro maior que 0."
60
+ "11053": "O valor informado no parâmetro maxPageResults deve ser entre 1 e 1000."
61
+ "11105": "O valor total do checkout é inválido."
62
+ "11111": "O valor informado no parâmetro shippingCost é inválido."
63
+ "11112": "O formato do valor informado no parâmetro shippingCost é inválido."
64
+ "11164": "O valor informado no parâmetro senderCPF é inválido."
65
+ "13001": "O código de notificação informado é inválido."
66
+ "13002": "O código da transação deve ser informado."
67
+ "13003": "O código de transação informado é inválido."
68
+ "13004": "O parâmetro initialDate deve ser informado"
69
+ "13005": "O valor informado no parâmetro initialDate deve ser inferior ou igual a data atual."
70
+ "13006": "O valor informado no parâmetro initialDate não pode ser anterior a 180 dias contados da data atual."
71
+ "13007": "O valor informado no parâmetro initialDate deve ser menor ou igual ao valor informado no parâmetro finalDate."
72
+ "13008": "O intervalo entre os parâmetros initialDate e finalDate deve ser inferior ou igual a 30 dias."
73
+ "13009": "O valor informado no parâmetro finalDate deve ser inferior ou igual a data atual."
74
+ "13010": "O valor informado no parâmetro initialDate é inválido. O formato correto é yyyy-MM-ddTHH:mm."
75
+ "13011": "O valor informado no parâmetro finalDate é inválido. O formato correto é yyyy-MM-ddTHH:mm."
76
+ "13012": "O valor informado no parâmetro initialDate deve ser inferior a."
77
+ "13013": "O valor informado no parâmetro page é inválido. Utilize um inteiro maior que 0."
78
+ "13014": "O valor informado no parâmetro maxPageResults deve ser entre 1 e 1000."
79
+ "13015": "Transação não encontrada."
80
+ "13020": "O valor informado no parâmetro page é superior a quantidade de páginas retornadas."
81
+ "13021": "Esta consulta não pode ser realizada pois o status da transação requisitada é inválido."
82
+
83
+ payment_methods:
84
+ "101": "Cartão de crédito Visa"
85
+ "102": "Cartão de crédito MasterCard"
86
+ "103": "Cartão de crédito American Express"
87
+ "104": "Cartão de crédito Diners"
88
+ "105": "Cartão de crédito Hipercard"
89
+ "106": "Cartão de crédito Aura"
90
+ "107": "Cartão de crédito Elo"
91
+ "108": "Cartão de crédito PLENOCard"
92
+ "109": "Cartão de crédito PersonalCard"
93
+ "110": "Cartão de crédito JCB"
94
+ "111": "Cartão de crédito Discover"
95
+ "112": "Cartão de crédito BrasilCard"
96
+ "113": "Cartão de crédito FORTBRASIL"
97
+ "114": "Cartão de crédito CARDBAN"
98
+ "115": "Cartão de crédito VALECARD"
99
+ "116": "Cartão de crédito Cabal"
100
+ "117": "Cartão de crédito Mais!"
101
+ "118": "Cartão de crédito Avista"
102
+ "119": "Cartão de crédito GRANDCARD"
103
+ "120": "Cartão de crédito SOROCRED"
104
+ "201": "Boleto Bradesco"
105
+ "202": "Boleto Santander"
106
+ "301": "Débito online Bradesco"
107
+ "302": "Débito online Itaú"
108
+ "303": "Débito online Unibanco"
109
+ "304": "Débito online Banco do Brasil"
110
+ "305": "Débito online Banco Real"
111
+ "306": "Débito online Banrisul"
112
+ "307": "Débito online HSBC"
113
+ "401": "Saldo PagSeguro"
114
+ "501": "Oi Paggo"
115
+ "701": "Depósito em conta Banco do Brasil"