inter_api 1.2.4 → 2.0.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/inter_api/client_production.rb +40 -39
- data/lib/inter_api/payment.rb +43 -19
- data/lib/inter_api/version.rb +1 -1
- data/lib/inter_api.rb +1 -3
- metadata +3 -7
- data/lib/inter_api/payment_error.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 916894b13dfca9706d937b33783c82abadfa0b38cd8e453c16cf38722cbf91bd
|
4
|
+
data.tar.gz: cfe2a096a7ff9b744e30710f750caac01a29b32d84e8bbe9a55d2d062650967f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7767f24ea9c94da6f4fba3e5a8e11b5314999a897fcd04c36470dcf8bf5c9da6154ebdc4fb8501cf339c3746c6f3d86e2ae9aadfbb1379b37268751de7b4151
|
7
|
+
data.tar.gz: 3d2be806b3bc8c4ce6323bebc0a64d19ed2050e373ef785da9d9292b690016843cdb8c76a7a0e618a597f857751bb5a12c90500113ad615611dc7eb67d68aa1d
|
@@ -5,8 +5,8 @@ module InterApi
|
|
5
5
|
SAVE_RESPONSES = true
|
6
6
|
|
7
7
|
attr_reader :crt, :key, :client_id, :client_secret, :chave_pix, :conta_corrente, :scopes
|
8
|
-
attr_accessor :
|
9
|
-
def initialize(crt:, key:, client_id:, client_secret:, chave_pix:, conta_corrente:, scopes: "cobv.write cobv.read cob.write cob.read pix.write pix.read webhook.read webhook.write",
|
8
|
+
attr_accessor :access_token, :token_expires_at
|
9
|
+
def initialize(crt:, key:, client_id:, client_secret:, chave_pix:, conta_corrente:, scopes: "cobv.write cobv.read cob.write cob.read pix.write pix.read webhook.read webhook.write", access_token: nil, token_expires_at: nil)
|
10
10
|
@crt = crt
|
11
11
|
@key = key
|
12
12
|
@client_id = client_id
|
@@ -14,14 +14,31 @@ module InterApi
|
|
14
14
|
@chave_pix = chave_pix
|
15
15
|
@conta_corrente = conta_corrente
|
16
16
|
@scopes = scopes
|
17
|
-
@
|
17
|
+
@access_token= access_token
|
18
18
|
@token_expires_at = token_expires_at
|
19
|
-
if @token.nil? || @token_expires_at < Time.now
|
20
|
-
authenticate!
|
21
|
-
end
|
22
19
|
end
|
23
20
|
|
24
|
-
def
|
21
|
+
def access_token
|
22
|
+
authorize if should_refresh?
|
23
|
+
@access_token
|
24
|
+
end
|
25
|
+
|
26
|
+
def should_refresh?
|
27
|
+
@access_token.blank? || @token_expires_at&.past?
|
28
|
+
end
|
29
|
+
|
30
|
+
def default_options
|
31
|
+
{
|
32
|
+
sslcert: crt,
|
33
|
+
sslkey: key,
|
34
|
+
headers: {
|
35
|
+
"Content-Type" => "application/json",
|
36
|
+
"x-conta-corrente" => @conta_corrente
|
37
|
+
}
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
def authorize
|
25
42
|
headers = {
|
26
43
|
"Content-Type" => "application/x-www-form-urlencoded"
|
27
44
|
}
|
@@ -31,18 +48,18 @@ module InterApi
|
|
31
48
|
grant_type: "client_credentials",
|
32
49
|
scope: @scopes
|
33
50
|
}
|
34
|
-
response = post("/oauth/v2/token", headers
|
35
|
-
@
|
36
|
-
@token_expires_at = Time.now + response.
|
51
|
+
response = post("/oauth/v2/token", headers:, body:, skip_authentication: true)
|
52
|
+
@access_token = response.access_token
|
53
|
+
@token_expires_at = Time.now + response.expires_in
|
37
54
|
end
|
38
55
|
|
39
56
|
def get_payment_request(payment_id)
|
40
|
-
|
57
|
+
get("/pix/v2/cob/#{payment_id}")
|
41
58
|
end
|
42
59
|
|
43
60
|
def get_payment(payment_id)
|
44
|
-
response = get("/pix/v2/cob/#{payment_id}"
|
45
|
-
InterApi::Payment.new(response
|
61
|
+
response = get("/pix/v2/cob/#{payment_id}")
|
62
|
+
InterApi::Payment.new(response, self)
|
46
63
|
end
|
47
64
|
|
48
65
|
def create_payment_request(**args_body)
|
@@ -59,7 +76,7 @@ module InterApi
|
|
59
76
|
solicitacaoPagador: args_body[:solicitacao_pagador],
|
60
77
|
infoAdicionais: args_body[:info_adicionais]
|
61
78
|
}
|
62
|
-
|
79
|
+
post("/pix/v2/cob", body:)
|
63
80
|
end
|
64
81
|
|
65
82
|
def create_payment(amount:, payer_tax_id: nil, payer_name: nil, expiration: 3600, solicitacao_pagador: nil, info_adicionais: [])
|
@@ -77,22 +94,21 @@ module InterApi
|
|
77
94
|
}
|
78
95
|
body[:devedor] = build_devedor(payer_tax_id, payer_name) if payer_tax_id && payer_name
|
79
96
|
|
80
|
-
response = post("/pix/v2/cob",
|
81
|
-
InterApi::Payment.new(response
|
97
|
+
response = post("/pix/v2/cob", body:)
|
98
|
+
InterApi::Payment.new(response, self)
|
82
99
|
end
|
83
100
|
|
84
101
|
def update_payment_request(payment_id, body)
|
85
|
-
|
102
|
+
patch("/pix/v2/cob/#{payment_id}", body:)
|
86
103
|
end
|
87
104
|
|
88
105
|
def update_payment(payment_id, body)
|
89
|
-
response = patch("/pix/v2/cob/#{payment_id}",
|
90
|
-
InterApi::Payment.new(response
|
106
|
+
response = patch("/pix/v2/cob/#{payment_id}", body:)
|
107
|
+
InterApi::Payment.new(response, self)
|
91
108
|
end
|
92
109
|
|
93
110
|
def get_refund(end_to_end_id, id)
|
94
|
-
|
95
|
-
response.json
|
111
|
+
get("/pix/v2/pix/#{end_to_end_id}/devolucao/#{id}")
|
96
112
|
end
|
97
113
|
|
98
114
|
def refund_payment(end_to_end_id, amount, refund_nature, description)
|
@@ -102,20 +118,18 @@ module InterApi
|
|
102
118
|
natureza: refund_nature,
|
103
119
|
descricao: description
|
104
120
|
}
|
105
|
-
|
106
|
-
response.json
|
121
|
+
put("/pix/v2/pix/#{end_to_end_id}/devolucao/#{id}", body:)
|
107
122
|
end
|
108
123
|
|
109
124
|
def update_webhook(url)
|
110
125
|
body = {
|
111
126
|
webhookUrl: url
|
112
127
|
}
|
113
|
-
put("/pix/v2/webhook/#{@chave_pix}",
|
128
|
+
put("/pix/v2/webhook/#{@chave_pix}", body:)
|
114
129
|
end
|
115
130
|
|
116
131
|
def get_webhook
|
117
|
-
|
118
|
-
response.json
|
132
|
+
get("/pix/v2/webhook/#{@chave_pix}")
|
119
133
|
end
|
120
134
|
|
121
135
|
private
|
@@ -128,18 +142,5 @@ module InterApi
|
|
128
142
|
"nome" => payer_name
|
129
143
|
}
|
130
144
|
end
|
131
|
-
|
132
|
-
def build_headers
|
133
|
-
{
|
134
|
-
"x-conta-corrente" => @conta_corrente,
|
135
|
-
"Authorization" => "Bearer #{@token}",
|
136
|
-
"Content-Type" => "application/json"
|
137
|
-
}
|
138
|
-
end
|
139
|
-
|
140
|
-
def validate_response(response, required_response_key)
|
141
|
-
puts response.json unless response.success?
|
142
|
-
![500, 429].include?(response.code) || response.json.dig(*required_response_key)
|
143
|
-
end
|
144
145
|
end
|
145
146
|
end
|
data/lib/inter_api/payment.rb
CHANGED
@@ -1,24 +1,23 @@
|
|
1
1
|
module InterApi
|
2
2
|
class Payment
|
3
|
-
attr_reader :response, :txid, :end_to_end_id, :devolucoes, :copia_e_cola, :status, :solicitacao, :info_adicionais, :valor_original, :valor_pago, :criacao, :expiracao, :pago_em, :devedor_nome, :devedor_tax_id
|
3
|
+
attr_reader :response, :txid, :end_to_end_id, :devolucoes, :copia_e_cola, :status, :solicitacao, :info_adicionais, :valor_original, :valor_pago, :criacao, :expiracao, :pago_em, :devedor_nome, :devedor_tax_id
|
4
4
|
def initialize(response, client)
|
5
5
|
@client = client
|
6
6
|
@response = response
|
7
|
-
@txid = response.
|
8
|
-
@end_to_end_id =
|
9
|
-
@devolucoes =
|
10
|
-
@copia_e_cola = response.
|
11
|
-
@status = response.
|
12
|
-
@solicitacao = response
|
13
|
-
@info_adicionais = response.
|
14
|
-
@valor_original = response.
|
15
|
-
@valor_pago =
|
7
|
+
@txid = response.txid
|
8
|
+
@end_to_end_id = end_to_end
|
9
|
+
@devolucoes = devolutions
|
10
|
+
@copia_e_cola = response.pixCopiaECola
|
11
|
+
@status = response.status
|
12
|
+
@solicitacao = response["solicitacaoPagador"]
|
13
|
+
@info_adicionais = response.infoAdicionais
|
14
|
+
@valor_original = response.valor.original
|
15
|
+
@valor_pago = total_paid
|
16
16
|
@criacao = creation_date
|
17
17
|
@expiracao = expiration_date
|
18
18
|
@pago_em = paid_date
|
19
|
-
@devedor_nome =
|
20
|
-
@devedor_tax_id =
|
21
|
-
@internal_error = PaymentError.new(response).internal_error
|
19
|
+
@devedor_nome = debtor_name
|
20
|
+
@devedor_tax_id = debtor_tax_id
|
22
21
|
end
|
23
22
|
|
24
23
|
def paid? external_value = nil
|
@@ -62,18 +61,43 @@ module InterApi
|
|
62
61
|
private
|
63
62
|
|
64
63
|
def creation_date
|
65
|
-
return nil unless @response.
|
66
|
-
Time.new(@response.
|
64
|
+
return nil unless @response.calendario.criacao
|
65
|
+
Time.new(@response.calendario.criacao)
|
67
66
|
end
|
68
67
|
|
69
68
|
def expiration_date
|
70
|
-
return nil unless @response.
|
71
|
-
Time.new(@response.
|
69
|
+
return nil unless @response.calendario.criacao
|
70
|
+
Time.new(@response.calendario.criacao) + @response.calendario.expiracao
|
72
71
|
end
|
73
72
|
|
74
73
|
def paid_date
|
75
|
-
return nil unless @response
|
76
|
-
Time.new(@response.
|
74
|
+
return nil unless @response["pix"] && @response.pix.any? && @response.pix[0].horario
|
75
|
+
Time.new(@response.pix[0].horario)
|
76
|
+
end
|
77
|
+
|
78
|
+
def debtor_name
|
79
|
+
return nil unless @response["devedor"]
|
80
|
+
@response.devedor.nome
|
81
|
+
end
|
82
|
+
|
83
|
+
def debtor_tax_id
|
84
|
+
return nil unless @response["devedor"]
|
85
|
+
@response.devedor.cpf || @response.devedor.cnpj
|
86
|
+
end
|
87
|
+
|
88
|
+
def end_to_end
|
89
|
+
return nil unless @response["pix"] && @response.pix.any?
|
90
|
+
@response.pix[0].endToEndId
|
91
|
+
end
|
92
|
+
|
93
|
+
def devolutions
|
94
|
+
return nil unless @response["pix"] && @response.pix.any?
|
95
|
+
@response.pix[0].devolucoes
|
96
|
+
end
|
97
|
+
|
98
|
+
def total_paid
|
99
|
+
return nil unless @response["pix"] && @response.pix.any?
|
100
|
+
@response.pix[0].valor
|
77
101
|
end
|
78
102
|
end
|
79
103
|
end
|
data/lib/inter_api/version.rb
CHANGED
data/lib/inter_api.rb
CHANGED
@@ -9,7 +9,6 @@ require "ac"
|
|
9
9
|
require_relative "inter_api/version"
|
10
10
|
require "inter_api/client_production"
|
11
11
|
require "inter_api/payment"
|
12
|
-
require "inter_api/payment_error"
|
13
12
|
|
14
13
|
module InterApi
|
15
14
|
Typhoeus::Config.timeout = 10
|
@@ -23,8 +22,7 @@ module InterApi
|
|
23
22
|
body = {
|
24
23
|
valor: format("%.2f", amount)
|
25
24
|
}
|
26
|
-
|
27
|
-
response.json
|
25
|
+
post("/pix/v2/cob/pagar/#{payment_id}", body:)
|
28
26
|
end
|
29
27
|
end
|
30
28
|
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inter_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todas Essas Coisas
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: ac
|
@@ -82,7 +81,6 @@ files:
|
|
82
81
|
- lib/inter_api.rb
|
83
82
|
- lib/inter_api/client_production.rb
|
84
83
|
- lib/inter_api/payment.rb
|
85
|
-
- lib/inter_api/payment_error.rb
|
86
84
|
- lib/inter_api/version.rb
|
87
85
|
- sig/inter_api.rbs
|
88
86
|
homepage: https://github.com/todasessascoisas/inter_api
|
@@ -92,7 +90,6 @@ metadata:
|
|
92
90
|
homepage_uri: https://github.com/todasessascoisas/inter_api
|
93
91
|
source_code_uri: https://github.com/todasessascoisas/inter_api
|
94
92
|
changelog_uri: https://github.com/todasessascoisas/inter_api
|
95
|
-
post_install_message:
|
96
93
|
rdoc_options: []
|
97
94
|
require_paths:
|
98
95
|
- lib
|
@@ -107,8 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
104
|
- !ruby/object:Gem::Version
|
108
105
|
version: '0'
|
109
106
|
requirements: []
|
110
|
-
rubygems_version: 3.
|
111
|
-
signing_key:
|
107
|
+
rubygems_version: 3.6.9
|
112
108
|
specification_version: 4
|
113
109
|
summary: ''
|
114
110
|
test_files: []
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module InterApi
|
2
|
-
class PaymentError
|
3
|
-
STATUS_ERROR = [400, 403, 404, 503]
|
4
|
-
attr_accessor :json_response
|
5
|
-
def initialize json_response
|
6
|
-
@json_response = json_response
|
7
|
-
end
|
8
|
-
|
9
|
-
def internal_error
|
10
|
-
return nil unless json_response["violacoes"] || STATUS_ERROR.include?(json_response["status"])
|
11
|
-
failed_message_error || rejected_message_error || "Pagamento recusado."
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def rejected_message_error
|
17
|
-
"#{json_response["title"]} => #{json_response["detail"]}"
|
18
|
-
end
|
19
|
-
|
20
|
-
def failed_message_error
|
21
|
-
return false unless json_response["violacoes"]
|
22
|
-
"#{json_response["violacoes"][0]["razao"]} => #{json_response["violacoes"][0]["propriedade"]}"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|