starkinfra 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/lib/brcodepreview/brcodepreview.rb +121 -0
- data/lib/cardmethod/cardmethod.rb +56 -0
- data/lib/creditnote/creditnote.rb +37 -342
- data/lib/creditnote/invoice/description.rb +51 -0
- data/lib/creditnote/invoice/discount.rb +49 -0
- data/lib/creditnote/invoice/invoice.rb +123 -0
- data/lib/creditnote/log.rb +2 -2
- data/lib/creditnote/transfer.rb +90 -0
- data/lib/creditpreview/creditnotepreview.rb +85 -0
- data/lib/creditpreview/creditpreview.rb +83 -0
- data/lib/creditsigner/creditsigner.rb +57 -0
- data/lib/dynamicbrcode/dynamicbrcode.rb +350 -0
- data/lib/event/attempt.rb +4 -3
- data/lib/event/event.rb +10 -10
- data/lib/issuingbalance/issuingbalance.rb +4 -4
- data/lib/issuingcard/issuingcard.rb +32 -29
- data/lib/issuingcard/log.rb +2 -2
- data/lib/issuingholder/issuingholder.rb +13 -8
- data/lib/issuingholder/log.rb +2 -2
- data/lib/issuinginvoice/issuinginvoice.rb +23 -9
- data/lib/issuinginvoice/log.rb +2 -2
- data/lib/{issuingbin/issuingbin.rb → issuingproduct/issuingproduct.rb} +27 -30
- data/lib/issuingpurchase/issuingpurchase.rb +99 -23
- data/lib/issuingpurchase/log.rb +1 -1
- data/lib/issuingrule/issuingrule.rb +64 -18
- data/lib/issuingtransaction/issuingtransaction.rb +5 -7
- data/lib/issuingwithdrawal/issuingwithdrawal.rb +10 -6
- data/lib/merchantcategory/merchantcategory.rb +63 -0
- data/lib/merchantcountry/merchantcountry.rb +59 -0
- data/lib/pixbalance/pixbalance.rb +5 -5
- data/lib/pixchargeback/log.rb +3 -3
- data/lib/pixchargeback/pixchargeback.rb +32 -20
- data/lib/pixclaim/log.rb +8 -11
- data/lib/pixclaim/pixclaim.rb +42 -32
- data/lib/pixdirector/pixdirector.rb +9 -11
- data/lib/pixdomain/certificate.rb +1 -1
- data/lib/pixdomain/pixdomain.rb +4 -4
- data/lib/pixinfraction/log.rb +2 -2
- data/lib/pixinfraction/pixinfraction.rb +21 -13
- data/lib/pixkey/log.rb +5 -5
- data/lib/pixkey/pixkey.rb +10 -9
- data/lib/pixrequest/log.rb +2 -2
- data/lib/pixrequest/pixrequest.rb +51 -21
- data/lib/pixreversal/log.rb +2 -2
- data/lib/pixreversal/pixreversal.rb +48 -21
- data/lib/pixstatement/pixstatement.rb +12 -7
- data/lib/starkinfra.rb +27 -15
- data/lib/staticbrcode/staticbrcode.rb +164 -0
- data/lib/user/project.rb +1 -1
- data/lib/utils/api.rb +1 -0
- data/lib/utils/parse.rb +7 -3
- data/lib/utils/request.rb +1 -1
- data/lib/utils/resource.rb +1 -1
- data/lib/utils/sub_resource.rb +21 -22
- data/lib/webhook/webhook.rb +3 -3
- metadata +16 -4
- data/lib/issuingauthorization/issuingauthorization.rb +0 -141
@@ -0,0 +1,350 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative('../utils/rest')
|
4
|
+
require_relative('../utils/parse')
|
5
|
+
require_relative('../utils/checks')
|
6
|
+
require_relative('../utils/resource')
|
7
|
+
|
8
|
+
module StarkInfra
|
9
|
+
# # DynamicBrcode object
|
10
|
+
#
|
11
|
+
# BR Codes store information represented by Pix QR Codes, which are used to
|
12
|
+
# send or receive Pix transactions in a convenient way.
|
13
|
+
# DynamicBrcodes represent charges with information that can change at any time,
|
14
|
+
# since all data needed for the payment is requested dynamically to an URL stored
|
15
|
+
# in the BR Code. Stark Infra will receive the GET request and forward it to your
|
16
|
+
# registered endpoint with a GET request containing the UUID of the BR Code for
|
17
|
+
# identification.
|
18
|
+
#
|
19
|
+
# When you initialize a DynamicBrcode, the entity will not be automatically
|
20
|
+
# created in the Stark Infra API. The 'create' function sends the objects
|
21
|
+
# to the Stark Infra API and returns the created object.
|
22
|
+
#
|
23
|
+
# ## Parameters (required):
|
24
|
+
# - name [string]: receiver's name. ex: 'Tony Stark'
|
25
|
+
# - city [string]: receiver's city name. ex: 'Rio de Janeiro'
|
26
|
+
# - external_id [string]: string that must be unique among all your DynamicBrcodes. Duplicated external ids will cause failures. ex: 'my-internal-id-123456'
|
27
|
+
#
|
28
|
+
# ## Parameters (optional):
|
29
|
+
# - type [string, default 'instant']: type of the DynamicBrcode. Options: 'instant', 'due'
|
30
|
+
# - tags [list of strings, default nil]: list of strings for tagging. ex: ['travel', 'food']
|
31
|
+
#
|
32
|
+
# ## Attributes (return-only):
|
33
|
+
# - id [string]: id returned on creation, this is the BR Code. ex: '00020126360014br.gov.bcb.pix0114+552840092118152040000530398654040.095802BR5915Jamie Lannister6009Sao Paulo620705038566304FC6C'
|
34
|
+
# - uuid [string]: unique uuid returned when the DynamicBrcode is created. ex: '4e2eab725ddd495f9c98ffd97440702d'
|
35
|
+
# - url [string]: url link to the BR Code image. ex: 'https://brcode-h.development.starkinfra.com/dynamic-qrcode/901e71f2447c43c886f58366a5432c4b.png'
|
36
|
+
# - created [DateTime]: creation datetime for the DynamicBrcode. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
|
37
|
+
# - updated [DateTime]: latest update datetime for the DynamicBrcode. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
|
38
|
+
class DynamicBrcode < StarkInfra::Utils::Resource
|
39
|
+
attr_reader :name, :city, :external_id, :type, :tags, :id, :uuid, :url, :updated, :created
|
40
|
+
def initialize(name:, city:, external_id:, type: nil, tags: nil, id: nil, uuid: nil, url: nil, updated: nil, created: nil)
|
41
|
+
super(id)
|
42
|
+
@name = name
|
43
|
+
@city = city
|
44
|
+
@external_id = external_id
|
45
|
+
@type = type
|
46
|
+
@tags = tags
|
47
|
+
@uuid = uuid
|
48
|
+
@url = url
|
49
|
+
@created = StarkInfra::Utils::Checks.check_datetime(created)
|
50
|
+
@updated = StarkInfra::Utils::Checks.check_datetime(updated)
|
51
|
+
end
|
52
|
+
|
53
|
+
# # Create DynamicBrcodes
|
54
|
+
#
|
55
|
+
# Send a list of DynamicBrcode objects for creation at the Stark Infra API
|
56
|
+
#
|
57
|
+
# ## Parameters (required):
|
58
|
+
# - brcodes [list of DynamicBrcode objects]: list of DynamicBrcode objects to be created in the API.
|
59
|
+
#
|
60
|
+
# ## Parameters (optional):
|
61
|
+
# - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if starkinfra.user was set before function call
|
62
|
+
#
|
63
|
+
# ## Return:
|
64
|
+
# - DynamicBrcode object with updated attributes
|
65
|
+
def self.create(brcodes, user: nil)
|
66
|
+
StarkInfra::Utils::Rest.post(entities: brcodes, user: user, **resource)
|
67
|
+
end
|
68
|
+
|
69
|
+
# # Retrieve a specific DynamicBrcode
|
70
|
+
#
|
71
|
+
# Receive a single DynamicBrcode object previously created in the Stark Infra API by its uuid
|
72
|
+
#
|
73
|
+
# ## Parameters (required):
|
74
|
+
# - uuid [string]: object's unique uuid. ex: '901e71f2447c43c886f58366a5432c4b'
|
75
|
+
#
|
76
|
+
# ## Parameters (optional):
|
77
|
+
# - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if starkinfra.user was set before function call
|
78
|
+
#
|
79
|
+
# ## Return:
|
80
|
+
# - DynamicBrcode object with updated attributes
|
81
|
+
def self.get(uuid, user: nil)
|
82
|
+
StarkInfra::Utils::Rest.get_id(id: uuid, user: user, **resource)
|
83
|
+
end
|
84
|
+
|
85
|
+
# # Retrieve DynamicBrcodes
|
86
|
+
#
|
87
|
+
# Receive a generator of DynamicBrcode objects previously created in the Stark Infra API
|
88
|
+
#
|
89
|
+
# ## Parameters (optional):
|
90
|
+
# - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
|
91
|
+
# - after [Date or string, default nil]: date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
|
92
|
+
# - before [Date or string, default nil]: date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
|
93
|
+
# - external_ids [list of strings, default nil]: list of external_ids to filter retrieved objects. ex: ['my_external_id1', 'my_external_id2']
|
94
|
+
# - uuids [list of strings, default nil]: list of uuids to filter retrieved objects. ex: ['901e71f2447c43c886f58366a5432c4b', '4e2eab725ddd495f9c98ffd97440702d']
|
95
|
+
# - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']
|
96
|
+
# - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
|
97
|
+
#
|
98
|
+
# ## Return:
|
99
|
+
# - generator of DynamicBrcode objects with updated attributes
|
100
|
+
def self.query(limit: nil, after: nil, before: nil, external_ids: nil, uuids: nil, tags: nil, user: nil)
|
101
|
+
after = StarkInfra::Utils::Checks.check_date(after)
|
102
|
+
before = StarkInfra::Utils::Checks.check_date(before)
|
103
|
+
StarkInfra::Utils::Rest.get_stream(
|
104
|
+
limit: limit,
|
105
|
+
after: after,
|
106
|
+
before: before,
|
107
|
+
external_ids: external_ids,
|
108
|
+
uuids: uuids,
|
109
|
+
tags: tags,
|
110
|
+
user: user,
|
111
|
+
**resource
|
112
|
+
)
|
113
|
+
end
|
114
|
+
|
115
|
+
# # Retrieve DynamicBrcodes
|
116
|
+
#
|
117
|
+
# Receive a list of DynamicBrcode objects previously created in the Stark Infra API and the cursor to the next page.
|
118
|
+
#
|
119
|
+
# ## Parameters (optional):
|
120
|
+
# - cursor [string, default nil]: cursor returned on the previous page function call
|
121
|
+
# - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex 35
|
122
|
+
# - after [Date or string, default nil]: date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
|
123
|
+
# - before [Date or string, default nil]: date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
|
124
|
+
# - external_ids [list of strings, default nil]: list of external_ids to filter retrieved objects. ex: ['my_external_id1', 'my_external_id2']
|
125
|
+
# - uuids [list of strings, default nil]: list of uuids to filter retrieved objects. ex: ['901e71f2447c43c886f58366a5432c4b', '4e2eab725ddd495f9c98ffd97440702d']
|
126
|
+
# - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']
|
127
|
+
# - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
|
128
|
+
#
|
129
|
+
# ## Return:
|
130
|
+
# - list of DynamicBrcode objects with updated attributes
|
131
|
+
# - cursor to retrieve the next page of DynamicBrcode objects
|
132
|
+
def self.page(cursor: nil, limit: nil, after: nil, before: nil, tags: nil, uuids: nil, external_ids: nil, user: nil)
|
133
|
+
after = StarkInfra::Utils::Checks.check_date(after)
|
134
|
+
before = StarkInfra::Utils::Checks.check_date(before)
|
135
|
+
StarkInfra::Utils::Rest.get_page(
|
136
|
+
cursor: cursor,
|
137
|
+
limit: limit,
|
138
|
+
after: after,
|
139
|
+
before: before,
|
140
|
+
external_ids: external_ids,
|
141
|
+
uuids: uuids,
|
142
|
+
tags: tags,
|
143
|
+
user: user,
|
144
|
+
**resource
|
145
|
+
)
|
146
|
+
end
|
147
|
+
|
148
|
+
# # Helps you respond to a due DynamicBrcode Read
|
149
|
+
#
|
150
|
+
# When a Due DynamicBrcode is read by your user, a GET request containing the Brcode's
|
151
|
+
# UUID will be made to your registered URL to retrieve additional information needed
|
152
|
+
# to complete the transaction.
|
153
|
+
# The get request must be answered in the following format, within 5 seconds, and with
|
154
|
+
# an HTTP status code 200.
|
155
|
+
#
|
156
|
+
# ## Parameters (required):
|
157
|
+
# - version [integer]: integer that represents how many times the BR Code was updated.
|
158
|
+
# - created [DateTime or string]: creation datetime in ISO format of the DynamicBrcode. ex: "2020-03-10T10:30:00.000000+00:00" or DateTime.new(2020, 3, 10, 10, 30, 0, 0).
|
159
|
+
# - due [Date or string]: requested payment due datetime in ISO format. ex: "2020-03-10T10:30:00.000000+00:00" or DateTime.new(2020, 3, 10, 10, 30, 0, 0)
|
160
|
+
# - key_id [string]: receiver's PixKey id. Can be a taxId (CPF/CNPJ), a phone number, an email or an alphanumeric sequence (EVP). ex: '+5511989898989'
|
161
|
+
# - status [string]: BR Code status. Options: "created", "overdue", "paid", "canceled" or "expired"
|
162
|
+
# - reconciliation_id [string]: id to be used for conciliation of the resulting Pix transaction. This id must have from to 26 to 35 alphanumeric characters' ex: "cd65c78aeb6543eaaa0170f68bd741ee"
|
163
|
+
# - nominal_amount [integer]: positive integer that represents the amount in cents of the resulting Pix transaction. ex: 1234 (= R$ 12.34)
|
164
|
+
# - sender_name [string]: sender's full name. ex: "Anthony Edward Stark"
|
165
|
+
# - receiver_name [string]: receiver's full name. ex: "Jamie Lannister"
|
166
|
+
# - receiver_street_line [string]: receiver's main address. ex: "Av. Paulista, 200"
|
167
|
+
# - receiver_city [string]: receiver's address city name. ex: "Sao Paulo"
|
168
|
+
# - receiver_state_code [string]: receiver's address state code. ex: "SP"
|
169
|
+
# - receiver_zip_code [string]: receiver's address zip code. ex: "01234-567"
|
170
|
+
# - expiration [integer]: time in seconds counted from the creation datetime until the DynamicBrcode expires. After expiration, the BR Code cannot be paid anymore.
|
171
|
+
#
|
172
|
+
# ## Parameters (optional):
|
173
|
+
# - sender_tax_id [string, default nil]: sender's CPF (11 digits formatted or unformatted) or CNPJ (14 digits formatted or unformatted). ex: '01.001.001/0001-01'
|
174
|
+
# - receiver_tax_id [string, default nil]: receiver's CPF (11 digits formatted or unformatted) or CNPJ (14 digits formatted or unformatted). ex: '012.345.678-90'
|
175
|
+
# - fine [float, default 2.0]: Percentage charged if the sender pays after the due datetime. ex. 2.0
|
176
|
+
# - interest [float, default 1.0]: Interest percentage charged if the sender pays after the due datetime. ex: 1.5
|
177
|
+
# - discounts [list of dictionaries, default nil]: discount amount applied if the sender pays at a specific datetime before the due datetime.
|
178
|
+
# - description [string, default nil]: additional information to be shown to the sender at the moment of payment. ex: 'Response Due DynamicBrocde'
|
179
|
+
#
|
180
|
+
# ## Return:
|
181
|
+
# - Dumped JSON string that must be returned to us
|
182
|
+
def self.response_due(
|
183
|
+
version: , created: , due: , key_id: , status: , reconciliation_id: , nominal_amount: ,
|
184
|
+
sender_name: , receiver_name: , receiver_street_line: , receiver_city: , receiver_state_code: ,
|
185
|
+
receiver_zip_code: , expiration: , sender_tax_id: , receiver_tax_id: , fine: , interest: ,
|
186
|
+
discounts: , description:
|
187
|
+
)
|
188
|
+
|
189
|
+
params = {
|
190
|
+
'version': version,
|
191
|
+
'created': created,
|
192
|
+
'due': due,
|
193
|
+
'keyId': key_id,
|
194
|
+
'status': status,
|
195
|
+
'reconciliationId': reconciliation_id,
|
196
|
+
'nominalAmount': nominal_amount,
|
197
|
+
'senderName': sender_name,
|
198
|
+
'receiverName': receiver_name,
|
199
|
+
'receiverStreetLine': receiver_street_line,
|
200
|
+
'receiverCity': receiver_city,
|
201
|
+
'receiverStateCode': receiver_state_code,
|
202
|
+
'receiverZipCode': receiver_zip_code,
|
203
|
+
'expiration': expiration,
|
204
|
+
'senderTaxId': sender_tax_id,
|
205
|
+
'receiverTaxId': receiver_tax_id,
|
206
|
+
'fine': fine,
|
207
|
+
'interest': interest,
|
208
|
+
'discounts': Discount.parse_discounts(discounts),
|
209
|
+
'description': description
|
210
|
+
}
|
211
|
+
|
212
|
+
params.to_json
|
213
|
+
end
|
214
|
+
|
215
|
+
# # Helps you respond to an instant DynamicBrcode Read
|
216
|
+
#
|
217
|
+
# When an instant DynamicBrcode is read by your user, a GET request containing the BR Code's UUID will be made
|
218
|
+
# to your registered URL to retrieve additional information needed to complete the transaction.
|
219
|
+
# The get request must be answered in the following format within 5 seconds and with an HTTP status code 200.
|
220
|
+
#
|
221
|
+
# ## Parameters (required):
|
222
|
+
# - version [integer]: integer that represents how many times the BR Code was updated.
|
223
|
+
# - created [DateTime or string]: creation datetime of the DynamicBrcode. ex: "2020-03-10T10:30:00.000000+00:00" or DateTime.new(2020, 3, 10, 10, 30, 0, 0).
|
224
|
+
# - key_id [string]: receiver's PixKey id. Can be a tax_id (CPF/CNPJ), a phone number, an email or an alphanumeric sequence (EVP). ex: '+5511989898989'
|
225
|
+
# - status [string]: BR Code status. Options: 'created', 'overdue', 'paid', 'canceled' or 'expired'
|
226
|
+
# - reconciliation_id [string]: id to be used for conciliation of the resulting Pix transaction. This id must have from to 26 to 35 alphanumeric characters' ex: "cd65c78aeb6543eaaa0170f68bd741ee"
|
227
|
+
# - amount [integer]: positive integer that represents the amount in cents of the resulting Pix transaction. ex: 1234 (= R$ 12.34)
|
228
|
+
# - expiration [integer]: time in seconds counted from the creation datetime until the DynamicBrcode expires. After expiration, the BR Code cannot be paid anymore. ex: 123456789
|
229
|
+
#
|
230
|
+
# ## Parameters (required):
|
231
|
+
# - cashier_type [string, default nil]: cashier's type. Required if the cashAmount is different from 0. Options: 'merchant', 'participant' and 'other'
|
232
|
+
# - cashier_bank_code [string, default nil]: cashier's bank code. Required if the cash_amount is different from 0. ex: '20018183'
|
233
|
+
#
|
234
|
+
# ## Parameters (optional):
|
235
|
+
# - cash_amount [integer, default nil]: amount to be withdrawn from the cashier in cents. ex: 1000 (= R$ 10.00)
|
236
|
+
# - sender_name [string, default nil]: sender's full name. ex: 'Anthony Edward Stark'
|
237
|
+
# - sender_tax_id [string, default nil]: sender's CPF (11 digits formatted or unformatted) or CNPJ (14 digits formatted or unformatted). ex: '01.001.001/0001-01'
|
238
|
+
# - amount_type [string, default 'fixed']: amount type of the BR Code. If the amount type is 'custom' the Brcode's amount can be changed by the sender at the moment of payment. Options: 'fixed' or 'custom'
|
239
|
+
# - description [string, default nil]: additional information to be shown to the sender at the moment of payment. ex: 'Response Instant DynamicBrocde'
|
240
|
+
#
|
241
|
+
# ## Return:
|
242
|
+
# # - Dumped JSON string that must be returned to us
|
243
|
+
def self.response_instant(
|
244
|
+
version:, created:, key_id:, status:, reconciliation_id:, amount:, cashier_type:,
|
245
|
+
cashier_bank_code:, cash_amount:, expiration:, sender_name:, sender_tax_id:,
|
246
|
+
amount_type:, description:
|
247
|
+
)
|
248
|
+
params = {
|
249
|
+
'version': version,
|
250
|
+
'created': created,
|
251
|
+
'keyId': key_id,
|
252
|
+
'status': status,
|
253
|
+
'reconciliationId': reconciliation_id,
|
254
|
+
'amount': amount,
|
255
|
+
'cashierType': cashier_type,
|
256
|
+
'cashierBankCode': cashier_bank_code,
|
257
|
+
'cashAmount': cash_amount,
|
258
|
+
'expiration': expiration,
|
259
|
+
'senderName': sender_name,
|
260
|
+
'senderTaxId': sender_tax_id,
|
261
|
+
'amountType': amount_type,
|
262
|
+
'description': description
|
263
|
+
}
|
264
|
+
|
265
|
+
params.to_json
|
266
|
+
end
|
267
|
+
|
268
|
+
# # Verify a DynamicBrcode Read
|
269
|
+
#
|
270
|
+
# When a DynamicBrcode is read by your user, a GET request will be made to your registered URL to
|
271
|
+
# retrieve additional information needed to complete the transaction.
|
272
|
+
# Use this method to verify the authenticity of a GET request received at your registered endpoint.
|
273
|
+
# If the provided digital signature does not check out with the StarkInfra public key,
|
274
|
+
# a stark.exception.InvalidSignatureException will be raised.
|
275
|
+
#
|
276
|
+
# ## Parameters (required):
|
277
|
+
# - uuid [string]: unique uuid of the DynamicBrcode, passed as a path variable in the DynamicBrcode Read request. ex: "4e2eab725ddd495f9c98ffd97440702d"
|
278
|
+
# - signature [string]: base-64 digital signature received at response header 'Digital-Signature'
|
279
|
+
#
|
280
|
+
# ## Parameters (optional):
|
281
|
+
# - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
|
282
|
+
#
|
283
|
+
# ## Return:
|
284
|
+
# - verified Brcode's uuid.
|
285
|
+
def self.verify(uuid:, signature:, user: nil)
|
286
|
+
StarkInfra::Utils::Parse.verify(content: uuid, signature: signature, user: user)
|
287
|
+
end
|
288
|
+
|
289
|
+
def self.resource
|
290
|
+
{
|
291
|
+
resource_name: 'DynamicBrcode',
|
292
|
+
resource_maker: proc { |json|
|
293
|
+
DynamicBrcode.new(
|
294
|
+
id: json['id'],
|
295
|
+
name: json['name'],
|
296
|
+
city: json['city'],
|
297
|
+
external_id: json['external_id'],
|
298
|
+
type: json['type'],
|
299
|
+
tags: json['tags'],
|
300
|
+
uuid: json['uuid'],
|
301
|
+
url: json['url'],
|
302
|
+
updated: json['updated'],
|
303
|
+
created: json['created']
|
304
|
+
)
|
305
|
+
}
|
306
|
+
}
|
307
|
+
end
|
308
|
+
|
309
|
+
# # DynamicBrcode.Discount object
|
310
|
+
#
|
311
|
+
# Used to define a Discount in the BR Code
|
312
|
+
#
|
313
|
+
# ## Parameters (required):
|
314
|
+
# - percentage [integer]: discount percentage that will be applied. ex: 2.5
|
315
|
+
# - due [DateTime or string, default now + 2 days]: Date after when the discount will be overdue in UTC ISO format. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) or "2020-03-10T10:30:00.000000+00:00"
|
316
|
+
class Discount < StarkInfra::Utils::SubResource
|
317
|
+
attr_reader :percentage, :due
|
318
|
+
def initialize(percentage:, due:)
|
319
|
+
@percentage = percentage
|
320
|
+
@due = due
|
321
|
+
end
|
322
|
+
|
323
|
+
def self.parse_discounts(discounts)
|
324
|
+
return discounts if discounts.nil?
|
325
|
+
|
326
|
+
parsed_discounts = []
|
327
|
+
discounts.each do |discount|
|
328
|
+
|
329
|
+
if discount.is_a? DynamicBrcode::Discount
|
330
|
+
discount = StarkInfra::Utils::API.api_json(discount)
|
331
|
+
end
|
332
|
+
parsed_discounts << discount
|
333
|
+
end
|
334
|
+
parsed_discounts
|
335
|
+
end
|
336
|
+
|
337
|
+
def self.resource
|
338
|
+
{
|
339
|
+
resource_name: 'Discount',
|
340
|
+
resource_maker: proc { |json|
|
341
|
+
Discount.new(
|
342
|
+
percentage: json['percentage'],
|
343
|
+
due: json['due']
|
344
|
+
)
|
345
|
+
}
|
346
|
+
}
|
347
|
+
end
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
data/lib/event/attempt.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative('
|
3
|
+
require_relative('event')
|
4
4
|
require_relative('../utils/rest')
|
5
5
|
require_relative('../utils/checks')
|
6
|
-
require_relative('
|
6
|
+
require_relative('../utils/resource')
|
7
7
|
|
8
8
|
module StarkInfra
|
9
9
|
class Event
|
@@ -94,7 +94,8 @@ module StarkInfra
|
|
94
94
|
def self.page(cursor: nil, limit: nil, after: nil, before: nil, event_ids: nil, webhook_ids: nil, user: nil)
|
95
95
|
after = StarkInfra::Utils::Checks.check_date(after)
|
96
96
|
before = StarkInfra::Utils::Checks.check_date(before)
|
97
|
-
|
97
|
+
|
98
|
+
StarkInfra::Utils::Rest.get_page(
|
98
99
|
cursor: cursor,
|
99
100
|
limit: limit,
|
100
101
|
after: after,
|
data/lib/event/event.rb
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
|
3
3
|
require('json')
|
4
4
|
require('starkbank-ecdsa')
|
5
|
-
require_relative('../
|
5
|
+
require_relative('../error')
|
6
6
|
require_relative('../utils/rest')
|
7
|
-
require_relative('../utils/
|
7
|
+
require_relative('../utils/parse')
|
8
8
|
require_relative('../utils/cache')
|
9
|
-
require_relative('../
|
9
|
+
require_relative('../utils/checks')
|
10
|
+
require_relative('../utils/resource')
|
10
11
|
require_relative('../pixrequest/log')
|
11
12
|
require_relative('../pixreversal/log')
|
12
|
-
require_relative('../utils/parse')
|
13
13
|
|
14
14
|
module StarkInfra
|
15
15
|
# # Webhook Event object
|
@@ -35,18 +35,18 @@ module StarkInfra
|
|
35
35
|
@subscription = subscription
|
36
36
|
|
37
37
|
resource = {
|
38
|
-
'
|
38
|
+
'pix-key': StarkInfra::PixKey::Log.resource,
|
39
|
+
'pix-claim': StarkInfra::PixClaim::Log.resource,
|
40
|
+
'pix-chargeback': StarkInfra::PixChargeback::Log.resource,
|
41
|
+
'pix-infraction': StarkInfra::PixInfraction::Log.resource,
|
39
42
|
'pix-request.in': StarkInfra::PixRequest::Log.resource,
|
40
43
|
'pix-request.out': StarkInfra::PixRequest::Log.resource,
|
41
44
|
'pix-reversal.in': StarkInfra::PixReversal::Log.resource,
|
42
45
|
'pix-reversal.out': StarkInfra::PixReversal::Log.resource,
|
43
|
-
'pix-key': StarkInfra::PixKey::Log.resource,
|
44
|
-
'pix-claim': StarkInfra::PixClaim::Log.resource,
|
45
|
-
'pix-infraction': StarkInfra::PixInfraction::Log.resource,
|
46
|
-
'pix-chargeback': StarkInfra::PixChargeback::Log.resource,
|
47
46
|
'issuing-card': StarkInfra::IssuingCard::Log.resource,
|
48
47
|
'issuing-invoice': StarkInfra::IssuingInvoice::Log.resource,
|
49
|
-
'issuing-purchase': StarkInfra::IssuingPurchase::Log.resource
|
48
|
+
'issuing-purchase': StarkInfra::IssuingPurchase::Log.resource,
|
49
|
+
'credit-note': StarkInfra::CreditNote::Log.resource,
|
50
50
|
}[subscription.to_sym]
|
51
51
|
|
52
52
|
@log = log
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative('../utils/resource')
|
4
3
|
require_relative('../utils/rest')
|
5
4
|
require_relative('../utils/checks')
|
5
|
+
require_relative('../utils/resource')
|
6
6
|
|
7
7
|
module StarkInfra
|
8
8
|
# # IssuingBalance object
|
@@ -13,7 +13,7 @@ module StarkInfra
|
|
13
13
|
#
|
14
14
|
# ## Attributes (return-only):
|
15
15
|
# - id [string]: unique id returned when IssuingBalance is created. ex: '5656565656565656'
|
16
|
-
# - amount [integer]: current balance amount of the Workspace in cents. ex: 200 (= R$ 2.00)
|
16
|
+
# - amount [integer]: current issuing balance amount of the Workspace in cents. ex: 200 (= R$ 2.00)
|
17
17
|
# - currency [string]: currency of the current Workspace. Expect others to be added eventually. ex: 'BRL'
|
18
18
|
# - updated [DateTime]: latest update datetime for the IssuingBalance. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
|
19
19
|
class IssuingBalance < StarkInfra::Utils::Resource
|
@@ -43,10 +43,10 @@ module StarkInfra
|
|
43
43
|
resource_name: 'IssuingBalance',
|
44
44
|
resource_maker: proc { |json|
|
45
45
|
IssuingBalance.new(
|
46
|
+
id: json['id'],
|
46
47
|
amount: json['amount'],
|
47
48
|
currency: json['currency'],
|
48
|
-
updated: json['updated']
|
49
|
-
id: json['id']
|
49
|
+
updated: json['updated']
|
50
50
|
)
|
51
51
|
}
|
52
52
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative('../utils/resource')
|
4
3
|
require_relative('../utils/rest')
|
5
4
|
require_relative('../utils/checks')
|
5
|
+
require_relative('../utils/resource')
|
6
6
|
|
7
7
|
module StarkInfra
|
8
8
|
# # IssuingCard object
|
@@ -10,6 +10,10 @@ module StarkInfra
|
|
10
10
|
# The IssuingCard object displays the information of the cards created in your Workspace.
|
11
11
|
# Sensitive information will only be returned when the 'expand' parameter is used, to avoid security concerns.
|
12
12
|
#
|
13
|
+
# When you initialize a IssuingCard, the entity will not be automatically
|
14
|
+
# created in the Stark Infra API. The 'create' function sends the objects
|
15
|
+
# to the Stark Infra API and returns the created object.
|
16
|
+
#
|
13
17
|
# ## Parameters (required):
|
14
18
|
# - holder_name [string]: card holder name. ex: 'Tony Stark'
|
15
19
|
# - holder_tax_id [string]: card holder tax ID. ex: '012.345.678-90'
|
@@ -17,9 +21,9 @@ module StarkInfra
|
|
17
21
|
#
|
18
22
|
# ## Parameters (optional):
|
19
23
|
# - display_name [string, default nil]: card displayed name. ex: 'ANTHONY STARK'
|
20
|
-
# - rules [list of IssuingRule objects, default
|
21
|
-
# -
|
22
|
-
# - tags [list of strings, default
|
24
|
+
# - rules [list of IssuingRule objects, default nil]: [EXPANDABLE] list of card spending rules.
|
25
|
+
# - product_id [string, default nil]: card product ID to which the card is bound. ex: '53810200'
|
26
|
+
# - tags [list of strings, default nil]: list of strings for tagging. ex: ['travel', 'food']
|
23
27
|
# - street_line_1 [string, default sub-issuer street line 1]: card holder main address. ex: 'Av. Paulista, 200'
|
24
28
|
# - street_line_2 [string, default sub-issuer street line 2]: card holder address complement. ex: 'Apto. 123'
|
25
29
|
# - district [string, default sub-issuer district]: card holder address district / neighbourhood. ex: 'Bela Vista'
|
@@ -38,32 +42,31 @@ module StarkInfra
|
|
38
42
|
# - created [DateTime]: creation datetime for the IssuingCard. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
|
39
43
|
# - updated [DateTime]: latest update datetime for the IssuingCard. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
|
40
44
|
class IssuingCard < StarkInfra::Utils::Resource
|
41
|
-
attr_reader :id, :
|
42
|
-
|
43
|
-
|
45
|
+
attr_reader :id, :holder_name, :holder_tax_id, :holder_external_id, :display_name, :rules, :product_id, :tags,
|
46
|
+
:street_line_1, :street_line_2, :district, :city, :state_code, :zip_code, :holder_id,
|
47
|
+
:type, :status, :number, :security_code, :expiration, :created, :updated
|
44
48
|
def initialize(
|
45
|
-
holder_name
|
46
|
-
|
47
|
-
|
48
|
-
created: nil, updated: nil
|
49
|
+
holder_name: , holder_tax_id: , holder_external_id: , display_name: nil, rules: nil, product_id: nil, tags: nil,
|
50
|
+
street_line_1: nil, street_line_2: nil, district: nil, city: nil, state_code: nil, zip_code: nil, id: nil,
|
51
|
+
holder_id: nil, type: nil, status: nil, number: nil, security_code: nil, expiration: nil, created: nil, updated: nil
|
49
52
|
)
|
50
53
|
super(id)
|
51
54
|
@holder_name = holder_name
|
52
55
|
@holder_tax_id = holder_tax_id
|
53
56
|
@holder_external_id = holder_external_id
|
54
|
-
@holder_id = holder_id
|
55
|
-
@type = type
|
56
57
|
@display_name = display_name
|
57
|
-
@status = status
|
58
58
|
@rules = StarkInfra::IssuingRule.parse_rules(rules)
|
59
|
-
@
|
59
|
+
@product_id = product_id
|
60
|
+
@tags = tags
|
60
61
|
@street_line_1 = street_line_1
|
61
62
|
@street_line_2 = street_line_2
|
62
63
|
@district = district
|
63
64
|
@city = city
|
64
65
|
@state_code = state_code
|
65
66
|
@zip_code = zip_code
|
66
|
-
@
|
67
|
+
@holder_id = holder_id
|
68
|
+
@type = type
|
69
|
+
@status = status
|
67
70
|
@number = number
|
68
71
|
@security_code = security_code
|
69
72
|
expiration = nil if !expiration.nil? && expiration.include?('*')
|
@@ -112,13 +115,13 @@ module StarkInfra
|
|
112
115
|
# ## Parameters (optional):
|
113
116
|
# - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
|
114
117
|
# - ids [list of strings, default nil]: list of ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']
|
115
|
-
# - after [
|
116
|
-
# - before [
|
118
|
+
# - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
|
119
|
+
# - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
|
117
120
|
# - status [list of strings, default nil]: filter for status of retrieved objects. ex: ['active', 'blocked', 'canceled', 'expired']
|
118
121
|
# - types [list of strings, default nil]: card type. ex: ['virtual']
|
119
|
-
# - holder_ids [list of strings]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
|
122
|
+
# - holder_ids [list of strings, default nil]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
|
120
123
|
# - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']
|
121
|
-
# - expand [list of strings, default
|
124
|
+
# - expand [list of strings, default nil]: fields to expand information. ex: ['rules', 'security_code', 'number', 'expiration']
|
122
125
|
# - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
|
123
126
|
#
|
124
127
|
# ## Return:
|
@@ -150,13 +153,13 @@ module StarkInfra
|
|
150
153
|
# - cursor [string, default nil]: cursor returned on the previous page function call.
|
151
154
|
# - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
|
152
155
|
# - ids [list of strings, default nil]: list of ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']
|
153
|
-
# - after [
|
154
|
-
# - before [
|
156
|
+
# - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
|
157
|
+
# - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
|
155
158
|
# - status [list of strings, default nil]: filter for status of retrieved objects. ex: ['active', 'blocked', 'canceled', 'expired']
|
156
159
|
# - types [list of strings, default nil]: card type. ex: ['virtual']
|
157
|
-
# - holder_ids [list of strings]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
|
160
|
+
# - holder_ids [list of strings, default nil]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
|
158
161
|
# - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']
|
159
|
-
# - expand [list of strings, default
|
162
|
+
# - expand [list of strings, default nil]: fields to expand information. ex: ['rules', 'security_code', 'number', 'expiration']
|
160
163
|
# - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
|
161
164
|
#
|
162
165
|
# ## Return:
|
@@ -232,22 +235,22 @@ module StarkInfra
|
|
232
235
|
resource_maker: proc { |json|
|
233
236
|
IssuingCard.new(
|
234
237
|
id: json['id'],
|
235
|
-
holder_id: json['holder_id'],
|
236
238
|
holder_name: json['holder_name'],
|
237
239
|
holder_tax_id: json['holder_tax_id'],
|
238
240
|
holder_external_id: json['holder_external_id'],
|
239
|
-
type: json['type'],
|
240
241
|
display_name: json['display_name'],
|
241
|
-
status: json['status'],
|
242
242
|
rules: json['rules'],
|
243
|
-
|
243
|
+
product_id: json['product_id'],
|
244
|
+
tags: json['tags'],
|
244
245
|
street_line_1: json['street_line_1'],
|
245
246
|
street_line_2: json['street_line_2'],
|
246
247
|
district: json['district'],
|
247
248
|
city: json['city'],
|
248
249
|
state_code: json['state_code'],
|
249
250
|
zip_code: json['zip_code'],
|
250
|
-
|
251
|
+
holder_id: json['holder_id'],
|
252
|
+
type: json['type'],
|
253
|
+
status: json['status'],
|
251
254
|
number: json['number'],
|
252
255
|
security_code: json['security_code'],
|
253
256
|
expiration: json['expiration'],
|
data/lib/issuingcard/log.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative('
|
3
|
+
require_relative('issuingcard')
|
4
4
|
require_relative('../utils/rest')
|
5
5
|
require_relative('../utils/checks')
|
6
|
-
require_relative('
|
6
|
+
require_relative('../utils/resource')
|
7
7
|
|
8
8
|
module StarkInfra
|
9
9
|
class IssuingCard
|