starkinfra 0.0.3 → 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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/brcodepreview/brcodepreview.rb +121 -0
  3. data/lib/cardmethod/cardmethod.rb +56 -0
  4. data/lib/creditnote/creditnote.rb +58 -341
  5. data/lib/creditnote/invoice/description.rb +51 -0
  6. data/lib/creditnote/invoice/discount.rb +49 -0
  7. data/lib/creditnote/invoice/invoice.rb +123 -0
  8. data/lib/creditnote/log.rb +2 -2
  9. data/lib/creditnote/transfer.rb +90 -0
  10. data/lib/creditpreview/creditnotepreview.rb +85 -0
  11. data/lib/creditpreview/creditpreview.rb +83 -0
  12. data/lib/creditsigner/creditsigner.rb +57 -0
  13. data/lib/dynamicbrcode/dynamicbrcode.rb +350 -0
  14. data/lib/event/attempt.rb +4 -3
  15. data/lib/event/event.rb +10 -10
  16. data/lib/issuingbalance/issuingbalance.rb +4 -4
  17. data/lib/issuingcard/issuingcard.rb +40 -36
  18. data/lib/issuingcard/log.rb +3 -3
  19. data/lib/issuingholder/issuingholder.rb +14 -9
  20. data/lib/issuingholder/log.rb +3 -3
  21. data/lib/issuinginvoice/issuinginvoice.rb +24 -10
  22. data/lib/issuinginvoice/log.rb +3 -3
  23. data/lib/issuingproduct/issuingproduct.rb +86 -0
  24. data/lib/issuingpurchase/issuingpurchase.rb +100 -24
  25. data/lib/issuingpurchase/log.rb +2 -2
  26. data/lib/issuingrule/issuingrule.rb +74 -30
  27. data/lib/issuingtransaction/issuingtransaction.rb +6 -8
  28. data/lib/issuingwithdrawal/issuingwithdrawal.rb +11 -7
  29. data/lib/merchantcategory/merchantcategory.rb +63 -0
  30. data/lib/merchantcountry/merchantcountry.rb +59 -0
  31. data/lib/pixbalance/pixbalance.rb +5 -5
  32. data/lib/pixchargeback/log.rb +3 -3
  33. data/lib/pixchargeback/pixchargeback.rb +32 -20
  34. data/lib/pixclaim/log.rb +8 -11
  35. data/lib/pixclaim/pixclaim.rb +43 -32
  36. data/lib/pixdirector/pixdirector.rb +9 -11
  37. data/lib/pixdomain/certificate.rb +1 -1
  38. data/lib/pixdomain/pixdomain.rb +4 -4
  39. data/lib/pixinfraction/log.rb +2 -2
  40. data/lib/pixinfraction/pixinfraction.rb +21 -13
  41. data/lib/pixkey/log.rb +5 -5
  42. data/lib/pixkey/pixkey.rb +12 -10
  43. data/lib/pixrequest/log.rb +2 -2
  44. data/lib/pixrequest/pixrequest.rb +51 -21
  45. data/lib/pixreversal/log.rb +2 -2
  46. data/lib/pixreversal/pixreversal.rb +48 -20
  47. data/lib/pixstatement/pixstatement.rb +12 -7
  48. data/lib/starkinfra.rb +27 -15
  49. data/lib/staticbrcode/staticbrcode.rb +164 -0
  50. data/lib/user/project.rb +1 -1
  51. data/lib/utils/api.rb +1 -0
  52. data/lib/utils/parse.rb +7 -3
  53. data/lib/utils/request.rb +1 -1
  54. data/lib/utils/resource.rb +1 -1
  55. data/lib/utils/rest.rb +1 -2
  56. data/lib/utils/sub_resource.rb +21 -22
  57. data/lib/webhook/webhook.rb +3 -3
  58. metadata +16 -4
  59. data/lib/issuingauthorization/issuingauthorization.rb +0 -141
  60. data/lib/issuingbin/issuingbin.rb +0 -89
@@ -1,14 +1,18 @@
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
  # # IssuingHolder object
9
9
  #
