sbrf_merchant 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 4ad7e4d39e4c88a6c05fa2b30f74821ffcc3f0e9014d799640b6bbf9da089d83
4
- data.tar.gz: d07e3efeefd524d652a0ce70db70805139c076282563250cd4b0964c091b9c1a
2
+ SHA1:
3
+ metadata.gz: 6a6f8d675873a5f9a0efdf2ab640a379306cb8fe
4
+ data.tar.gz: 6ded6355ba85cebfa88ddba68ef5eb80b454048c
5
5
  SHA512:
6
- metadata.gz: c492d3158996efeba115694db96282b7d0ada6b58932b1c311e6fb1eea5247a13d5a726138f1d7c1058b8f2da377e6df6a74833625fcdeb991b8ddf7a1a2616b
7
- data.tar.gz: 150c67b8c58f8dfa20b46d1cc19ffccc4c14cbb3619cb90554e1f61164fa541aa138baddafe491cd2889cf48d0c2714743849b69a08a22830ec26e2af4644ec6
6
+ metadata.gz: 7a3e2c10f273bdadcb4b340f46d459796d8291b3bee82c9c75102623e47afe33d477d872f218e4b996b8adebb9dd17733ccae02c6c359b8c207a6c456dec5a8f
7
+ data.tar.gz: bc6a30710db9aa2f0220eddfd23ed35bd876f4dd069a9455221d4362b5c1aab4dc02d4deced54a8b3d94d9da442f60e70dfacc9b5f3d8cb345419776d41be992
data/.travis.yml CHANGED
@@ -5,9 +5,6 @@ env:
5
5
  language: ruby
6
6
  rvm:
7
7
  - 2.5.1
8
- - 2.4.4
9
- - 2.3.7
10
- - 2.2.10
11
8
  before_install: gem install bundler -v 1.16.5
12
9
  notifications:
13
10
  - false
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
- ```ruby
37
- # First of all you need create order object
38
- new_order = SbrfMerchant::Order::OneStage.new(orderNumber: orderNumber)
39
- already_created_order = SbrfMerchant::Order::OneStage.new(orderNumber: orderNumber, orderId: orderId)
40
- ```
41
- ## Register Order
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
- ## Order Status
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
- ## Refund
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
- ## Cancel
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
- JSON.parse(http_client.post(path, params).body).with_indifferent_access
17
+ parse_response_body(http_request(path, params))
18
18
  end
19
19
 
20
20
  private
21
21
 
22
- def http_client
23
- @client ||= Faraday.new(
24
- url: host,
25
- params: {
26
- userName: userName,
27
- password: password
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
- include Dry::AutoInject(Config::Container).hash['api_client']
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
@@ -1,3 +1,3 @@
1
1
  module SbrfMerchant
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
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)
@@ -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.1.3
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: 2018-10-18 00:00:00.000000000 Z
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: '0'
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.7.7
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