erede-ruby-sdk 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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