10
10
  # The IssuingHolder describes a card holder that may group several cards.
11
11
  #
12
+ # When you initialize a IssuingHolder, the entity will not be automatically
13
+ # created in the Stark Infra API. The 'create' function sends the objects
14
+ # to the Stark Infra API and returns the created object.
15
+ #
12
16
  # ## Parameters (required):
13
17
  # - name [string]: card holder name.
14
18
  # - tax_id [string]: card holder tax ID
@@ -16,7 +20,7 @@ module StarkInfra
16
20
  #
17
21
  # ## Parameters (optional):
18
22
  # - rules [list of IssuingRule objects, default nil]: [EXPANDABLE] list of holder spending rules.
19
- # - tags [list of strings, default []]: list of strings for tagging. ex: ['travel', 'food']
23
+ # - tags [list of strings, default nil]: list of strings for tagging. ex: ['travel', 'food']
20
24
  #
21
25
  # ## Attributes (return-only):
22
26
  # - id [string]: unique id returned when IssuingHolder is created. ex: '5656565656565656'
@@ -24,17 +28,17 @@ module StarkInfra
24
28
  # - updated [DateTime]: latest update datetime for the IssuingHolder. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
25
29
  # - created [DateTime]: creation datetime for the log. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
26
30
  class IssuingHolder < StarkInfra::Utils::Resource
27
- attr_reader :id, :name, :tax_id, :external_id, :status, :rules, :tags, :updated, :created
31
+ attr_reader :id, :name, :tax_id, :external_id, :rules, :tags, :status, :updated, :created
28
32
  def initialize(
29
- name:, tax_id:, external_id:, id: nil, status: nil, rules: nil, tags: nil, updated: nil, created: nil
33
+ name:, tax_id:, external_id:, rules: nil, tags: nil, id: nil, status: nil, updated: nil, created: nil
30
34
  )
31
35
  super(id)
32
36
  @name = name
33
37
  @tax_id = tax_id
34
38
  @external_id = external_id
35
- @status = status
36
39
  @rules = StarkInfra::IssuingRule.parse_rules(rules)
37
40
  @tags = tags
41
+ @status = status
38
42
  @created = StarkInfra::Utils::Checks.check_datetime(created)
39
43
  @updated = StarkInfra::Utils::Checks.check_datetime(updated)
40
44
  end
@@ -47,12 +51,13 @@ module StarkInfra
47
51
  # - holders [list of IssuingHolder objects]: list of IssuingHolder objects to be created in the API
48
52
  #
49
53
  # ## Parameters (optional):
54
+ # - expand [list of strings, default nil]: fields to expand information. Options: ['rules']
50
55
  # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
51
56
  #
52
57
  # ## Return:
53
58
  # - list of IssuingHolder objects with updated attributes
54
- def self.create(holders:, user: nil)
55
- StarkInfra::Utils::Rest.post(entities: holders, user: user, **resource)
59
+ def self.create(holders:, expand: nil, user: nil)
60
+ StarkInfra::Utils::Rest.post(entities: holders, expand: expand, user: user, **resource)
56
61
  end
57
62
 
58
63
  # # Retrieve a specific IssuingHolder
@@ -110,7 +115,7 @@ module StarkInfra
110
115
  #
111
116
  # ## Parameters (optional):
112
117
  # - cursor [string, default nil]: cursor returned on the previous page function call.
113
- # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
118
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
114
119
  # - ids [list of strings, default nil]: list of ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']
115
120
  # - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
116
121
  # - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
@@ -193,9 +198,9 @@ module StarkInfra
193
198
  name: json['name'],
194
199
  tax_id: json['tax_id'],
195
200
  external_id: json['external_id'],
196
- status: json['status'],
197
201
  rules: json['rules'],
198
202
  tags: json['tags'],
203
+ status: json['status'],
199
204
  updated: json['updated'],
200
205
  created: json['created']
201
206
  )
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative('../utils/resource')
3
+ require_relative('issuingholder')
4
4
  require_relative('../utils/rest')
5
5
  require_relative('../utils/checks')
