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 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