inter_api 0.1.0 → 0.1.2
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.rb +8 -6
- data/lib/inter_api/payment.rb +17 -3
- data/lib/inter_api/payment_error.rb +25 -0
- data/lib/inter_api/version.rb +1 -1
- data/lib/inter_api.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c9ecfff5db0dc4478eccff3eb84f4396b702c3e2cc9e4ce18581fc7752e17b0
|
4
|
+
data.tar.gz: d45bbd34051b389eacb045243db1df83192a44b769ed8b51137510a8b6c98948
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bb5bcae235c1d6cc5f47099517ac973e022657500d951215452e8054ef8d6bf7d5247e2293c941451ce9ff70e304d0951ba7de355fca38537e6ed5aa1c843df
|
7
|
+
data.tar.gz: 2bbf29df1b4ba0b151107f65f9f18fdb81cf2a7101745aa4f9e07562622a3ec91f2d3d5a9171b93b05b486ff1bd0dcb5df5bcb5faadd282b775aae47dabc4bd2
|
data/lib/inter_api/client.rb
CHANGED
@@ -2,17 +2,18 @@ module InterApi
|
|
2
2
|
class Client < Ac::Base
|
3
3
|
BASE_URL = "https://cdpj.partners.bancointer.com.br/"
|
4
4
|
|
5
|
-
attr_accessor :crt, :key, :client_id, :client_secret, :chave_pix, :conta_corrente, :token, :token_expires_at
|
6
|
-
def initialize crt:, key:, client_id:, client_secret:, chave_pix:, conta_corrente:, token: nil, token_expires_at: nil
|
5
|
+
attr_accessor :crt, :key, :client_id, :client_secret, :chave_pix, :conta_corrente, :scopes, :token, :token_expires_at
|
6
|
+
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", token: nil, token_expires_at: nil
|
7
7
|
@crt = crt
|
8
8
|
@key = key
|
9
9
|
@client_id = client_id
|
10
10
|
@client_secret = client_secret
|
11
11
|
@chave_pix = chave_pix
|
12
12
|
@conta_corrente = conta_corrente
|
13
|
+
@scopes = scopes
|
13
14
|
@token = token
|
14
15
|
@token_expires_at = token_expires_at
|
15
|
-
if @token.nil? || @token_expires_at.
|
16
|
+
if @token.nil? || @token_expires_at < Time.now
|
16
17
|
authenticate!
|
17
18
|
end
|
18
19
|
end
|
@@ -25,7 +26,7 @@ module InterApi
|
|
25
26
|
client_id: @client_id,
|
26
27
|
client_secret: @client_secret,
|
27
28
|
grant_type: "client_credentials",
|
28
|
-
scope:
|
29
|
+
scope: @scopes
|
29
30
|
}
|
30
31
|
response = post("/oauth/v2/token", headers: headers, sslcert: @crt, sslkey: @key, body: body)
|
31
32
|
@token = response.json["access_token"]
|
@@ -64,9 +65,10 @@ module InterApi
|
|
64
65
|
private
|
65
66
|
|
66
67
|
def build_devedor payer_tax_id, payer_name
|
67
|
-
|
68
|
+
formatted_tax_id = payer_tax_id.gsub(/\D/, "")
|
69
|
+
document_type = (formatted_tax_id.length == 11) ? "cpf" : "cnpj"
|
68
70
|
{
|
69
|
-
document_type =>
|
71
|
+
document_type => formatted_tax_id,
|
70
72
|
"nome" => payer_name
|
71
73
|
}
|
72
74
|
end
|
data/lib/inter_api/payment.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module InterApi
|
2
2
|
class Payment
|
3
3
|
|
4
|
-
attr_reader :response, :txid, :copia_e_cola, :status, :solicitacao, :info_adicionais, :valor_original, :valor_pago, :criacao, :expiracao, :devedor_nome, :devedor_tax_id
|
4
|
+
attr_reader :response, :txid, :copia_e_cola, :status, :solicitacao, :info_adicionais, :valor_original, :valor_pago, :criacao, :expiracao, :devedor_nome, :devedor_tax_id, :internal_error
|
5
5
|
def initialize response
|
6
6
|
@response = response
|
7
7
|
@txid = response.dig("txid")
|
@@ -11,10 +11,11 @@ module InterApi
|
|
11
11
|
@info_adicionais = response.dig("infoAdicionais")
|
12
12
|
@valor_original = response.dig("valor", "original")
|
13
13
|
@valor_pago = response.dig("pix", 0, "valor")
|
14
|
-
@criacao =
|
15
|
-
@expiracao =
|
14
|
+
@criacao = date_creation
|
15
|
+
@expiracao = date_expiration
|
16
16
|
@devedor_nome = response.dig("devedor", "nome")
|
17
17
|
@devedor_tax_id = response.dig("devedor", "cpf") || response.dig("devedor", "cnpj")
|
18
|
+
@internal_error = PaymentError.new(response).internal_error
|
18
19
|
end
|
19
20
|
|
20
21
|
def paid?
|
@@ -22,6 +23,7 @@ module InterApi
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def qr_code module_size: 4
|
26
|
+
return false unless @copia_e_cola
|
25
27
|
qr = RQRCode::QRCode.new(@copia_e_cola, size: 10, level: :l)
|
26
28
|
qr.as_svg(module_size: module_size)
|
27
29
|
end
|
@@ -30,6 +32,18 @@ module InterApi
|
|
30
32
|
@expiracao > Time.now
|
31
33
|
end
|
32
34
|
|
35
|
+
private
|
36
|
+
|
37
|
+
def date_creation
|
38
|
+
return nil unless @response.dig("calendario", "criacao")
|
39
|
+
Time.new(@response.dig("calendario", "criacao"))
|
40
|
+
end
|
41
|
+
|
42
|
+
def date_expiration
|
43
|
+
return nil unless @response.dig("calendario", "criacao")
|
44
|
+
Time.new(@response.dig("calendario", "criacao")) + @response.dig("calendario", "expiracao")
|
45
|
+
end
|
46
|
+
|
33
47
|
# def reload!
|
34
48
|
# @response = api_inter.find_by_id(id)
|
35
49
|
# end
|
@@ -0,0 +1,25 @@
|
|
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
|
data/lib/inter_api/version.rb
CHANGED
data/lib/inter_api.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inter_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ulysses
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ac
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- lib/inter_api.rb
|
69
69
|
- lib/inter_api/client.rb
|
70
70
|
- lib/inter_api/payment.rb
|
71
|
+
- lib/inter_api/payment_error.rb
|
71
72
|
- lib/inter_api/version.rb
|
72
73
|
- sig/inter_api.rbs
|
73
74
|
homepage: https://github.com/ulysses-bull/inter_api
|