bs2_api 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2b8b144d4d8f5045e87461029c823e9b5f5a7c3d5a9191f1e39a542ac5d7400
4
- data.tar.gz: c9bcf3bb230b56e8a0ac0d0e2d4373ec37a49869bc1918597b36dd57d1ff5bab
3
+ metadata.gz: 83d1974407ed876b13a3c90b79f4ea2ac0d10f018671176974d0546c8cf37c16
4
+ data.tar.gz: 11ae325cfb8f34158df8cffc73bb97b44371b5c1092a3c45784fb9a947672d7c
5
5
  SHA512:
6
- metadata.gz: d4a1c8e8823be43d5c6f8a69b4817552e58e3e1a82d81780ed3a181ecae7449d6da2f0235bda18d36b2632dc7e58d06346624690efc9ed6f1b46ef526167572f
7
- data.tar.gz: 242287b0695c77833428867361fb1a469eb912ffa0b387c8443f8fbba3db23a2bdd4aa1dbc6e9e172084166fb087ff8fbe9ff19a0cdc6260a12449963ecc7e86
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bs2_api (0.3.2)
4
+ bs2_api (0.3.4)
5
5
  activesupport
6
6
  builder
7
7
  bundler
data/README.md CHANGED
@@ -1,3 +1,8 @@
1
+ [![CI status](https://github.com/latamgateway/bs2_api/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/latamgateway/bs2_api/actions/workflows/test.yml)
2
+ [![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/latamgateway/bs2_api.svg?style=flat-square)](http://github.com/latamgateway/bs2_api/releases)
3
+ [![Version](https://img.shields.io/gem/v/bs2_api.svg?style=flat-square)](https://rubygems.org/gems/bs2_api)
4
+ [![GitHub](https://img.shields.io/github/license/latamgateway/bs2_api?style=flat-square)](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.merchantId
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
- ```ruby
105
- # Após criar um Payment é necessário confirmar
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
- # Tanto a ordem de transferência via chave ou manual tem o mesmo payment.
109
- # Caso tenha criado via chave no passo anterior:
110
- payment = pay_key.payment
112
+ ```ruby
111
113
 
112
- # Ou caso tenha criado a ordem via Manual no passo anterior:
113
- payment = pay_manual.payment
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 de problema, um erro será lançado.
123
+ # Caso a confirmação problema, um erro será lançado.
119
124
  raise Bs2Api::Errors::ConfirmationError
120
125
 
121
- # Caso nenhum erro seja lançado (já é sucesso) porém, você pode ter certeza com
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',
@@ -11,5 +11,7 @@ class Configuration
11
11
 
12
12
  def valid?
13
13
  raise Bs2Api::Errors::MissingConfiguration, 'Missing configuration credentials' if @client_id.blank? || @client_secret.blank?
14
+
15
+ true
14
16
  end
15
17
  end
@@ -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
@@ -39,7 +39,7 @@ module Bs2Api
39
39
  def body
40
40
  {
41
41
  grant_type: "client_credentials",
42
- scope: "pix.write%20pix.read"
42
+ scope: "pix.write pix.read"
43
43
  }.to_query
44
44
  end
45
45
 
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bs2Api
4
- VERSION = "0.3.3"
4
+ VERSION = "0.3.4"
5
5
  end
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.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