erede-ruby-sdk 3.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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +34 -0
  3. data/.github/workflows/rubygems.yml +30 -0
  4. data/.gitignore +11 -0
  5. data/.rspec +3 -0
  6. data/Dockerfile +5 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +37 -0
  9. data/LICENSE +21 -0
  10. data/README.md +104 -0
  11. data/Rakefile +4 -0
  12. data/erede-logo.png +0 -0
  13. data/erede.gemspec +24 -0
  14. data/integration_manual.pdf +0 -0
  15. data/lib/erede/environment.rb +32 -0
  16. data/lib/erede/errors/erede_error.rb +6 -0
  17. data/lib/erede/models/address.rb +17 -0
  18. data/lib/erede/models/authorization.rb +25 -0
  19. data/lib/erede/models/base.rb +29 -0
  20. data/lib/erede/models/brand.rb +9 -0
  21. data/lib/erede/models/capture.rb +11 -0
  22. data/lib/erede/models/cart.rb +14 -0
  23. data/lib/erede/models/consumer.rb +14 -0
  24. data/lib/erede/models/device.rb +14 -0
  25. data/lib/erede/models/document.rb +10 -0
  26. data/lib/erede/models/flight.rb +13 -0
  27. data/lib/erede/models/iata.rb +11 -0
  28. data/lib/erede/models/item.rb +16 -0
  29. data/lib/erede/models/passenger.rb +12 -0
  30. data/lib/erede/models/phone.rb +11 -0
  31. data/lib/erede/models/refund.rb +12 -0
  32. data/lib/erede/models/store.rb +13 -0
  33. data/lib/erede/models/submerchant.rb +19 -0
  34. data/lib/erede/models/three_d_secure.rb +19 -0
  35. data/lib/erede/models/transaction.rb +44 -0
  36. data/lib/erede/models/url.rb +10 -0
  37. data/lib/erede/responses/erede_response.rb +8 -0
  38. data/lib/erede/sdk.rb +51 -0
  39. data/lib/erede/services/base.rb +48 -0
  40. data/lib/erede/services/cancel_transaction.rb +20 -0
  41. data/lib/erede/services/capture_transaction.rb +20 -0
  42. data/lib/erede/services/create_transaction.rb +16 -0
  43. data/lib/erede/services/get_transaction.rb +21 -0
  44. data/lib/erede/version.rb +3 -0
  45. data/lib/erede.rb +37 -0
  46. data/swagger.json +1 -0
  47. metadata +144 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1f78b294fe99eac23b6c777004e45627e0ea3e52eec84687655692aa5d81cce0