6
- require_relative('issuingholder')
6
+ require_relative('../utils/resource')
7
7
 
8
8
  module StarkInfra
9
9
  class IssuingHolder
@@ -78,7 +78,7 @@ module StarkInfra
78
78
  #
79
79
  # ## Parameters (optional):
80
80
  # - cursor [string, default nil]: cursor returned on the previous page function call
81
- # - limit [integer, default nil]: maximum number of objects to be retrieved. Max = 100. ex: 35
81
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
82
82
  # - ids [list of strings, default nil]: list of ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']
83
83
  # - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
84
84
  # - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
@@ -1,42 +1,53 @@
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
  # # IssuingInvoice object
9
9
  #
10
10
  # The IssuingInvoice objects created in your Workspace load your Issuing balance when paid.
11
11
  #
12
+ # When you initialize a IssuingInvoice, the entity will not be automatically
13
+ # created in the Stark Infra API. The 'create' function sends the objects
14
+ # to the Stark Infra API and returns the created object.
15
+ #
12
16
  # ## Parameters (required):
13
17
  # - amount [integer]: IssuingInvoice value in cents. ex: 1234 (= R$ 12.34)
14
18
  #
15
19
  # ## Parameters (optional):
16
20
  # - tax_id [string, default sub-issuer tax ID]: payer tax ID (CPF or CNPJ) with or without formatting. ex: '01234567890' or '20.018.183/0001-80'
17
21
  # - name [string, default sub-issuer name]: payer name. ex: 'Iron Bank S.A.'
18
- # - tags [list of strings, default []]: list of strings for tagging. ex: ['travel', 'food']
22
+ # - tags [list of strings, default nil]: list of strings for tagging. ex: ['travel', 'food']
19
23
  #
20
24
  # ## Attributes (return-only):
21
25
  # - id [string]: unique id returned when IssuingInvoice is created. ex: '5656565656565656'
26
+ # - brcode [string]: BR Code for the Invoice payment. ex: '00020101021226930014br.gov.bcb.pix2571brcode-h.development.starkinfra.com/v2/d7f6546e194d4c64a153e8f79f1c41ac5204000053039865802BR5925Stark Bank S.A. - Institu6009Sao Paulo62070503***63042109'
27
+ # - due [DateTime, Date or string]: Invoice due and expiration date in UTC ISO format. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0), Date.new(2020, 3, 10) or '2020-03-10T10:30:00.000000+00:00'
28
+ # - link [string]: public Invoice webpage URL. ex: 'https://starkbank-card-issuer.development.starkbank.com/invoicelink/d7f6546e194d4c64a153e8f79f1c41ac'
22
29
  # - status [string]: current IssuingInvoice status. ex: 'created', 'expired', 'overdue', 'paid'
23
30
  # - issuing_transaction_id [string]: ledger transaction ids linked to this IssuingInvoice. ex: 'issuing-invoice/5656565656565656'
24
31
  # - updated [DateTime]: latest update datetime for the IssuingInvoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
25
32
  # - created [DateTime]: creation datetime for the IssuingInvoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
26
33
  class IssuingInvoice < StarkInfra::Utils::Resource
27
- attr_reader :amount, :id, :name, :tax_id, :status, :issuing_transaction_id, :tags, :updated, :created
34
+ attr_reader :id, :amount, :tax_id, :name, :tags, :brcode, :due, :link, :status, :issuing_transaction_id, :updated, :created
28
35
  def initialize(
29
- amount:, id: nil, name: nil, tax_id: nil, status: nil, issuing_transaction_id: nil, tags: nil, updated: nil, created: nil
36
+ amount:, id: nil, tax_id: nil, name: nil, tags: nil, brcode: nil, due: nil, link: nil, status: nil, issuing_transaction_id: nil,
37
+ updated: nil, created: nil
30
38
  )
31
39
  super(id)
32
40
  @amount = amount
33
- @name = name
34
41
  @tax_id = tax_id
42
+ @name = name
43
+ @tags = tags
44
+ @brcode = brcode
45
+ @due = due
46
+ @link = link
35
47
  @status = status
