atol 0.2 → 0.3
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/Gemfile.lock +2 -2
- data/README.md +20 -10
- data/lib/atol/config.rb +4 -5
- data/lib/atol/request/get_document_state.rb +2 -1
- data/lib/atol/request/get_token.rb +3 -2
- data/lib/atol/request/post_document.rb +3 -3
- data/lib/atol/transaction.rb +1 -1
- data/lib/atol/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b0571eec0780fb18eafe60b99e4c5786c8a3166
|
4
|
+
data.tar.gz: f1caad94cb03daed307d5c24f96665a157a5e82b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb3aaa2101bf30f554c8216b439c675c584e91ec6649010544ae450a62dd601abfd1c89009709e542f4220548a297c89416b2ca33a1203a318fdb688e66c15f9
|
7
|
+
data.tar.gz: 8ce89512fa8ffb53d36cd69d32ca1c558a38ae5b7c6fbd3ec04ed3e36a11b7382355adb30f799de549aefab271a2292380836739f4c226830f9a994f934f0b8d
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|

|
2
|
-

|
2
|
+

|
3
3
|
|
4
4
|
[](https://badge.fury.io/rb/atol) [](https://travis-ci.org/GeorgeGorbanev/atol-rb) [](https://codeclimate.com/github/GeorgeGorbanev/atol-rb/maintainability) [](https://coveralls.io/github/GeorgeGorbanev/atol-rb?branch=master)
|
5
5
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
##### Совместимость
|
11
11
|
|
12
|
-
Для корректной работы необходим интерпретатор Руби версии 2.2 и выше. Пакет работает с версией протокола v3.
|
12
|
+
Для корректной работы необходим интерпретатор Руби версии 2.2 и выше. Пакет работает с версией протокола v3.
|
13
13
|
|
14
14
|
|
15
15
|
## Использование
|
@@ -23,7 +23,7 @@ gem 'atol'
|
|
23
23
|
```
|
24
24
|
И запустить команду:
|
25
25
|
|
26
|
-
```
|
26
|
+
```
|
27
27
|
$ bundle install
|
28
28
|
```
|
29
29
|
### Конфигурация
|
@@ -48,7 +48,7 @@ ATOL_GROUP_CODE=example-group-code
|
|
48
48
|
|
49
49
|
```ruby
|
50
50
|
# config/initializers/atol.rb
|
51
|
-
|
51
|
+
|
52
52
|
Rails.application.config.after_initialize do
|
53
53
|
Atol.config.tap do |config|
|
54
54
|
config.inn = '123456789010'
|
@@ -60,7 +60,17 @@ Rails.application.config.after_initialize do
|
|
60
60
|
end
|
61
61
|
```
|
62
62
|
|
63
|
-
Для
|
63
|
+
Для объектов конфигурации используется класс унаследованный от класса из гема [anyway-config](https://github.com/palkan/anyway_config). Другие способы задания конфигурации можно найти в его документации.
|
64
|
+
|
65
|
+
#### Прокси
|
66
|
+
|
67
|
+
Объект конфигурации позволяет задать прокси для http-запросов:
|
68
|
+
|
69
|
+
``` ruby
|
70
|
+
uri = URI('http://example-proxy.com')
|
71
|
+
proxy = Net::HTTP.Proxy(uri.host, uri.port)
|
72
|
+
Atol.config.http_client = proxy
|
73
|
+
```
|
64
74
|
|
65
75
|
### Получение токена
|
66
76
|
|
@@ -81,7 +91,7 @@ token = Atol::Transaction::GetToken.new.call
|
|
81
91
|
|
82
92
|
Тело запроса должно соответствовать схеме. Для упрощения кода создан класс `Atol::Request::PostDocument::Sell::Body`.
|
83
93
|
|
84
|
-
Конструктор в качестве обязательных аргументов принимает `external_id`, один из аргументов `phone` или `email` и `items`.
|
94
|
+
Конструктор в качестве обязательных аргументов принимает `external_id`, один из аргументов `phone` или `email` и `items`.
|
85
95
|
|
86
96
|
```ruby
|
87
97
|
body = Atol::Request::PostDocument::Sell::Body.new(
|
@@ -90,7 +100,7 @@ body = Atol::Request::PostDocument::Sell::Body.new(
|
|
90
100
|
items: [
|
91
101
|
...
|
92
102
|
]
|
93
|
-
).to_json
|
103
|
+
).to_json
|
94
104
|
```
|
95
105
|
Массив `items` должен включать в себя объекты, которые так же соответствуют схеме.
|
96
106
|
|
@@ -127,7 +137,7 @@ body = Atol::Request::PostDocument::Sell::Body.new(
|
|
127
137
|
price: 60
|
128
138
|
).to_h
|
129
139
|
]
|
130
|
-
).to_json
|
140
|
+
).to_json
|
131
141
|
|
132
142
|
```
|
133
143
|
Результат:
|
@@ -224,7 +234,7 @@ Atol::Transaction::PostDocument.new(
|
|
224
234
|
Rails.application.config.after_initialize do
|
225
235
|
Atol.config.callback_url = Rails.application.routes.url_helpers.atol_callback_url
|
226
236
|
end
|
227
|
-
|
237
|
+
|
228
238
|
```
|
229
239
|
|
230
240
|
#### Запрос статуса документа
|
@@ -237,4 +247,4 @@ end
|
|
237
247
|
|
238
248
|
response = Atol::Transaction::GetDocumentState.new(token: token, uuid: uuid).call
|
239
249
|
|
240
|
-
```
|
250
|
+
```
|
data/lib/atol/config.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
require 'anyway'
|
2
|
+
require 'net/http'
|
2
3
|
|
3
4
|
module Atol
|
4
5
|
class Config < Anyway::Config
|
5
|
-
DEFAULT_REQ_TRIES_NUMBER = 3
|
6
|
-
DEFAULT_PAYMENT_TYPE = 1
|
7
|
-
|
8
6
|
attr_config :login,
|
9
7
|
:password,
|
10
8
|
:inn,
|
@@ -13,7 +11,8 @@ module Atol
|
|
13
11
|
:default_sno,
|
14
12
|
:default_tax,
|
15
13
|
:callback_url,
|
16
|
-
req_tries_number:
|
17
|
-
default_payment_type:
|
14
|
+
req_tries_number: 3,
|
15
|
+
default_payment_type: 1,
|
16
|
+
http_client: Net::HTTP
|
18
17
|
end
|
19
18
|
end
|
@@ -11,12 +11,13 @@ module Atol
|
|
11
11
|
raise(Atol::MissingConfigError, 'group_code missing') if @config.group_code.nil?
|
12
12
|
|
13
13
|
@url = "#{Atol::URL}/#{@config.group_code}/report/#{uuid}?tokenid=#{token}"
|
14
|
+
@http_client = @config.http_client
|
14
15
|
end
|
15
16
|
|
16
17
|
def call
|
17
18
|
uri = URI(url)
|
18
19
|
|
19
|
-
http =
|
20
|
+
http = @http_client.new(uri.host, uri.port)
|
20
21
|
http.use_ssl = true
|
21
22
|
http.get(uri.request_uri)
|
22
23
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'atol'
|
2
2
|
require 'atol/errors'
|
3
|
-
require 'net/http'
|
4
3
|
|
5
4
|
module Atol
|
6
5
|
module Request
|
@@ -22,13 +21,15 @@ module Atol
|
|
22
21
|
else
|
23
22
|
@password = @config.password
|
24
23
|
end
|
24
|
+
|
25
|
+
@http_client = @config.http_client
|
25
26
|
end
|
26
27
|
|
27
28
|
def call
|
28
29
|
uri = URI(Atol::URL + PATH)
|
29
30
|
uri.query = URI.encode_www_form(login: login, pass: password)
|
30
31
|
|
31
|
-
http =
|
32
|
+
http = @http_client.new(uri.host, uri.port)
|
32
33
|
http.use_ssl = true
|
33
34
|
http.get(uri.request_uri)
|
34
35
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'atol'
|
2
2
|
require 'atol/errors'
|
3
|
-
require 'net/http'
|
4
3
|
require 'atol/request/post_document/item/body'
|
5
4
|
require 'atol/request/post_document/sell/body'
|
6
5
|
|
@@ -21,18 +20,19 @@ module Atol
|
|
21
20
|
@body = body
|
22
21
|
@req_logger = req_logger
|
23
22
|
@res_logger = res_logger
|
23
|
+
@http_client = @config.http_client
|
24
24
|
end
|
25
25
|
|
26
26
|
def call
|
27
27
|
uri = URI(url)
|
28
|
-
req =
|
28
|
+
req = @http_client::Post.new(uri, HEADERS)
|
29
29
|
req.body = body
|
30
30
|
|
31
31
|
if req_logger.respond_to?(:call)
|
32
32
|
req_logger.call(req)
|
33
33
|
end
|
34
34
|
|
35
|
-
res =
|
35
|
+
res = @http_client.start(uri.hostname, uri.port, use_ssl: true) do |http|
|
36
36
|
http.request(req)
|
37
37
|
end
|
38
38
|
|
data/lib/atol/transaction.rb
CHANGED
data/lib/atol/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GeorgeGorbanev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
146
|
rubyforge_project:
|
147
|
-
rubygems_version: 2.6.
|
147
|
+
rubygems_version: 2.6.14
|
148
148
|
signing_key:
|
149
149
|
specification_version: 4
|
150
150
|
summary: ATOL KaaS client for Ruby
|