sbrf_merchant 0.1.3 → 0.2.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.
- checksums.yaml +5 -5
- data/.travis.yml +0 -3
- data/README.md +10 -15
- data/lib/sbrf_merchant/api/client.rb +20 -10
- data/lib/sbrf_merchant/order/one_stage.rb +7 -17
- data/lib/sbrf_merchant/version.rb +1 -1
- data/lib/sbrf_merchant.rb +8 -0
- data/sbrf_merchant.gemspec +1 -3
- metadata +4 -47
- data/lib/sbrf_merchant/config/container.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6a6f8d675873a5f9a0efdf2ab640a379306cb8fe
|
4
|
+
data.tar.gz: 6ded6355ba85cebfa88ddba68ef5eb80b454048c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a3e2c10f273bdadcb4b340f46d459796d8291b3bee82c9c75102623e47afe33d477d872f218e4b996b8adebb9dd17733ccae02c6c359b8c207a6c456dec5a8f
|
7
|
+
data.tar.gz: bc6a30710db9aa2f0220eddfd23ed35bd876f4dd069a9455221d4362b5c1aab4dc02d4deced54a8b3d94d9da442f60e70dfacc9b5f3d8cb345419776d41be992
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -33,12 +33,13 @@ end
|
|
33
33
|
[RU](https://securepayments.sberbank.ru/wiki/doku.php/integration:api:start)
|
34
34
|
|
35
35
|
# Usage Examples
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
##
|
36
|
+
|
37
|
+
**orderId** - order identificator in Sberbank Payment Gateway
|
38
|
+
|
39
|
+
**orderNumber** - order identificator in your system
|
40
|
+
|
41
|
+
## OneStage Order
|
42
|
+
### Register
|
42
43
|
```ruby
|
43
44
|
require 'securerandom'
|
44
45
|
order = SbrfMerchant::Order::OneStage.new(orderNumber: SecureRandom.hex)
|
@@ -48,13 +49,13 @@ order.orderId # returns unique Id in Sberbank system
|
|
48
49
|
response.success? # true
|
49
50
|
response.formUrl # "https://3dsec.sberbank.ru/payment/merchants/sbersafe/payment_ru.html?mdOrder=<orderId>"
|
50
51
|
```
|
51
|
-
|
52
|
+
### Status
|
52
53
|
```ruby
|
53
54
|
order = SbrfMerchant::Order::OneStage.new(orderNumber: orderNumber, orderId: orderId)
|
54
55
|
response = order.get_info
|
55
56
|
response.not_paid? # true or false
|
56
57
|
```
|
57
|
-
|
58
|
+
### Refund
|
58
59
|
```ruby
|
59
60
|
|
60
61
|
refund_amount = 1000
|
@@ -62,19 +63,13 @@ order = SbrfMerchant::Order::OneStage.new(orderNumber: orderNumber, orderId: ord
|
|
62
63
|
response = order.refund(refund_amount)
|
63
64
|
response.success? # true or false
|
64
65
|
```
|
65
|
-
|
66
|
+
### Cancel
|
66
67
|
```ruby
|
67
68
|
|
68
69
|
order = SbrfMerchant::Order::OneStage.new(orderNumber: orderNumber, orderId: orderId)
|
69
70
|
response = order.cancel
|
70
71
|
response.success? # true or false
|
71
72
|
```
|
72
|
-
## Supported Ruby Versions (Travis CI)
|
73
|
-
|
74
|
-
- 2.5.1
|
75
|
-
- 2.4.4
|
76
|
-
- 2.3.7
|
77
|
-
- 2.2.10
|
78
73
|
|
79
74
|
## Copyright
|
80
75
|
Copyright (c) 2018 Eugene Kozlov. See [LICENSE][] for details.
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'active_support/core_ext/hash/indifferent_access'
|
3
1
|
require 'json'
|
2
|
+
require 'uri'
|
3
|
+
require 'net/http'
|
4
4
|
|
5
5
|
module SbrfMerchant
|
6
6
|
module Api
|
@@ -14,19 +14,29 @@ module SbrfMerchant
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def process_request(path, params)
|
17
|
-
|
17
|
+
parse_response_body(http_request(path, params))
|
18
18
|
end
|
19
19
|
|
20
20
|
private
|
21
21
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
def parse_response_body(response)
|
23
|
+
JSON.parse(response.body, symbolize_names: true)
|
24
|
+
end
|
25
|
+
|
26
|
+
def http_request(path, params)
|
27
|
+
uri = URI.join(host, path)
|
28
|
+
|
29
|
+
Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
|
30
|
+
http.request(build_net_http_request_object(uri, params))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_net_http_request_object(uri, params)
|
35
|
+
request = Net::HTTP::Post.new(uri)
|
36
|
+
request.set_form_data(
|
37
|
+
params.merge(userName: userName, password: password)
|
29
38
|
)
|
39
|
+
request
|
30
40
|
end
|
31
41
|
end
|
32
42
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
require 'sbrf_merchant/api/client'
|
2
2
|
require 'sbrf_merchant/api/action'
|
3
|
-
require 'sbrf_merchant/config/container'
|
4
|
-
require 'dry-auto_inject'
|
5
3
|
require 'sbrf_merchant/response/base'
|
6
4
|
require 'sbrf_merchant/response/create_order'
|
7
5
|
require 'sbrf_merchant/response/order_status'
|
@@ -9,7 +7,13 @@ require 'sbrf_merchant/response/order_status'
|
|
9
7
|
module SbrfMerchant
|
10
8
|
module Order
|
11
9
|
class OneStage
|
12
|
-
|
10
|
+
attr_reader :api_client, :orderId, :orderNumber
|
11
|
+
|
12
|
+
def initialize(orderId: nil, orderNumber: nil, api_client: SbrfMerchant.api_client)
|
13
|
+
@orderId = orderId
|
14
|
+
@orderNumber = orderNumber
|
15
|
+
@api_client = api_client
|
16
|
+
end
|
13
17
|
|
14
18
|
def register(**args)
|
15
19
|
response = Response::CreateOrder.new(
|
@@ -32,12 +36,6 @@ module SbrfMerchant
|
|
32
36
|
)
|
33
37
|
end
|
34
38
|
|
35
|
-
def initialize(orderId: nil, orderNumber: nil, api_client:)
|
36
|
-
@orderId = orderId
|
37
|
-
@orderNumber = orderNumber
|
38
|
-
@api_client = api_client
|
39
|
-
end
|
40
|
-
|
41
39
|
def cancel
|
42
40
|
Response::Base.new(
|
43
41
|
api_client.process_request(
|
@@ -56,14 +54,6 @@ module SbrfMerchant
|
|
56
54
|
)
|
57
55
|
end
|
58
56
|
|
59
|
-
def orderId
|
60
|
-
@orderId.freeze
|
61
|
-
end
|
62
|
-
|
63
|
-
def orderNumber
|
64
|
-
@orderNumber.freeze
|
65
|
-
end
|
66
|
-
|
67
57
|
private
|
68
58
|
|
69
59
|
def default_request_params
|
data/lib/sbrf_merchant.rb
CHANGED
@@ -5,6 +5,14 @@ module SbrfMerchant
|
|
5
5
|
attr_accessor :configuration
|
6
6
|
end
|
7
7
|
|
8
|
+
def self.api_client
|
9
|
+
SbrfMerchant::Api::Client.new(
|
10
|
+
host: SbrfMerchant.configuration.host,
|
11
|
+
userName: SbrfMerchant.configuration.userName,
|
12
|
+
password: SbrfMerchant.configuration.password
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
8
16
|
def self.configure
|
9
17
|
self.configuration ||= Configuration.new
|
10
18
|
yield(configuration)
|
data/sbrf_merchant.gemspec
CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = 'Sberbank Merchant API Client for Ruby'
|
13
13
|
spec.homepage = 'https://github.com/abstractart/sbrf_merchant'
|
14
14
|
spec.license = 'MIT'
|
15
|
+
spec.required_ruby_version = '>= 2.0.0'
|
15
16
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
18
|
f.match(%r{^(test|spec|features)/})
|
@@ -27,8 +28,5 @@ Gem::Specification.new do |spec|
|
|
27
28
|
spec.add_development_dependency 'simplecov'
|
28
29
|
spec.add_development_dependency 'simplecov-console'
|
29
30
|
|
30
|
-
spec.add_runtime_dependency 'activesupport'
|
31
|
-
spec.add_runtime_dependency 'dry-auto_inject'
|
32
|
-
spec.add_runtime_dependency 'faraday'
|
33
31
|
spec.add_runtime_dependency 'json'
|
34
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sbrf_merchant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eugene Kozlov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,48 +94,6 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: activesupport
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: dry-auto_inject
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: faraday
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
97
|
- !ruby/object:Gem::Dependency
|
140
98
|
name: json
|
141
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,7 +132,6 @@ files:
|
|
174
132
|
- lib/sbrf_merchant/api/client.rb
|
175
133
|
- lib/sbrf_merchant/api/error_code.rb
|
176
134
|
- lib/sbrf_merchant/api/order_status.rb
|
177
|
-
- lib/sbrf_merchant/config/container.rb
|
178
135
|
- lib/sbrf_merchant/order/one_stage.rb
|
179
136
|
- lib/sbrf_merchant/response/base.rb
|
180
137
|
- lib/sbrf_merchant/response/create_order.rb
|
@@ -193,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
193
150
|
requirements:
|
194
151
|
- - ">="
|
195
152
|
- !ruby/object:Gem::Version
|
196
|
-
version:
|
153
|
+
version: 2.0.0
|
197
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
155
|
requirements:
|
199
156
|
- - ">="
|
@@ -201,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
158
|
version: '0'
|
202
159
|
requirements: []
|
203
160
|
rubyforge_project:
|
204
|
-
rubygems_version: 2.
|
161
|
+
rubygems_version: 2.6.14
|
205
162
|
signing_key:
|
206
163
|
specification_version: 4
|
207
164
|
summary: Sberbank Merchant
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'dry-container'
|
2
|
-
|
3
|
-
module SbrfMerchant
|
4
|
-
module Config
|
5
|
-
class Container
|
6
|
-
extend Dry::Container::Mixin
|
7
|
-
|
8
|
-
register 'api_client' do
|
9
|
-
SbrfMerchant::Api::Client.new(
|
10
|
-
host: SbrfMerchant.configuration.host,
|
11
|
-
userName: SbrfMerchant.configuration.userName,
|
12
|
-
password: SbrfMerchant.configuration.password
|
13
|
-
)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|