36
48
  @issuing_transaction_id = issuing_transaction_id
37
- @tags = tags
38
- @created = StarkInfra::Utils::Checks.check_datetime(created)
39
49
  @updated = StarkInfra::Utils::Checks.check_datetime(updated)
50
+ @created = StarkInfra::Utils::Checks.check_datetime(created)
40
51
  end
41
52
 
42
53
  # # Create an IssuingInvoice
@@ -105,7 +116,7 @@ module StarkInfra
105
116
  #
106
117
  # ## Parameters (optional):
107
118
  # - cursor [string, default nil]: cursor returned on the previous page function call.
108
- # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
119
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
109
120
  # - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
110
121
  # - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
111
122
  # - status [list of strings, default nil]: filter for status of retrieved objects. ex: ['created', 'expired', 'overdue', 'paid']
@@ -137,11 +148,14 @@ module StarkInfra
137
148
  IssuingInvoice.new(
138
149
  id: json['id'],
139
150
  amount: json['amount'],
140
- name: json['name'],
141
151
  tax_id: json['tax_id'],
152
+ name: json['name'],
153
+ tags: json['tags'],
154
+ brcode: json['brcode'],
155
+ due: json['due'],
156
+ link: json['link'],
142
157
  status: json['status'],
143
158
  issuing_transaction_id: json['issuing_transaction_id'],
144
- tags: json['tags'],
145
159
  updated: json['updated'],
146
160
  created: json['created']
147
161
  )
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative('../utils/resource')
4
3
  require_relative('../utils/rest')
5
- require_relative('../utils/checks')
6
4
  require_relative('issuinginvoice')
5
+ require_relative('../utils/checks')
6
+ require_relative('../utils/resource')
7
7
 
8
8
  module StarkInfra
9
9
  class IssuingInvoice
@@ -78,7 +78,7 @@ module StarkInfra
78
78
  # ## Parameters (optional):
79
79
  # - cursor [string, default nil]: cursor returned on the previous page function call
80
80
  # - ids [list of strings, default nil]: list of IssuingInvoice ids to filter logs. ex: ['5656565656565656', '4545454545454545']
81
- # - limit [integer, default nil]: maximum number of objects to be retrieved. Max = 100. ex: 35
81
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
82
82
  # - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
83
83
  # - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
84
84
  # - types [list of strings, default nil]: filter for log event types. ex: ['created', 'credited', 'expired', 'overdue', 'paid']
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative('../utils/rest')
4
+ require_relative('../utils/checks')
5
+ require_relative('../utils/resource')
6
+
7
+ module StarkInfra
8
+ # # IssuingProduct object
9
+ #
10
+ # The IssuingProduct object displays information of avaliable card products registered to your Workspace.
11
+ # They represent a group of cards that begin with the same numbers (id) and offer the same product to end customers.
12
+ #
13
+ # ## Attributes (return-only):
14
+ # - id [string]: unique card product number (BIN) registered within the card network. ex: '53810200'
15
+ # - network [string]: card network flag. ex: 'mastercard'
16
+ # - funding_type [string]: type of funding used for payment. ex: 'credit', 'debit'
17
+ # - holder_type [string]: holder type. ex: 'business', 'individual'
18
+ # - code [string]: internal code from card flag informing the product. ex: 'MRW', 'MCO', 'MWB', 'MCS'
19
+ # - created [DateTime]: creation datetime for the IssuingProduct. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
20
+ class IssuingProduct < StarkInfra::Utils::Resource
21
+ attr_reader :id, :network, :funding_type, :holder_type, :code, :created
22
+ def initialize(id: nil, network: nil, funding_type: nil, holder_type: nil, code: nil, created: nil)
23
+ super(id)
24
+ @network = network
25
+ @funding_type = funding_type
26
+ @holder_type = holder_type
27
+ @code = code
28
+ @created = StarkInfra::Utils::Checks.check_datetime(created)
29
+ end
30
+
31
+ # # Retrieve IssuingProducts
32
+ #
33
+ # Receive a generator of available IssuingProduct objects previously registered to your workspace
34
+ #
35
+ # ## Parameters (optional):
36
+ # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
37
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
38
+ #
39
+ # ## Return:
40
+ # - generator of IssuingProduct objects with updated attributes
41
+ def self.query(limit: nil, user: nil)
42
+ StarkInfra::Utils::Rest.get_stream(
43
+ limit: limit,
44
+ user: user,
45
+ **resource
46
+ )
47
+ end
48
+
49
+ # # Retrieve paged IssuingProducts
50
+ #
51
+ # Receive a list of up to 100 IssuingProduct objects previously registered to your workspace and the cursor to the next page.
52
+ #
53
+ # ## Parameters (optional):
54
+ # - cursor [string, default nil]: cursor returned on the previous page function call.
55
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
56
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
57
+ #
58
+ # ## Return:
59
+ # - list of IssuingProduct objects with updated attributes
60
+ # - cursor to retrieve the next page of IssuingProduct objects
61
+ def self.page(cursor: nil, limit: nil, user: nil)
62
+ StarkInfra::Utils::Rest.get_page(
63
+ cursor: cursor,
64
+ limit: limit,
65
+ user: user,
66
+ **resource
67
+ )
68
+ end
69
+
70
+ def self.resource
71
+ {
72
+ resource_name: 'IssuingProduct',
73
+ resource_maker: proc { |json|
74
+ IssuingProduct.new(
75
+ id: json['id'],
76
+ network: json['network'],
77
+ funding_type: json['funding_type'],
78
+ holder_type: json['holder_type'],
79
+ code: json['code'],
80
+ created: json['created']
81
+ )
82
+ }
83
+ }
84
+ end
85
+ end
86
+ end
@@ -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
  # # IssuingPurchase object
