payanyway 2.1.0 → 2.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 +4 -4
- data/README.md +10 -0
- data/lib/payanyway/factories/payment_url_factory.rb +5 -52
- data/lib/payanyway/factories/query_params_factory.rb +57 -0
- data/lib/payanyway/factories/widget_url_factory.rb +12 -0
- data/lib/payanyway/gateway.rb +5 -1
- data/lib/payanyway/version.rb +1 -1
- data/spec/internal/config/payanyway.yml +1 -0
- data/spec/lib/payanyway/factories/{payment_url_factory_spec.rb → query_params_factory_spec.rb} +3 -3
- data/spec/lib/payanyway/gateway_spec.rb +8 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f21fd360b24af27284a7454e590e7d8a728d8f86
|
4
|
+
data.tar.gz: 397e913d3e2d7ff45bdb47194a3586a9dc4097b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5206c312a90c926b6d547332343326972ba2681ae6bbfe7b7eaf642ce0078538d3bdefbdde8735d6a1e2b30997659b8bfed4e61c3bb9683322b9344a4087cbd4
|
7
|
+
data.tar.gz: b54db4f2f3cf498a6a715536282febe168dc73658f4f1dd3043997d8c5bd3a7a1322c5f715dbfa57c35a9a66b8c21f579c0d590734350e59b4c7184b5c195976
|
data/README.md
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
- [Подключение](#setup)
|
14
14
|
- [Использование](#usage)
|
15
15
|
- [Запрос на оплату](#payment_url)
|
16
|
+
- [Получение URL для отображения виджета оплаты](#widget_url)
|
16
17
|
- [Специальные URL'ы](#special_urls)
|
17
18
|
- [Check URL](#check_url)
|
18
19
|
- [Return URL и InProgress URL](#return_url)
|
@@ -101,6 +102,15 @@ production: <<: *config
|
|
101
102
|
Payanyway::Gateway.payment_url(params, use_signature = true)
|
102
103
|
```
|
103
104
|
|
105
|
+
###<a name="widget_url"></a> Получение URL для отображения виджета оплаты
|
106
|
+
|
107
|
+
Чтобы получить ссылку на виджет для оплаты заказа пользователем,
|
108
|
+
используйте хелпер
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
Payanyway::Gateway.widget_url(params, use_signature = true)
|
112
|
+
```
|
113
|
+
|
104
114
|
Описание всех возможных параметров запроса (ключей params) находится [здесь](#params).
|
105
115
|
|
106
116
|
Если в настройках счета в системе **moneta.ru** выставлен флаг «Можно переопределять настройки в URL», то можно так же передавать
|
@@ -1,58 +1,11 @@
|
|
1
1
|
module Payanyway
|
2
2
|
module Factories
|
3
3
|
class PaymentUrlFactory
|
4
|
-
|
5
|
-
|
6
|
-
'
|
7
|
-
|
8
|
-
|
9
|
-
'MNT_TRANSACTION_ID' => :transaction_id,
|
10
|
-
'MNT_AMOUNT' => :amount,
|
11
|
-
'MNT_DESCRIPTION' => :description,
|
12
|
-
'MNT_SUBSCRIBER_ID' => :subscriber_id,
|
13
|
-
|
14
|
-
'MNT_SUCCESS_URL' => :success_url,
|
15
|
-
'MNT_INPROGRESS_URL' => :in_progress_url,
|
16
|
-
'MNT_FAIL_URL' => :fail_url,
|
17
|
-
'MNT_RETURN_URL' => :return_url,
|
18
|
-
|
19
|
-
'MNT_CUSTOM1' => :custom1,
|
20
|
-
'MNT_CUSTOM2' => :custom2,
|
21
|
-
'MNT_CUSTOM3' => :custom3,
|
22
|
-
|
23
|
-
'moneta.locale' => :locale,
|
24
|
-
'paymentSystem.limitIds' => :payment_system_limit_ids,
|
25
|
-
|
26
|
-
# Дополнительные параметры запроса на оплату
|
27
|
-
'followup' => :followup,
|
28
|
-
'paymentSystem.unitId' => :payment_system_unit_id,
|
29
|
-
'javascriptEnabled' => :javascript_enabled,
|
30
|
-
'paymentSystem.accountId' => :payment_system_account_id
|
31
|
-
# 'MNT_SIGNATURE' => добавляется при use_signature == true
|
32
|
-
}.to_settings
|
33
|
-
|
34
|
-
class << self
|
35
|
-
def build(params, use_signature)
|
36
|
-
params_for_moneta = prepare_params(params, use_signature)
|
37
|
-
query_params = params_for_moneta.to_a.map { |option| option.map{ |opt| CGI::escape(opt.to_s) }.join('=') }.join('&')
|
38
|
-
|
39
|
-
"#{ Payanyway::Gateway.config['payment_url'] }?#{ query_params }"
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def prepare_params(params, use_signature)
|
45
|
-
params_for_moneta = PARAMS.configure_by(params)
|
46
|
-
params_for_moneta = Payanyway::Gateway.config_for_moneta.merge(params_for_moneta)
|
47
|
-
|
48
|
-
use_signature ? add_signature(params_for_moneta) : params_for_moneta
|
49
|
-
end
|
50
|
-
|
51
|
-
def add_signature(params_for_moneta)
|
52
|
-
params_for_moneta.merge({
|
53
|
-
'MNT_SIGNATURE' => Payanyway::Helpers::SignatureGenerate.for_url(params_for_moneta)
|
54
|
-
})
|
55
|
-
end
|
4
|
+
def self.build(params, use_signature)
|
5
|
+
[
|
6
|
+
Payanyway::Gateway.config['payment_url'],
|
7
|
+
Payanyway::Factories::QueryParamsFactory.build(params, use_signature)
|
8
|
+
].join('?')
|
56
9
|
end
|
57
10
|
end
|
58
11
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Payanyway
|
2
|
+
module Factories
|
3
|
+
class QueryParamsFactory
|
4
|
+
PARAMS = {
|
5
|
+
'MNT_ID' => :moneta_id,
|
6
|
+
'MNT_TEST_MODE' => :test_mode,
|
7
|
+
'MNT_CURRENCY_CODE' => :currency,
|
8
|
+
|
9
|
+
'MNT_TRANSACTION_ID' => :transaction_id,
|
10
|
+
'MNT_AMOUNT' => :amount,
|
11
|
+
'MNT_DESCRIPTION' => :description,
|
12
|
+
'MNT_SUBSCRIBER_ID' => :subscriber_id,
|
13
|
+
|
14
|
+
'MNT_SUCCESS_URL' => :success_url,
|
15
|
+
'MNT_INPROGRESS_URL' => :in_progress_url,
|
16
|
+
'MNT_FAIL_URL' => :fail_url,
|
17
|
+
'MNT_RETURN_URL' => :return_url,
|
18
|
+
|
19
|
+
'MNT_CUSTOM1' => :custom1,
|
20
|
+
'MNT_CUSTOM2' => :custom2,
|
21
|
+
'MNT_CUSTOM3' => :custom3,
|
22
|
+
|
23
|
+
'moneta.locale' => :locale,
|
24
|
+
'paymentSystem.limitIds' => :payment_system_limit_ids,
|
25
|
+
|
26
|
+
# Дополнительные параметры запроса на оплату
|
27
|
+
'followup' => :followup,
|
28
|
+
'paymentSystem.unitId' => :payment_system_unit_id,
|
29
|
+
'javascriptEnabled' => :javascript_enabled,
|
30
|
+
'paymentSystem.accountId' => :payment_system_account_id
|
31
|
+
# 'MNT_SIGNATURE' => добавляется при use_signature == true
|
32
|
+
}.to_settings
|
33
|
+
|
34
|
+
class << self
|
35
|
+
def build(params, use_signature)
|
36
|
+
params_for_moneta = prepare_params(params, use_signature)
|
37
|
+
params_for_moneta.to_a.map { |option| option.map{ |opt| CGI::escape(opt.to_s) }.join('=') }.join('&')
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def prepare_params(params, use_signature)
|
43
|
+
params_for_moneta = PARAMS.configure_by(params)
|
44
|
+
params_for_moneta = Payanyway::Gateway.config_for_moneta.merge(params_for_moneta)
|
45
|
+
|
46
|
+
use_signature ? add_signature(params_for_moneta) : params_for_moneta
|
47
|
+
end
|
48
|
+
|
49
|
+
def add_signature(params_for_moneta)
|
50
|
+
params_for_moneta.merge({
|
51
|
+
'MNT_SIGNATURE' => Payanyway::Helpers::SignatureGenerate.for_url(params_for_moneta)
|
52
|
+
})
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Payanyway
|
2
|
+
module Factories
|
3
|
+
class WidgetUrlFactory
|
4
|
+
def self.build(params, use_signature)
|
5
|
+
[
|
6
|
+
Payanyway::Gateway.config['widget_url'],
|
7
|
+
Payanyway::Factories::QueryParamsFactory.build(params, use_signature)
|
8
|
+
].join('?')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/payanyway/gateway.rb
CHANGED
@@ -50,6 +50,10 @@ module Payanyway
|
|
50
50
|
Payanyway::Factories::PaymentUrlFactory.build(params, use_signature)
|
51
51
|
end
|
52
52
|
|
53
|
+
def widget_url(params, use_signature = true)
|
54
|
+
Payanyway::Factories::WidgetUrlFactory.build(params, use_signature)
|
55
|
+
end
|
56
|
+
|
53
57
|
class << self
|
54
58
|
extend Forwardable
|
55
59
|
def_delegators(:instance, *Payanyway::Gateway.instance_methods(false))
|
@@ -61,4 +65,4 @@ module Payanyway
|
|
61
65
|
YAML.load(File.read(File.join(Rails.root, 'config/payanyway.yml')))[@env]
|
62
66
|
end
|
63
67
|
end
|
64
|
-
end
|
68
|
+
end
|
data/lib/payanyway/version.rb
CHANGED
data/spec/lib/payanyway/factories/{payment_url_factory_spec.rb → query_params_factory_spec.rb}
RENAMED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'uri'
|
2
2
|
|
3
|
-
describe Payanyway::Factories::
|
3
|
+
describe Payanyway::Factories::QueryParamsFactory do
|
4
4
|
subject do
|
5
|
-
|
5
|
+
built_params = described_class.build(params, false)
|
6
6
|
|
7
|
-
Hash[ URI.decode_www_form(
|
7
|
+
Hash[ URI.decode_www_form(built_params) ]
|
8
8
|
end
|
9
9
|
|
10
10
|
context 'when reset urls' do
|
@@ -29,4 +29,12 @@ describe Payanyway::Gateway do
|
|
29
29
|
it { is_expected.to eq('https://demo.moneta.ru/assistant.htm?MNT_ID=54321&MNT_CURRENCY_CODE=RUB&MNT_TEST_MODE=1&MNT_AMOUNT=120.25&MNT_TRANSACTION_ID=FF790ABCD') }
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
describe '#widget_url' do
|
34
|
+
let(:params) { { amount: '120.25', transaction_id: 'FF790ABCD' } }
|
35
|
+
|
36
|
+
subject { described_class.widget_url(params, false) }
|
37
|
+
|
38
|
+
it { is_expected.to eq('https://demo.moneta.ru/assistant.widget?MNT_ID=141290&MNT_CURRENCY_CODE=RUB&MNT_TEST_MODE=1&MNT_AMOUNT=120.25&MNT_TRANSACTION_ID=FF790ABCD') }
|
39
|
+
end
|
32
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: payanyway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ssnikolay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -169,6 +169,8 @@ files:
|
|
169
169
|
- lib/payanyway/controller.rb
|
170
170
|
- lib/payanyway/engine.rb
|
171
171
|
- lib/payanyway/factories/payment_url_factory.rb
|
172
|
+
- lib/payanyway/factories/query_params_factory.rb
|
173
|
+
- lib/payanyway/factories/widget_url_factory.rb
|
172
174
|
- lib/payanyway/gateway.rb
|
173
175
|
- lib/payanyway/helpers/settings.rb
|
174
176
|
- lib/payanyway/helpers/signature_generator.rb
|
@@ -184,7 +186,7 @@ files:
|
|
184
186
|
- spec/internal/app/controllers/application_controller.rb
|
185
187
|
- spec/internal/app/controllers/payanyway_controller.rb
|
186
188
|
- spec/internal/config/payanyway.yml
|
187
|
-
- spec/lib/payanyway/factories/
|
189
|
+
- spec/lib/payanyway/factories/query_params_factory_spec.rb
|
188
190
|
- spec/lib/payanyway/gateway_spec.rb
|
189
191
|
- spec/lib/payanyway/helpers/signature_generator_spec.rb
|
190
192
|
- spec/lib/payanyway/request/base_spec.rb
|
@@ -222,7 +224,7 @@ test_files:
|
|
222
224
|
- spec/internal/app/controllers/application_controller.rb
|
223
225
|
- spec/internal/app/controllers/payanyway_controller.rb
|
224
226
|
- spec/internal/config/payanyway.yml
|
225
|
-
- spec/lib/payanyway/factories/
|
227
|
+
- spec/lib/payanyway/factories/query_params_factory_spec.rb
|
226
228
|
- spec/lib/payanyway/gateway_spec.rb
|
227
229
|
- spec/lib/payanyway/helpers/signature_generator_spec.rb
|
228
230
|
- spec/lib/payanyway/request/base_spec.rb
|