yandex_kassa 0.1.4 → 0.1.6

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
2
  SHA1:
3
- metadata.gz: e0ead6d73a29db100d1dcb21f849e984327edf08
4
- data.tar.gz: e666e5f320faafeb15b350717a7fcab5724da7e7
3
+ metadata.gz: 135a9122a4c0e13b17202498e6c921962c47f98e
4
+ data.tar.gz: 67228caba0b668c66f48d87bb9b49c3563465be7
5
5
  SHA512:
6
- metadata.gz: b779d6b8722f05bc9889f13b1cd62acdc769e9c2885532a91b2bfc62c590ffbfd51160b758e03d3c3800b6560988ca8a03fa444625c27a81ca5632f6d3b236ca
7
- data.tar.gz: 7eaf5e08f16b9b9e22335f4bcfe15bdfd061b19f2b273141fbcb615aaf8e849223f23b74db0ddb188a08f958963e96b50c2a6c7a386193d90966c7b8d878e304
6
+ metadata.gz: b00004f6b268ffed239070eb61760897ba8a09b8407e6af61b08facf4e53ba9a5377a164ec85691b8496818823544b0c59ebf217b146a6a8abade9bae651e647
7
+ data.tar.gz: 06571c6b01a5063011ca96c90e2dd0c6d8e7bc4d3fcc4df9cfdd4f120fa2be5fcea882c6f8f1ac41f6530a867c1ca58dcf7e535dab607ca04bd86a4953198ac1
data/lib/yandex_kassa.rb CHANGED
@@ -3,15 +3,18 @@ require "yandex_kassa/configuration"
3
3
  require "yandex_kassa/requests"
4
4
  require "yandex_kassa/api"
5
5
  require "yandex_kassa/signed_response_parser"
6
+ require "yandex_kassa/request_signer"
6
7
  require "openssl"
7
8
  require "rest-client"
8
9
 
9
10
  module YandexKassa
10
11
  class << self
11
-
12
12
  def create
13
- Api.new(url: configuration.url, cert_file: cert_file,
14
- key_file: key_file, response_parser: pkcs7_response_parser)
13
+ Api.new(url: configuration.url,
14
+ cert_file: configuration.cert_file,
15
+ key_file: configuration.key_file,
16
+ response_parser: pkcs7_response_parser,
17
+ request_signer: request_signer)
15
18
  end
16
19
 
17
20
  def configure(&block)
@@ -19,24 +22,17 @@ module YandexKassa
19
22
  end
20
23
 
21
24
  def pkcs7_response_parser
22
- @pkcs7_response_parser ||= SignedResponseParser.new(deposit_cert_file: deposit_cert_file,
23
- cert_file: cert_file)
25
+ @pkcs7_response_parser ||= SignedResponseParser.new(
26
+ deposit_cert_file: configuration.deposit_cert_file,
27
+ cert_file: configuration.cert_file)
24
28
  end
25
29
 
26
30
  def configuration
27
31
  @configuration ||= Configuration.new
28
32
  end
29
33
 
30
- def cert_file
31
- @cert_file ||= OpenSSL::X509::Certificate.new(File.read(configuration.cert))
32
- end
33
-
34
- def key_file
35
- @key_file ||= OpenSSL::PKey::RSA.new(File.read(configuration.key), configuration.passphrase)
36
- end
37
-
38
- def deposit_cert_file
39
- @depostit_cert_file ||= OpenSSL::X509::Certificate.new(File.read(configuration.deposit))
34
+ def request_signer
35
+ @request_signer ||= RequestSigner.new(cert_file: cert_file, key_file: key)
40
36
  end
41
37
  end
42
38
  end
@@ -7,11 +7,18 @@ module YandexKassa
7
7
  @url = params.fetch(:url)
8
8
  @cert_file = params.fetch(:cert_file)
9
9
  @key_file = params.fetch(:key_file)
10
+ @request_signer = params.fetch(:request_signer)
10
11
  end
11
12
 
12
13
  private
13
14
 
14
- attr_reader :cert_file, :key_file, :url, :response_parser
15
+ attr_reader :cert_file, :key_file, :url, :response_parseri, :request_signer
16
+
17
+ def post_signed_xml_request(yandex_kassa_request)
18
+ signed_data = request_signer.sign(yandex_kassa_request.xml_request_body)
19
+ response = client[yandex_kassa_request.request_path].post(signed_data)
20
+ response_parser.parse(response)
21
+ end
15
22
 
16
23
  def client
17
24
  @client ||= RestClient::Resource.new(
@@ -19,7 +26,7 @@ module YandexKassa
19
26
  ssl_client_cert: cert_file,
20
27
  ssl_client_key: key_file,
21
28
  verify_ssl: OpenSSL::SSL::VERIFY_NONE,
22
- headers: { content_type: 'application/pkcs7-mime'})
29
+ headers: { content_type: 'application/pkcs7-mime'} )
23
30
  end
24
31
  end
25
32
  end
@@ -1,5 +1,17 @@
1
1
  module YandexKassa
2
2
  class Configuration
3
3
  attr_accessor :url, :deposit, :cert, :key, :passphrase
4
+
5
+ def cert_file
6
+ @cert_file ||= OpenSSL::X509::Certificate.new(File.read(cert))
7
+ end
8
+
9
+ def key_file
10
+ @key_file ||= OpenSSL::PKey::RSA.new(File.read(key), passphrase)
11
+ end
12
+
13
+ def deposit_cert_file
14
+ @depostit_cert_file ||= OpenSSL::X509::Certificate.new(File.read(deposit))
15
+ end
4
16
  end
5
17
  end
@@ -0,0 +1,16 @@
1
+ module YandexKassa
2
+ class RequestSigner
3
+ def initialize(params = {})
4
+ @cert_file = params.fetch(:cert_file)
5
+ @key_file = params.fetch(:key_file)
6
+ end
7
+
8
+ def sign(raw_xml_body)
9
+ OpenSSL::PKCS7.sign(cert_file, key_file, raw_xml_body, [], PKCS7::NOCERTS).to_pem
10
+ end
11
+
12
+ private
13
+
14
+ attr_reader :cert_file, :key_file
15
+ end
16
+ end
@@ -2,17 +2,12 @@ module YandexKassa
2
2
  module Requests
3
3
  def test_deposition(params = {}, &block)
4
4
  test_deposition_request = Requests::TestDeposition.new(params, &block)
5
- post_request(test_deposition_request)
5
+ post_signed_xml_request(test_deposition_request)
6
6
  end
7
7
 
8
8
  def make_deposition(params = {}, &block)
9
9
  make_deposition_request = Requests::MakeDeposition.new(params, &block)
10
- post_request(make_deposition_request)
11
- end
12
-
13
- def post_request(xml_request)
14
- response = client[xml_request.request_path].post(xml_request.xml_request_body)
15
- response_parser.parse(response)
10
+ post_signed_xml_request(make_deposition_request)
16
11
  end
17
12
 
18
13
  class Deposition
@@ -1,3 +1,3 @@
1
1
  module YandexKassa
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yandex_kassa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeniy Burdaev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-22 00:00:00.000000000 Z
11
+ date: 2016-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,6 +84,7 @@ files:
84
84
  - lib/yandex_kassa.rb
85
85
  - lib/yandex_kassa/api.rb
86
86
  - lib/yandex_kassa/configuration.rb
87
+ - lib/yandex_kassa/request_signer.rb
87
88
  - lib/yandex_kassa/requests.rb
88
89
  - lib/yandex_kassa/signed_response_parser.rb
89
90
  - lib/yandex_kassa/version.rb