@@ -14,6 +14,7 @@ module StarkInfra
14
14
  # - holder_name [string]: card holder name. ex: 'Tony Stark'
15
15
  # - card_id [string]: unique id returned when IssuingCard is created. ex: '5656565656565656'
16
16
  # - card_ending [string]: last 4 digits of the card number. ex: '1234'
17
+ # - purpose [string]: purchase purpose. ex: 'purchase'
17
18
  # - amount [integer]: IssuingPurchase value in cents. Minimum = 0. ex: 1234 (= R$ 12.34)
18
19
  # - tax [integer]: IOF amount taxed for international purchases. ex: 1234 (= R$ 12.34)
19
20
  # - issuer_amount [integer]: issuer amount. ex: 1234 (= R$ 12.34)
@@ -29,32 +30,42 @@ module StarkInfra
29
30
  # - merchant_name [string]: merchant name. ex: 'Google Cloud Platform'
30
31
  # - merchant_fee [integer]: fee charged by the merchant to cover specific costs, such as ATM withdrawal logistics, etc. ex: 200 (= R$ 2.00)
31
32
  # - wallet_id [string]: virtual wallet ID. ex: '5656565656565656'
32
- # - method_code [string]: method code. ex: 'chip', 'token', 'server', 'manual', 'magstripe' or 'contactless'
33
+ # - method_code [string]: method code. Options: 'chip', 'token', 'server', 'manual', 'magstripe' or 'contactless'
33
34
  # - score [float]: internal score calculated for the authenticity of the purchase. nil in case of insufficient data. ex: 7.6
34
- # - issuing_transaction_ids [string]: ledger transaction ids linked to this Purchase
35
- # - end_to_end_id [string]: Unique id used to identify the transaction through all of its life cycle, even before the purchase is denied or accepted and gets its usual id. Example: endToEndId='679cd385-642b-49d0-96b7-89491e1249a5'
36
- # - status [string]: current IssuingCard status. ex: 'approved', 'canceled', 'denied', 'confirmed', 'voided'
35
+ # - end_to_end_id [string]: Unique id used to identify the transaction through all of its life cycle, even before the purchase is denied or approved and gets its usual id. ex: '679cd385-642b-49d0-96b7-89491e1249a5'
37
36
  # - tags [string]: list of strings for tagging returned by the sub-issuer during the authorization. ex: ['travel', 'food']
