akatus 1.0.0 → 1.0.1

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.
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  .DS_Store
2
2
  Gemfile.lock
3
+ pkg
data/README.md CHANGED
@@ -1,29 +1,208 @@
1
1
  # Akatus
2
2
 
3
- TODO: Write a gem description
3
+ Esta gem é um cliente em Ruby para a [API da Akatus][1].
4
4
 
5
- ## Installation
5
+ > Caso você esteja integrando a Akatus a uma aplicação Rails (versão 4.0.x), utilize diretamente a gem [`akatus-rails`][9], que usa a gem `akatus` e ainda inclui funcionalidades adicionais específicas para Rails.
6
6
 
7
- Add this line to your application's Gemfile:
7
+ ## Serviços implementados
8
+
9
+ Todos os serviços básicos necessários para realizar a integração entre a sua aplicação de e-commerce e a sua conta Akatus já estão implementados.
10
+
11
+ Alguns serviços secundários (utilizados apenas para gerenciar a sua conta Akatus) serão implementados nas próximas versões.
12
+
13
+ ### Implementados
14
+
15
+ * [Pagamento com boleto bancário][2]
16
+ * `Akatus::Services::Transaction#create`
17
+ * [Pagamento com cartão de crédito][3]
18
+ * `Akatus::Services::Transaction#create`
19
+ * [Pagamento com TEF][4]
20
+ * `Akatus::Services::Transaction#create`
21
+ * [Consulta de meios de pagamento disponíveis][5]
22
+ * `Akatus::Services::PaymentOptions#available`
23
+ * `Akatus::Services::PaymentOptions#available_with_installments`
24
+ * [Simulação de parcelamento][6]
25
+ * `Akatus::Services::Installments#calculate`
26
+
27
+ ### Previstos
28
+
29
+ * Cadastro de conta bancária
30
+ * Cadastro de conta empresarial
31
+ * Cadastro de conta vendedor
32
+ * Consulta de conta bancária
33
+ * Consulta de tipos de comércio
34
+ * Envio de documentos
35
+ * Consulta de status de transação
36
+ * Estorno
37
+
38
+
39
+ ## Instalação
40
+
41
+ Adicione esta linha ao seu Gemfile:
8
42
 
9
43
  gem 'akatus'
10
44
 
11
- And then execute:
45
+ Em seguide, execute:
12
46
 
13
47
  $ bundle
14
48
 
15
- Or install it yourself as:
49
+ Se não quiser utilizar o Gemfile, simplesmente execute:
16
50
 
17
51
  $ gem install akatus
18
52
 