4
+ data.tar.gz: f6e272fa91b3ba3c4d7227f951be790212c0d213c8a125ab04a09df86c1e8cbd
5
+ SHA512:
6
+ metadata.gz: e19817353bd278b779a51c36ce07555f40e19c3fae1f0a3c912db65b1795c8fbac5e34f95f31cd8b9f4bef176de996a6a65a702b786fc0078eab8f7a49de1cab
7
+ data.tar.gz: 9568d91d4fc7273e1f6ffdc485fec35156309649d7748c959488d9476976ce401200db4dbf8db379427d8100ba19ade663cd25061b50db31278000bdc5a2bb91
@@ -0,0 +1,34 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ dockerfile:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+
11
+ - name: Build Dockerfile
12
+ run: docker build -t erede_ruby .
13
+
14
+ - name: Run tests inside Docker container
15
+ run: docker run -v $(pwd):/app/ -i erede_ruby bundle exec rake spec
16
+
17
+ tests:
18
+ runs-on: ubuntu-latest
19
+ strategy:
20
+ matrix:
21
+ ruby-version: [2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1]
22
+ steps:
23
+ - uses: actions/checkout@v2
24
+
25
+ - name: Install Ruby ${{ matrix.ruby-version }}
26
+ uses: ruby/setup-ruby@v1
27
+ with:
28
+ ruby-version: ${{ matrix.ruby-version }}
29
+
30
+ - name: Install dependencies
31
+ run: bundle install
32
+
33
+ - name: Run tests with Ruby ${{ matrix.ruby-version }}
34
+ run: bundle exec rake spec
@@ -0,0 +1,30 @@
1
+ name: Publish to Rubygems
2
+
3
+ on:
4
+ release:
5
+ types: [created]
6
+
7
+ jobs:
8
+ deploy:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v2
12
+
13
+ - name: Install Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 3.0
17
+
18
+ - name: Install dependencies
19
+ run: bundle install
20
+
21
+ - name: Publish to Rubygems
22
+ run: |
23
+ mkdir -p $HOME/.gem
24
+ touch $HOME/.gem/credentials
25
+ chmod 0600 $HOME/.gem/credentials
26
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
27
+ gem build *.gemspec
28
+ gem push *.gem
29
+ env:
30
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ *.gem
10
+ .idea/
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/Dockerfile ADDED
@@ -0,0 +1,5 @@
1
+ FROM ruby:3.0.0-alpine
2
+ RUN apk update && apk add git make gcc musl-dev
3
+ WORKDIR /app
4
+ COPY . .
5
+ RUN bundle install
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,37 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ erede-ruby-sdk (3.0.0)
5
+ bundler
6
+ json
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ diff-lcs (1.5.0)
12
+ json (2.6.2)
13
+ rake (13.0.6)
14
+ rspec (3.11.0)
15
+ rspec-core (~> 3.11.0)
16
+ rspec-expectations (~> 3.11.0)
17
+ rspec-mocks (~> 3.11.0)
18
+ rspec-core (3.11.0)
19
+ rspec-support (~> 3.11.0)
20
+ rspec-expectations (3.11.0)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.11.0)
23
+ rspec-mocks (3.11.1)
24
+ diff-lcs (>= 1.2.0, < 2.0)
25
+ rspec-support (~> 3.11.0)
26
+ rspec-support (3.11.0)
27
+
28
+ PLATFORMS
29
+ x86_64-linux-musl
30
+
31
+ DEPENDENCIES
32
+ erede-ruby-sdk!
33
+ rake
34
+ rspec
35
+
36
+ BUNDLED WITH
37
+ 2.2.3
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018 Rede
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # ERede Ruby
2
+
3
+ SDK Ruby de integração eRede.
4
+
5
+ ![](./erede-logo.png)
6
+
7
+ ## Guia de uso
8
+
9
+ ```ruby
10
+ # Configuração do ambiente
11
+ store = Erede::Models::Store.new
12
+ store.token = '6069a026cf454706990a801ab5fe8e36'
13
+ store.filiation = '73854967'
14
+ store.logger = Logger.new(STDOUT)
15
+ store.environment = Erede::Environment.sandbox | Erede::Environment.production
16
+
17
+ # Inicialização da SDK
18
+ sdk = Erede::Sdk.new(store)
19
+
20
+ # Realizar uma transação
21
+ # POST /v1/transactions
22
+ # https://developer.userede.com.br/e-rede#swagger_operations-Transa%C3%A7%C3%A3o-realizarTransacao
23
+ create_transaction = Erede::Models::Transaction.new
24
+ create_transaction.capture = false
25
+ create_transaction.kind = 'credit'
26
+ create_transaction.reference = 'pedido123'
27
+ create_transaction.amount = 2099
28
+ create_transaction.installments = 2
29
+ create_transaction.cardholderName = 'John Snow'
30
+ create_transaction.cardNumber = '5448280000000007'
31
+ create_transaction.expirationMonth = 12
32
+ create_transaction.expirationYear = 2028
33
+ create_transaction.securityCode = '235'
34
+ create_transaction.softDescriptor = 'string'
35
+ create_transaction.subscription = false
36
+ create_transaction.origin = 1
37
+ create_transaction.distributorAffiliation = 0
38
+ create_transaction.brandTid = 'string'
39
+ create_transaction.storageCard = '1'
40
+ sdk.create(create_transaction)
41
+
42
+ # Confirmar autorização da transação (captura)
43
+ # PUT /v1/transactions/{tid}
44
+ # https://developer.userede.com.br/e-rede#swagger_operations-Transa%C3%A7%C3%A3o-confirmarAutorizacaoDaTransacaoCaptura
45
+ capture_transaction = Erede::Models::Transaction.new
46
+ capture_transaction.tid = 123
47
+ capture_transaction.amount = 2099
48
+ sdk.capture(capture_transaction)
49
+
50
+ # Cancelar transação
51
+ # POST /v1/transactions/{tid}/refunds
52
+ # https://developer.userede.com.br/e-rede#swagger_operations-Cancelamento-cancelarTransacao
53
+ callback_url = Erede::Models::Url.new
54
+ callback_url.kind = 'callback'
55
+ callback_url.url = 'https://cliente.callback.com.br'
56
+ cancel_transaction = Erede::Models::Transaction.new
57
+ cancel_transaction.tid = 123
58
+ cancel_transaction.amount = 2000
59
+ cancel_transaction.urls = [callback_url]
60
+ sdk.cancel(cancel_transaction)
61
+
62
+ # Consultar transação por tid
63
+ # GET /v1/transactions/{tid}
64
+ # https://developer.userede.com.br/e-rede#swagger_operations-Transa%C3%A7%C3%A3o-consultarTransacaoPorTid
65
+ sdk.get_by_tid(233123)
66
+
67
+ # Consultar cancelamentos por tid
68
+ # GET /v1/transactions/{tid}/refunds
69
+ # https://developer.userede.com.br/e-rede#swagger_operations-Cancelamento-consultarCancelamentoPorTid
70
+ sdk.get_refunds(123)
71
+
72
+ # Consultar cancelamento por refundId
73
+ # GET /v1/transactions/{tid}/refunds/{refundId}
74
+ # https://developer.userede.com.br/e-rede#swagger_operations-Cancelamento-consultarCancelamentoPorRefundId
75
+ sdk.get_refund(123, 567)
76
+
77
+ # Consultar transação por reference
78
+ # GET /v1/transactions?reference={reference}
79
+ # https://developer.userede.com.br/e-rede#swagger_operations-Transa%C3%A7%C3%A3o-consultarTransacaoPorReference
80
+ sdk.get_by_reference(123)
81
+ ```
82
+
83
+ ## Testes
84
+
85
+ ```bash
86
+ # Entrar na pasta-raiz do repositório
87
+ cd erede-ruby
88
+
89
+ # Construir a imagem Docker
90
+ docker build -t erede_ruby .
91
+
92
+ # Executar os testes
93
+ docker run --rm -v $(pwd):/app/ -w /app/ -it erede_ruby bundle exec rake spec
94
+
95
+ # Executar um console para testes manuais na gem
96
+ docker run --rm -v $(pwd):/app/ -w /app/ -it erede_ruby irb -I lib -r erede
97
+ ```
98
+
99
+ ## Links úteis
100
+
101
+ - https://developer.userede.com.br/dev-portal-swaggers/erede/swagger.json
102
+ - https://developer.userede.com.br/files/erede/integration_manual.pdf
103
+ - https://developer.userede.com.br/e-rede
104
+ - https://github.com/DevelopersRede
data/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
data/erede-logo.png ADDED
Binary file
data/erede.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'erede/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'erede-ruby-sdk'
7
+ spec.version = Erede::VERSION
8
+ spec.authors = ['Rede']
9
+ spec.email = ['neto.joaobatista@gmail.com']
10
+ spec.summary = 'SDK eRede'
11
+ spec.description = 'SDK de integração eRede'
12
+ spec.homepage = 'https://github.com/developersrede/erede-ruby'
13
+ spec.license = 'MIT'
14
+
15
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
16
+ `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/})}
17
+ end
18
+
19
+ spec.require_paths = ['lib']
20
+ spec.add_dependency 'bundler'
21
+ spec.add_dependency 'json'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'rspec'
24
+ end
Binary file
@@ -0,0 +1,32 @@
1
+ module Erede
2
+ class Environment
3
+ PRODUCTION = 'https://api.userede.com.br/erede'
4
+ SANDBOX = 'https://api.userede.com.br/desenvolvedores'
5
+ API_VERSION = 'v1'
6
+
7
+ attr_accessor :ip,
8
+ :session_id,
9
+ :endpoint
10
+
11
+ def initialize(endpoint)
12
+ @endpoint = "#{endpoint}/#{API_VERSION}"
13
+ end
14
+
15
+ def self.production
16
+ new(PRODUCTION)
17
+ end
18
+
19
+ def self.sandbox
20
+ new(SANDBOX)
21
+ end
22
+
23
+ def to_json(*)
24
+ {
25
+ consumer: {
26
+ ip: @ip,
27
+ sessionId: @sessionId
28
+ }
29
+ }.delete_if { |k, v| v.nil? }.to_json
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,6 @@
1
+ module Erede
2
+ module Errors
3
+ class EredeError < StandardError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,17 @@
1
+ module Erede
2
+ module Models
3
+ class Address < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :address,
6
+ :addresseeName,
7
+ :city,
8
+ :complement,
9
+ :neighbourhood,
10
+ :number,
11
+ :state,
12
+ :type,
13
+ :zipCode
14
+ ]
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ module Erede
2
+ module Models
3
+ class Authorization < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :affiliation,
6
+ :amount,
7
+ :authorizationCode,
8
+ :cardBin,
9
+ :cardholderName,
10
+ :dateTime,
11
+ :installments,
12
+ :kind,
13
+ :last4,
14
+ :nsu,
15
+ :origin,
16
+ :reference,
17
+ :status,
18
+ :subscription,
19
+ :softDescriptor,
20
+ :distributorAffiliation,
21
+ :tid
22
+ ]
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ module Erede
2
+ module Models
3
+ class Base
4
+ def initialize
5
+ set_accessors_for_api_attributes
6
+ end
7
+
8
+ def set_accessors_for_api_attributes
9
+ self.class.const_get(:API_ATTRIBUTES).each do |attr_name|
10
+ define_singleton_method attr_name do
11
+ instance_variable_get("@#{attr_name}")
12
+ end
13
+
14
+ define_singleton_method "#{attr_name}=" do |value|
15
+ instance_variable_set("@#{attr_name}", value)
16
+ end
17
+ end
18
+ end
19
+
20
+ def to_json(*)
21
+ Hash[
22
+ self.class.const_get(:API_ATTRIBUTES).map { |attr_name| [attr_name, send(attr_name)] }
23
+ ]
24
+ .delete_if { |k, v| v.nil? }
25
+ .to_json
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ module Erede
2
+ module Models
3
+ class Brand < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :name
6
+ ]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module Erede
2
+ module Models
3
+ class Capture < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :amount,
6
+ :dateTime,
7
+ :nsu
8
+ ]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Erede
2
+ module Models
3
+ class Cart < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :billing,
6
+ :consumer,
7
+ :environment,
8
+ :iata,
9
+ :items,
10
+ :shipping
11
+ ]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Erede
2
+ module Models
3
+ class Consumer < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :name,
6
+ :email,
7
+ :phone,
8
+ :cpf,
9
+ :documents,
10
+ :gender
11
+ ]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Erede
2
+ module Models
3
+ class Device < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :colorDepth,
6
+ :deviceType3ds,
7
+ :javaEnabled,
8
+ :language,
9
+ :screenHeight,
10
+ :screenWidth
11
+ ]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module Erede
2
+ module Models
3
+ class Document < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :type,
6
+ :number
7
+ ]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ module Erede
2
+ module Models
3
+ class Flight < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :date,
6
+ :from,
7
+ :number,
8
+ :passenger,
9
+ :to
10
+ ]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module Erede
2
+ module Models
3
+ class Iata < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :code,
6
+ :departureTax,
7
+ :flight
8
+ ]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Erede
2
+ module Models
3
+ class Item < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :amount,
6
+ :description,
7
+ :discount,
8
+ :freight,
9
+ :id,
10
+ :quantity,
11
+ :shippingType,
12
+ :type
13
+ ]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ module Erede
2
+ module Models
3
+ class Passenger < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :email,
6
+ :name,
7
+ :phone,
8
+ :ticket
9
+ ]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ module Erede
2
+ module Models
3
+ class Phone < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :ddd,
6
+ :number,
7
+ :type
8
+ ]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module Erede
2
+ module Models
3
+ class Refund < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :amount,
6
+ :refundDateTime,
7
+ :refundId,
8
+ :status
9
+ ]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ module Erede
2
+ module Models
3
+ class Store < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :token,
6
+ :filiation
7
+ ]
8
+
9
+ attr_accessor :environment,
10
+ :logger
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ module Erede
2
+ module Models
3
+ class SubMerchant < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :mcc,
6
+ :city,
7
+ :country,
8
+ :subMerchantID,
9
+ :address,
10
+ :city,
11
+ :state,
12
+ :country,
13
+ :cep,
14
+ :cnpj,
15
+ :taxIdNumber
16
+ ]
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ module Erede
2
+ module Models
3
+ class ThreeDSecure < ::Erede::Models::Base
4
+ API_ATTRIBUTES = [
5
+ :cavv,
6
+ :eci,
7
+ :embedded,
8
+ :onFailure,
9
+ :device,
10
+ :url,
11
+ :urls,
12
+ :userAgent,
13
+ :xid,
14
+ :threeDIndicator,
15
+ :directoryServerTransactionId
16
+ ]
17
+ end
18
+ end
19
+ end