38
- # - created [DateTime]: creation datetime for the IssuingPurchase. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
37
+ # - zip_code [string]: zip code of the merchant location. ex: '02101234'
38
+ #
39
+ # ## Attributes (IssuingPurchase only):
40
+ # - issuing_transaction_ids [string]: ledger transaction ids linked to this Purchase
41
+ # - status [string]: current IssuingCard status. Options: 'approved', 'canceled', 'denied', 'confirmed', 'voided'
39
42
  # - updated [DateTime]: latest update datetime for the IssuingPurchase. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
43
+ # - created [DateTime]: creation datetime for the IssuingPurchase. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
44
+ #
45
+ # ## Attributes (authorization request only):
46
+ # - is_partial_allowed [bool]: true if the merchant allows partial purchases. ex: False
47
+ # - card_tags [list of strings]: tags of the IssuingCard responsible for this purchase. ex: ['travel', 'food']
48
+ # - holder_tags [list of strings]: tags of the IssuingHolder responsible for this purchase. ex: ['technology', 'john snow']
40
49
  class IssuingPurchase < StarkInfra::Utils::Resource
41
- attr_reader :id, :holder_name, :card_id, :card_ending, :amount, :tax, :issuer_amount, :issuer_currency_code,
50
+ attr_reader :id, :holder_name, :card_id, :card_ending, :purpose, :amount, :tax, :issuer_amount, :issuer_currency_code,
42
51
  :issuer_currency_symbol, :merchant_amount, :merchant_currency_code, :merchant_currency_symbol,
43
52
  :merchant_category_code, :merchant_country_code, :acquirer_id, :merchant_id, :merchant_name,
44
- :merchant_fee, :wallet_id, :method_code, :score, :issuing_transaction_ids, :end_to_end_id, :status,
45
- :tags, :updated, :created
53
+ :merchant_fee, :wallet_id, :method_code, :score, :end_to_end_id, :tags, :zip_code,
54
+ :issuing_transaction_ids, :status, :updated, :created, :is_partial_allowed, :card_tags, :holder_tags
46
55
 
47
56
  def initialize(
48
- id: nil, holder_name: nil, card_id: nil, card_ending: nil, amount: nil, tax: nil, issuer_amount: nil,
57
+ id: nil, holder_name: nil, card_id: nil, card_ending: nil, purpose: nil, amount: nil, tax: nil, issuer_amount: nil,
49
58
  issuer_currency_code: nil, issuer_currency_symbol: nil, merchant_amount: nil, merchant_currency_code: nil,
50
59
  merchant_currency_symbol: nil, merchant_category_code: nil, merchant_country_code: nil, acquirer_id: nil,
51
60
  merchant_id: nil, merchant_name: nil, merchant_fee: nil, wallet_id: nil, method_code: nil, score: nil,
52
- issuing_transaction_ids: nil, end_to_end_id: nil, status: nil, tags: nil, updated: nil, created: nil
61
+ end_to_end_id: nil, tags: nil, zip_code: nil, issuing_transaction_ids: nil, status: nil, updated: nil, created: nil,
62
+ is_partial_allowed: nil, card_tags:nil, holder_tags:nil
53
63
  )
54
64
  super(id)
55
65
  @holder_name = holder_name
56
66
  @card_id = card_id
57
67
  @card_ending = card_ending
68
+ @purpose = purpose
58
69
  @amount = amount
59
70
  @tax = tax
60
71
  @issuer_amount = issuer_amount
@@ -72,12 +83,17 @@ module StarkInfra
72
83
  @wallet_id = wallet_id
73
84
  @method_code = method_code
74
85
  @score = score
75
- @issuing_transaction_ids = issuing_transaction_ids
76
86
  @end_to_end_id = end_to_end_id
77
- @status = status
78
87
  @tags = tags
79
- @created = StarkInfra::Utils::Checks.check_datetime(created)
88
+ @zip_code = zip_code
89
+ @issuing_transaction_ids = issuing_transaction_ids
90
+ @status = status
80
91
  @updated = StarkInfra::Utils::Checks.check_datetime(updated)