19
- ## Usage
53
+ ## Exemplo de uso
54
+
55
+ ### Criando uma transação
56
+
57
+ Toda transação, seja com boleto bancário, cartão de crédito ou TEF, requer as mesmas informações básicas:
58
+
59
+ * Conta Akatus recebedora
60
+ * Informações sobre o comprador
61
+ * Nome
62
+ * Email
63
+ * Endereço (ou endereços)
64
+ * Telefone (ou telefones)
65
+ * Informações sobre os produtos
66
+ * Forma de pagamento
67
+
68
+ Portanto, em primeiro lugar é necessário criar os objetos que contêm estas informações, como foi feito abaixo.
69
+
70
+ Note que alguns campos possuem restrições de valor ou formato. Estas restrições **não** são verificadas pela gem, você precisará consultá-las no [site da Akatus][7].
71
+
72
+ ```ruby
73
+ require 'akatus'
74
+
75
+ # Configuração da conta recebedora
76
+
77
+ Akatus.config.email = "email-da-conta-akatus@exemplo.com"
78
+ Akatus.config.api_key = "api-key-da-conta-akatus"
79
+
80
+ # Informações do comprador.
81
+
82
+ address = Akatus::Address.new({
83
+ :type => 'entrega',
84
+ :street => 'Rua Labib Marrar',
85
+ :number => '129',
86
+ :neighborhood => 'Jardim Santa Cruz',
87
+ :city => 'São Paulo',
88
+ :state => 'SP',
89
+ :country => 'BRA',
90
+ :postal_code => '04182040',
91
+ :additional_details => 'Apto. 33'
92
+ })
93
+
94
+ payer = Akatus::Payer.new({
95
+ :name => 'Jose Antonio',
96
+ :email => 'ze@antonio.com.br',
97
+ :address => address,
98
+ :phone => Akatus::Phone.new({
99
+ :type => 'comercial',
100
+ :number => '1199999999'
101
+ })
102
+ })
103
+
104
+ # Informações dos produtos.
105
+
106
+ item1 = Akatus::Item.new({
107
+ :reference => 'ABC1234567',
108
+ :description => 'Caixa de bombons sortidos',
109
+ :quantity => 10,
110
+ :price => BigDecimal.new('32.2'),
111
+ :weight => BigDecimal.new('2.25'),
112
+ :shipping_cost => 9,
113
+ })
114
+
115
+ item2 = Akatus::Item.new({
116
+ :reference => 'EFG',
117
+ :description => 'Camiseta',
118
+ :quantity => 1,
119
+ :price => BigDecimal.new('9.99')
120
+ })
121
+
122
+
123
+ ```
124
+
125
+ Quase pronto! Agora, é só escolher uma forma de pagamento e criar o pagamento:
126
+
127
+ ```ruby
128
+ # Boleto bancário
129
+ payment_method = Akatus::BoletoBancario.new
130
+
131
+ # TEF. Os valores válidos para `brand` dependem das configurações da
132
+ # sua conta, e podem ser obtidos com o serviço de meios de pagamento
133
+ # (Akatus::Services::PaymentOptions.available).
134
+ payment_method = Akatus::ElectronicFundsTransfer.new({
135
+ :brand => 'tef_itau'
136
+ })
137
+
138
+ # Cartão de crédito
139
+ payment_method = Akatus::CreditCard.new({
140
+ :brand => 'cartao_master',
141
+ :number => 'NUMERO DO CARTAO DE CREDITO',
142
+ :security_code => '643',
143
+ :installments => 1,
144
+ :expiration => '03/2015',
145
+ :holder_name => 'NOME IMPRESSO NO CARTAO',
146
+ :holder_cpf => 'CPF DO PORTADOR',
147
+ :holder_phone => 'TELEFONE DO PORTADOR'
148
+ })
149
+
150
+ payment = Akatus::Payment.new({
151
+ :payer => payer,
152
+ :items => [ item1, item2 ],
153
+ # Um valor significativo para o seu e-commerce
154
+ :reference => 'order#0001',
155
+ # Uma das formas de pagamento mostradas acima
156
+ :payment_method => payment_method
157
+ })
158
+ ```
159
+
160
+ Finalmente, basta enviar a requisição para a Akatus:
161
+
162
+ ```ruby
163
+ Akatus::Services::Transaction.create(payment)
164
+ ```
165
+
166
+ Se tudo deu certo, o objeto `payment` agora contém novas informações, de acordo da forma de pagamento utilizada:
167
+
168
+ * No caso de **boleto**, o link para geração do boleto pode ser acessado como `payment.url`;
169
+ * No caso de **TEF**, o link para redirecionamento ao banco pode ser acessado como `payment.url`;
170
+ * No caso de **cartão de crédito**, o status da transação estará armazemado em `payment.status`.
171
+
172
+ Se ocorreu algum erro de validação do lado da Akatus, o código acima lançará uma exceção do tipo `Akatus::UnprocessableEntityError`, com a mensagem de erro.
173
+
174
+ Por exemplo, um erro seria não configurar corretamente o email e API key da sua conta Akatus:
175
+
176
+ ```ruby
177
+ begin
178
+ Akatus.config.email = 'invalido'
179
+
180
+ # Supondo que `payment` é o mesmo objeto criado acima
181
+ Akatus::Services::Transaction.create(payment)
182
+ rescue Akatus::UnprocessableEntityError => exc
183
+ exc.message # => "conta não encontrada"
184
+ end
185
+ ```
186
+
187
+ ### Mais exemplos
188
+
189
+ * Veja a [Aplicação Rails de exemplo][8].
190
+ * Você também pode ver os testes (em `spec/`) para alguns exemplos básicos.
20
191
 
21
- TODO: Write usage instructions here
192
+ ## Contribuindo
22
193
 
