bs2_api 0.3.3 → 0.3.4
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/.github/workflows/test.yml +34 -0
- data/Gemfile.lock +1 -1
- data/README.md +24 -17
- data/bs2_api.gemspec +2 -0
- data/lib/bs2_api.rb +3 -2
- data/lib/bs2_api/configuration.rb +2 -0
- data/lib/bs2_api/payment/base.rb +1 -16
- data/lib/bs2_api/payment/confirmation.rb +5 -5
- data/lib/bs2_api/request/auth.rb +1 -1
- data/lib/bs2_api/util/response.rb +20 -0
- data/lib/bs2_api/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83d1974407ed876b13a3c90b79f4ea2ac0d10f018671176974d0546c8cf37c16
|
4
|
+
data.tar.gz: 11ae325cfb8f34158df8cffc73bb97b44371b5c1092a3c45784fb9a947672d7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afa20659aead1ad39f6a5d8123d7d34a880b3379888c4a1f4357fea96805ba3aa5da8ad95da622dd06fa656b63f2e9c05082d75136dcfd30ac9d49f8914f97da
|
7
|
+
data.tar.gz: fc45ca9142c72de060b098e716c578a6a636ebab90bdd67627be66ec8fa00d9c2603c1e5efb8b5c6be0bba500f9dff68bdf89a85b0e11a580972fe0996e507c1
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: bs2_api test
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ main ]
|
6
|
+
pull_request:
|
7
|
+
types: [ opened, synchronize, reopened ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
env:
|
13
|
+
BS2_ENVIRONMENT: 'sandbox'
|
14
|
+
BS2_CLIENT_ID: '123'
|
15
|
+
BS2_CLIENT_SECRET: '123'
|
16
|
+
BS2_EVP_TEST_KEY: '123'
|
17
|
+
|
18
|
+
strategy:
|
19
|
+
matrix:
|
20
|
+
ruby-version: ["2.7.2"]
|
21
|
+
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
|
25
|
+
- name: Set up Ruby
|
26
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
27
|
+
with:
|
28
|
+
ruby-version: ${{ matrix.ruby-version }}
|
29
|
+
|
30
|
+
- name: Install dependencies
|
31
|
+
run: bundle install
|
32
|
+
|
33
|
+
- name: Run tests
|
34
|
+
run: bundle exec rspec spec/
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
[](https://github.com/latamgateway/bs2_api/actions/workflows/test.yml)
|
2
|
+
[](http://github.com/latamgateway/bs2_api/releases)
|
3
|
+
[](https://rubygems.org/gems/bs2_api)
|
4
|
+
[](https://github.com/latamgateway/bs2_api/blob/main/LICENSE)
|
5
|
+
|
1
6
|
# Bs2Api
|
2
7
|
|
3
8
|
Integração com a API do Banco BS2: https://devs.bs2.com/manual/pix-clientes
|
@@ -64,7 +69,7 @@ pay_key = Bs2Api::Payment::Key.new(pix_key).call
|
|
64
69
|
pay_key.payment.id
|
65
70
|
=> "96f0b3c4-4c76-4a7a-9933-9c9f86df7490" # pagamentoId gerado no BS2
|
66
71
|
|
67
|
-
pay_key.payment.
|
72
|
+
pay_key.payment.merchant_id
|
68
73
|
=> "E710278662021061618144401750781P" # endToEndId gerado no BS2
|
69
74
|
|
70
75
|
```
|
@@ -101,32 +106,33 @@ pay_manual.payment.merchantId
|
|
101
106
|
```
|
102
107
|
|
103
108
|
### Confirmar ordem de transferência
|
104
|
-
|
105
|
-
|
106
|
-
# Nessa etapa o dinheiro é de fato transferido
|
109
|
+
Após criar um Payment é necessário confirmar, nessa etapa o dinheiro é de fato transferido.
|
110
|
+
Nessa etapa é necessário **informar o valor** que deseja ser transferido.
|
107
111
|
|
108
|
-
|
109
|
-
# Caso tenha criado via chave no passo anterior:
|
110
|
-
payment = pay_key.payment
|
112
|
+
```ruby
|
111
113
|
|
112
|
-
#
|
113
|
-
|
114
|
+
# Ambos modelos de criação da ordem de pagamento possuem o mesmo objeto payment
|
115
|
+
# podendo ser utilizado da mesma forma nos dois casos:
|
116
|
+
# pay_key.payment ou pay_manual.payment
|
114
117
|
|
118
|
+
payment = pay_key.payment
|
115
119
|
amount = 10.50
|
120
|
+
|
116
121
|
confirmation = Bs2Api::Payment::Confirmation.new(payment, value: amount).call
|
117
122
|
|
118
|
-
# Caso a confirmação
|
123
|
+
# Caso a confirmação dê problema, um erro será lançado.
|
119
124
|
raise Bs2Api::Errors::ConfirmationError
|
120
125
|
|
121
|
-
# Caso nenhum erro seja lançado
|
126
|
+
# Caso nenhum erro seja lançado significa que foi sucesso. Você pode ter certeza com
|
122
127
|
confirmation.success?
|
123
128
|
```
|
124
|
-
|
129
|
+
|
125
130
|
### Classes de erros:
|
126
131
|
```ruby
|
127
132
|
# Todos erros herdam de:
|
128
133
|
Bs2Api::Errors::Base
|
129
134
|
|
135
|
+
# Errors possíveis de serem lançados
|
130
136
|
Bs2Api::Errors::BadRequest
|
131
137
|
Bs2Api::Errors::ConfirmationError
|
132
138
|
Bs2Api::Errors::InvalidCustomer
|
@@ -134,9 +140,10 @@ Bs2Api::Errors::InvalidPixKey
|
|
134
140
|
Bs2Api::Errors::MissingConfiguration
|
135
141
|
Bs2Api::Errors::ServerError
|
136
142
|
Bs2Api::Errors::Unauthorized
|
137
|
-
|
138
|
-
# Caso não queira tratar um erro em específico basta fazer rescue do Base
|
139
|
-
rescue Bs2Api::Errors::Base => e
|
140
|
-
puts "Erro: #{e.message}"
|
141
|
-
end
|
142
143
|
```
|
144
|
+
|
145
|
+
---
|
146
|
+
|
147
|
+
### Observações
|
148
|
+
- Método `call` retorna o próprio objeto
|
149
|
+
- Em caso de retorno diferente de sucesso na comunicação com a API do Bs2, um erro sempre será lançado.
|
data/bs2_api.gemspec
CHANGED
@@ -13,6 +13,8 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "https://github.com/latamgateway/bs2_api"
|
14
14
|
spec.required_ruby_version = "~> 2.7", "< 3"
|
15
15
|
|
16
|
+
spec.license = "MIT"
|
17
|
+
|
16
18
|
spec.metadata["homepage_uri"] = spec.homepage
|
17
19
|
spec.metadata["source_code_uri"] = "https://github.com/latamgateway/bs2_api"
|
18
20
|
spec.metadata["changelog_uri"] = "https://github.com/latamgateway/bs2_api/blob/main/CHANGELOG.md"
|
data/lib/bs2_api.rb
CHANGED
@@ -8,6 +8,9 @@ require "active_support/core_ext/object/blank"
|
|
8
8
|
require 'bs2_api/version'
|
9
9
|
require 'bs2_api/configuration'
|
10
10
|
|
11
|
+
require 'bs2_api/util/bank_service'
|
12
|
+
require 'bs2_api/util/response'
|
13
|
+
|
11
14
|
require 'bs2_api/errors/base'
|
12
15
|
require 'bs2_api/errors/invalid_pix_key'
|
13
16
|
require 'bs2_api/errors/invalid_bank'
|
@@ -32,8 +35,6 @@ require 'bs2_api/payment/confirmation'
|
|
32
35
|
|
33
36
|
require 'bs2_api/request/auth'
|
34
37
|
|
35
|
-
require 'bs2_api/util/bank_service'
|
36
|
-
|
37
38
|
module Bs2Api
|
38
39
|
ENDPOINT = {
|
39
40
|
production: 'https://api.bs2.com',
|
data/lib/bs2_api/payment/base.rb
CHANGED
@@ -9,7 +9,7 @@ module Bs2Api
|
|
9
9
|
|
10
10
|
def call
|
11
11
|
response = post_request
|
12
|
-
raise Bs2Api::Errors::BadRequest, parse_error(response) unless response.created?
|
12
|
+
raise Bs2Api::Errors::BadRequest, ::Util::Response.parse_error(response) unless response.created?
|
13
13
|
|
14
14
|
@payment = Bs2Api::Entities::Payment.from_response(response)
|
15
15
|
self
|
@@ -32,21 +32,6 @@ module Bs2Api
|
|
32
32
|
Bs2Api::Request::Auth.token
|
33
33
|
end
|
34
34
|
|
35
|
-
def parse_error(response)
|
36
|
-
hash = JSON.parse(response.body)
|
37
|
-
message = "#{response.code}: "
|
38
|
-
|
39
|
-
if hash.is_a?(Array)
|
40
|
-
message << hash[0]["descricao"]
|
41
|
-
elsif hash.key?("error_description")
|
42
|
-
message << hash["error_description"]
|
43
|
-
else
|
44
|
-
message << hash.to_s
|
45
|
-
end
|
46
|
-
|
47
|
-
message
|
48
|
-
end
|
49
|
-
|
50
35
|
def payload
|
51
36
|
raise NoMethodError, "Missing #{__method__} to #{self.class}"
|
52
37
|
end
|
@@ -13,12 +13,16 @@ module Bs2Api
|
|
13
13
|
|
14
14
|
def call
|
15
15
|
response = post_request
|
16
|
-
raise Bs2Api::Errors::ConfirmationError, parse_error(response) unless response.accepted?
|
16
|
+
raise Bs2Api::Errors::ConfirmationError, ::Util::Response.parse_error(response) unless response.accepted?
|
17
17
|
|
18
18
|
@success = true
|
19
19
|
self
|
20
20
|
end
|
21
21
|
|
22
|
+
def success?
|
23
|
+
!!@success
|
24
|
+
end
|
25
|
+
|
22
26
|
private
|
23
27
|
def payload
|
24
28
|
@payment.to_hash
|
@@ -29,10 +33,6 @@ module Bs2Api
|
|
29
33
|
def url
|
30
34
|
"#{Bs2Api.endpoint}/pix/direto/forintegration/v1/pagamentos/#{@payment.id}/confirmacao"
|
31
35
|
end
|
32
|
-
|
33
|
-
def success?
|
34
|
-
!!@success
|
35
|
-
end
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/lib/bs2_api/request/auth.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Util
|
2
|
+
class Response
|
3
|
+
class << self
|
4
|
+
def parse_error res
|
5
|
+
hash = JSON.parse(res.body)
|
6
|
+
message = "#{res.code}: "
|
7
|
+
|
8
|
+
if hash.is_a?(Array)
|
9
|
+
message << hash[0]["descricao"]
|
10
|
+
elsif hash.key?("error_description")
|
11
|
+
message << hash["error_description"]
|
12
|
+
else
|
13
|
+
message << hash.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
message
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/bs2_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bs2_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kim Pastro
|
@@ -184,6 +184,7 @@ extensions: []
|
|
184
184
|
extra_rdoc_files: []
|
185
185
|
files:
|
186
186
|
- ".env.example"
|
187
|
+
- ".github/workflows/test.yml"
|
187
188
|
- ".gitignore"
|
188
189
|
- ".rspec"
|
189
190
|
- ".ruby-version"
|
@@ -221,9 +222,11 @@ files:
|
|
221
222
|
- lib/bs2_api/request/auth.rb
|
222
223
|
- lib/bs2_api/util/bank_service.rb
|
223
224
|
- lib/bs2_api/util/banks.yml
|
225
|
+
- lib/bs2_api/util/response.rb
|
224
226
|
- lib/bs2_api/version.rb
|
225
227
|
homepage: https://github.com/latamgateway/bs2_api
|
226
|
-
licenses:
|
228
|
+
licenses:
|
229
|
+
- MIT
|
227
230
|
metadata:
|
228
231
|
homepage_uri: https://github.com/latamgateway/bs2_api
|
229
232
|
source_code_uri: https://github.com/latamgateway/bs2_api
|