92
+ @created = StarkInfra::Utils::Checks.check_datetime(created)
93
+ @is_partial_allowed = is_partial_allowed
94
+ @card_tags = card_tags
95
+ @holder_tags = holder_tags
96
+
81
97
  end
82
98
 
83
99
  # # Retrieve a specific IssuingPurchase
@@ -105,9 +121,9 @@ module StarkInfra
105
121
  # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
106
122
  # - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 09)
107
123
  # - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
108
- # - end_to_end_ids [list of strings, default []]: central bank's unique transaction ID. ex: 'E79457883202101262140HHX553UPqeq'
109
- # - holder_ids [list of strings, default []]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
110
- # - card_ids [list of strings, default []]: card IDs. ex: ['5656565656565656', '4545454545454545']
124
+ # - end_to_end_ids [list of strings, default nil]: central bank's unique transaction ID. ex: 'E79457883202101262140HHX553UPqeq'
125
+ # - holder_ids [list of strings, default nil]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
126
+ # - card_ids [list of strings, default nil]: card IDs. ex: ['5656565656565656', '4545454545454545']
111
127
  # - status [list of strings, default nil]: filter for status of retrieved objects. ex: ['approved', 'canceled', 'denied', 'confirmed', 'voided']
112
128
  # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if starkinfra.user was set before function call
113
129
  #
@@ -138,12 +154,12 @@ module StarkInfra
138
154
  # ## Parameters (optional):
139
155
  # - cursor [string, default nil]: cursor returned on the previous page function call.
140
156
  # - ids [list of strings, default nil]: purchase IDs. ex: ['5656565656565656', '4545454545454545']
141
- # - limit [integer, default nil]: maximum number of objects to be retrieved. Max = 100. ex: 35
157
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
142
158
  # - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
143
159
  # - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
144
- # - end_to_end_ids [list of strings, default []]: central bank's unique transaction ID. ex: 'E79457883202101262140HHX553UPqeq'
145
- # - holder_ids [list of strings, default []]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
146
- # - card_ids [list of strings, default []]: card IDs. ex: ['5656565656565656', '4545454545454545']
160
+ # - end_to_end_ids [list of strings, default nil]: central bank's unique transaction ID. ex: 'E79457883202101262140HHX553UPqeq'
161
+ # - holder_ids [list of strings, default nil]: card holder IDs. ex: ['5656565656565656', '4545454545454545']
162
+ # - card_ids [list of strings, default nil]: card IDs. ex: ['5656565656565656', '4545454545454545']
147
163
  # - status [list of strings, default nil]: filter for status of retrieved objects. ex: ['approved', 'canceled', 'denied', 'confirmed', 'voided']
148
164
  # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if starkinfra.user was set before function call
149
165
  #
@@ -169,6 +185,61 @@ module StarkInfra
169
185
  )
170
186
  end
171
187
 