23
- ## Contributing
194
+ 1. Crie um fork da gem
195
+ 2. Crie uma feature branch (`git checkout -b my-new-feature`)
196
+ 3. Faça um commit das suas alterações (`git commit -am 'Add some feature'`)
197
+ 4. Envie para o GitHub (`git push origin my-new-feature`)
198
+ 5. Crie um novo pull request
24
199
 
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
200
+ [1]: https://connect.akatus.com/category/documentacao/
201
+ [2]: https://connect.akatus.com/documentacao/api-boleto/
202
+ [3]: https://connect.akatus.com/documentacao/api-cartao-de-credito/
203
+ [4]: https://connect.akatus.com/documentacao/api-tef/
204
+ [5]: https://connect.akatus.com/documentacao/api-meios-de-pagamento/
205
+ [6]: https://connect.akatus.com/documentacao/api-parcelamento/
206
+ [7]: https://connect.akatus.com/documentacao/api-cartao-de-credito/
207
+ [8]: https://github.com/kauplus/akatus-demo
208
+ [9]: https://github.com/kauplus/akatus-rails
data/akatus.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activesupport'
21
+ spec.add_dependency 'activesupport', '~> 4.0.0'
22
22
  spec.add_dependency 'i18n'
23
23
  spec.add_dependency 'json'
24
24
  spec.add_dependency 'rest-client'
@@ -1,3 +1,3 @@
1
1
  module Akatus
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,74 +1,84 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akatus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Kauplus
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-01-03 00:00:00.000000000 Z
12
+ date: 2014-01-06 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
- version: '0'
21
+ version: 4.0.0
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
- version: '0'
29
+ version: 4.0.0
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: i18n
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: json
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: rest-client
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - '>='
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '0'
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - '>='
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: '0'
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: bundler
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
@@ -83,20 +94,23 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: debugger
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - '>='
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - '>='
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: '0'
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: factory_girl
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - ~>
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - ~>
109
124
  - !ruby/object:Gem::Version
@@ -111,20 +126,23 @@ dependencies:
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: rake
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
- - - '>='
131
+ - - ! '>='
116
132
  - !ruby/object:Gem::Version
117
133
  version: '0'
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
- - - '>='
139
+ - - ! '>='
123
140
  - !ruby/object:Gem::Version
124
141
  version: '0'
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: rspec
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
147
  - - ~>
130
148
  - !ruby/object:Gem::Version
@@ -132,6 +150,7 @@ dependencies:
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
155
  - - ~>
137
156
  - !ruby/object:Gem::Version
@@ -190,26 +209,33 @@ files:
190
209
  homepage: http://github.com/kauplus/akatus
191
210
  licenses:
192
211
  - MIT
193
- metadata: {}
194
212
  post_install_message:
195
213
  rdoc_options: []
196
214
  require_paths:
197
215
  - lib
198
216
  required_ruby_version: !ruby/object:Gem::Requirement
217
+ none: false
199
218
  requirements:
200
- - - '>='
219
+ - - ! '>='
201
220
  - !ruby/object:Gem::Version
202
221
  version: '0'
222
+ segments:
223
+ - 0
224
+ hash: -3510026359749588263
203
225
  required_rubygems_version: !ruby/object:Gem::Requirement
226
+ none: false
204
227
  requirements:
205
- - - '>='
228
+ - - ! '>='
206
229
  - !ruby/object:Gem::Version
207
230
  version: '0'
231
+ segments:
232
+ - 0
233
+ hash: -3510026359749588263
208
234
  requirements: []
209
235
  rubyforge_project:
210
- rubygems_version: 2.0.3
236
+ rubygems_version: 1.8.25
211
237
  signing_key:
212
- specification_version: 4
238
+ specification_version: 3
213
239
  summary: Ruby gem for the Akatus payment system
214
240
  test_files:
215
241
  - spec/address_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 3e6394b4c41ed3be9c9d2e2c255926b7e94e7947
4
- data.tar.gz: d083c49f1117259999bbfaec106da9441c53e7a0
5
- SHA512:
6
- metadata.gz: ca9f28c3bbfb32b77598d945bdfbd64cf18a4f6a49eb25740cf9e89e40ad95eb47f80eda86fa4188f5f7a621b40bbd09e0a82b407d0336fcaba92e0e01f6698c
7
- data.tar.gz: 08dec081d6135e838f59568517ae3147824d3750b8e33b2db4fbdcddacf0e8c88c644b1abfe1146b4c280cb2b752b63fd1adb87f2b66c165326dd3ee35fccc62