188
+ # # Create a single verified IssuingPurchase authorization request from a content string
189
+ #
190
+ # Use this method to parse and verify the authenticity of the authorization request received at the informed endpoint.
191
+ # Authorization requests are posted to your registered endpoint whenever IssuingPurchases are received.
192
+ # They present IssuingPurchase data that must be analyzed and answered with approval or declination.
193
+ # If the provided digital signature does not check out with the StarkInfra public key, a stark.exception.InvalidSignatureException will be raised.
194
+ # If the authorization request is not answered within 2 seconds or is not answered with an HTTP status code 200 the
195
+ # IssuingPurchase will go through the pre-configured stand-in validation.
196
+ #
197
+ # ## Parameters (required):
198
+ # - content [string]: response content from request received at user endpoint (not parsed)
199
+ # - signature [string]: base-64 digital signature received at response header 'Digital-Signature'
200
+ #
201
+ # # ## Parameters (optional):
202
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if starkinfra.user was set before function call
203
+ #
204
+ # ## Return:
205
+ # - Parsed IssuingPurchase object
206
+ def self.parse(content:, signature:, user: nil)
207
+ StarkInfra::Utils::Parse.parse_and_verify(
208
+ content: content,
209
+ signature: signature,
210
+ user: user,
211
+ key: nil,
212
+ **resource
213
+ )
214
+ end
215
+
216
+ # # Helps you respond to a IssuingPurchase authorization request
217
+ #
218
+ # ## Parameters (required):
219
+ # - status [string]: sub-issuer response to the authorization. ex: 'approved' or 'denied'
220
+ #
221
+ # ## Parameters (conditionally required):
222
+ # - reason [string]: denial reason. Options: 'other', 'blocked', 'lostCard', 'stolenCard', 'invalidPin', 'invalidCard', 'cardExpired', 'issuerError', 'concurrency', 'standInDenial', 'subIssuerError', 'invalidPurpose', 'invalidZipCode', 'invalidWalletId', 'inconsistentCard', 'settlementFailed', 'cardRuleMismatch', 'invalidExpiration', 'prepaidInstallment', 'holderRuleMismatch', 'insufficientBalance', 'tooManyTransactions', 'invalidSecurityCode', 'invalidPaymentMethod', 'confirmationDeadline', 'withdrawalAmountLimit', 'insufficientCardLimit', 'insufficientHolderLimit'
223
+ #
224
+ # # ## Parameters (optional):
225
+ # - amount [integer, default nil]: amount in cents that was authorized. ex: 1234 (= R$ 12.34)
226
+ # - tags [list of strings, default nil]: tags to filter retrieved object. ex: ['tony', 'stark']
227
+ #
228
+ # ## Return:
229
+ # - Dumped JSON string that must be returned to us on the IssuingPurchase request
230
+ def self.response(
231
+ status:, reason:, amount:, tags:
232
+ )
233
+ params = {
234
+ 'status': status,
235
+ 'reason': reason,
236
+ 'amount': amount,
237
+ 'tags': tags
238
+ }
239
+
240
+ params.to_json
241
+ end
242
+
172
243
  def self.resource
173
244
  {
174
245
  resource_name: 'IssuingPurchase',
@@ -178,6 +249,7 @@ module StarkInfra
178
249
  holder_name: json['holder_name'],
179
250
  card_id: json['card_id'],
180
251
  card_ending: json['card_ending'],
252
+ purpose: json['purpose'],
181
253
  amount: json['amount'],
182
254
  tax: json['tax'],
183
255
  issuer_amount: json['issuer_amount'],
@@ -195,12 +267,16 @@ module StarkInfra
195
267
  wallet_id: json['wallet_id'],
196
268
  method_code: json['method_code'],
197
269
  score: json['score'],
198
- issuing_transaction_ids: json['issuing_transaction_ids'],
199
270
  end_to_end_id: json['end_to_end_id'],
200
- status: json['status'],
201
271
  tags: json['tags'],
272
+ zip_code: json['zip_code'],
273
+ issuing_transaction_ids: json['issuing_transaction_ids'],
274
+ status: json['status'],
202
275
  updated: json['updated'],
203
- created: json['created']
276
+ created: json['created'],
277
+ is_partial_allowed: json['is_partial_allowed'],
278
+ card_tags: json['card_tags'],
279
+ holder_tags: json['holder_tags']
204
280
  )
205
281
  }
206
282
  }
@@ -1,9 +1,9 @@
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')
6
5
  require_relative('issuingpurchase')
6
+ require_relative('../utils/resource')
7
7
 
8
8
  module StarkInfra
9
9
  class IssuingPurchase
@@ -84,7 +84,7 @@ module StarkInfra
84
84
  # ## Parameters (optional):
85
85
  # - cursor [string, default nil]: cursor returned on the previous page function call
86
86
  # - ids [list of strings, default nil]: list of IssuingPurchase ids to filter logs. ex: ['5656565656565656', '4545454545454545']
87
- # - limit [integer, default nil]: maximum number of objects to be retrieved. Max = 100. ex: 35
87
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
88
88
  # - after [Date or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
89
89
  # - before [Date or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
90
90
  # - types [list of strings, default nil]: filter for log event types. ex: ['approved', 'canceled', 'confirmed', 'denied', 'reversed', 'voided']