walletone 0.1.1 → 0.1.2
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 +26 -5
- data/lib/walletone.rb +6 -3
- data/lib/walletone/fields.rb +14 -37
- data/lib/walletone/form.rb +9 -2
- data/lib/walletone/notification.rb +28 -1
- data/lib/walletone/payment.rb +53 -5
- data/lib/walletone/version.rb +1 -1
- data/spec/walletone/fields_spec.rb +2 -2
- data/spec/walletone/form_spec.rb +2 -2
- data/spec/walletone/notification_spec.rb +6 -0
- data/spec/walletone/payment_spec.rb +12 -1
- data/spec/walletone_spec.rb +16 -0
- data/walletone.gemspec +11 -11
- metadata +25 -27
- data/lib/walletone/errors/bad_url_error.rb +0 -4
- data/lib/walletone/errors/walletone_error.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5afa0d525c38be77b98d36d334e2a26bede7ca55
|
4
|
+
data.tar.gz: dc8fe82e3a77fc8566d0fd90cf26559b6263c54e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1f78edea3a44df7fa8eac66123c37a0b2bde7b505b7e960670b76cc004d897e17555f18a852e072ec04b825f880625fe714c2e368cc4dee310bdc64b3ea610f
|
7
|
+
data.tar.gz: 153a3def129ee5fe3041834c71ec6225d98f68fb1f111c357e7c49639a94c92a94397a12412f30f6deb14d3fbb6c5315b203407cc5d8e6048e3e063c6e49beea
|
data/README.md
CHANGED
@@ -5,6 +5,13 @@
|
|
5
5
|
|
6
6
|
---
|
7
7
|
|
8
|
+
Привет!
|
9
|
+
|
10
|
+
Мы сделали этот модуль очень удобным для Вас. Вы сделаете нам приятно и полезно,
|
11
|
+
если зарегистрируете своего мерчанта по [этой промо-ссылке](http://www.walletone.com/ru/merchant/?promo=EtRa48zZP)
|
12
|
+
|
13
|
+
Так вы получите сниженный процент за прием платежей по картам visa/mastercard - 3,5%
|
14
|
+
|
8
15
|
## Прием уведомлений об оплате (rack middleware)
|
9
16
|
|
10
17
|
### 1. Создаем rack middleware для приема уведомлений
|
@@ -17,9 +24,13 @@
|
|
17
24
|
wm = Walletone::Middleware::Callback.new do |notify, env|
|
18
25
|
# notify is a Walletone::Notification instance
|
19
26
|
|
20
|
-
raise 'Wrong
|
27
|
+
raise 'WARNING! Wrong signature!' unless notify.valid? W1_SECRET_KEY
|
21
28
|
|
22
|
-
|
29
|
+
if notify.accepted?
|
30
|
+
# Successful payed. Deliver your goods to the client
|
31
|
+
else
|
32
|
+
# Payment is failed. Notify you client.
|
33
|
+
end
|
23
34
|
|
24
35
|
'Return some message for OK response'
|
25
36
|
end
|
@@ -73,18 +84,19 @@ payment = Walletone::Payment.new(
|
|
73
84
|
SOME_CUSTOM_FIELD: 'value'
|
74
85
|
# etc любые другие поля
|
75
86
|
)
|
87
|
+
payment.sign! 'you secret key'
|
88
|
+
form = payment.form
|
76
89
|
```
|
77
90
|
|
78
91
|
|
79
92
|
### Собственно генераця формы
|
80
93
|
|
81
94
|
```haml
|
82
|
-
- form = Walletone::Form.new payment
|
83
95
|
|
84
96
|
%h5 В течение 5-и секунд вы будете переправлены на страницу оплаты.
|
85
97
|
= form_tag form.checkout_url, form.options.merge(data: {autosubmit: true}) do |f|
|
86
|
-
= form.hidden_fields_tags
|
87
|
-
=
|
98
|
+
= raw form.hidden_fields_tags
|
99
|
+
= button_tag 'Перейти к оплате',
|
88
100
|
:class=>'btn btn-primary',
|
89
101
|
:data =>{:disable_with => 'Переправляю на сайт оплаты..'}
|
90
102
|
|
@@ -94,11 +106,20 @@ payment = Walletone::Payment.new(
|
|
94
106
|
$ -> $('[data-autosubmit]').submit()
|
95
107
|
```
|
96
108
|
|
109
|
+
# Подсказки
|
110
|
+
|
111
|
+
Не используйте в форме кнопку `submit` с установленным `value` и `name`, потому что в
|
112
|
+
таком случае ее значение на сервер придет в параметрах и его тоже придется
|
113
|
+
включать в подписываемые поля.
|
114
|
+
|
97
115
|
# Прочие ссылки
|
98
116
|
|
99
117
|
1. [Walletone Open API](https://api.w1.ru/OpenApi/)
|
100
118
|
2. [Документация (API)](http://www.walletone.com/ru/merchant/documentation/)
|
101
119
|
|
120
|
+
Sponsored by http://taaasty.com and http://kiiiosk.ru
|
121
|
+
Developers are http://brandymint.com
|
122
|
+
|
102
123
|
---
|
103
124
|
|
104
125
|
### Contributing
|
data/lib/walletone.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
require 'logger'
|
2
2
|
require 'virtus'
|
3
3
|
|
4
|
-
require 'walletone/errors/walletone_error'
|
5
|
-
require 'walletone/errors/bad_url_error'
|
6
|
-
|
7
4
|
require 'walletone/payment'
|
8
5
|
require 'walletone/notification'
|
6
|
+
require 'walletone/form'
|
9
7
|
require 'walletone/middleware/base'
|
10
8
|
|
11
9
|
module Walletone
|
@@ -38,6 +36,11 @@ module Walletone
|
|
38
36
|
config.error_notifier.send self.config.error_notify_method, error, *args
|
39
37
|
end
|
40
38
|
|
39
|
+
def self.raise_error error
|
40
|
+
notify_error error
|
41
|
+
fail error
|
42
|
+
end
|
43
|
+
|
41
44
|
def self.config
|
42
45
|
Configuration.instance
|
43
46
|
end
|
data/lib/walletone/fields.rb
CHANGED
@@ -2,43 +2,20 @@
|
|
2
2
|
#
|
3
3
|
module Walletone
|
4
4
|
class Fields < Hash
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
WMI_CULTURE_ID
|
20
|
-
WMI_SIGNATURE
|
21
|
-
WMI_DELIVERY_REQUEST
|
22
|
-
WMI_DELIVERY_COUNTRY WMI_DELIVERY_REGION WMI_DELIVERY_CITY WMI_DELIVERY_ADDRESS
|
23
|
-
WMI_DELIVERY_CONTACTINFO WMI_DELIVERY_COMMENTS WMI_DELIVERY_ORDERID
|
24
|
-
WMI_DELIVERY_DATEFROM WMI_DELIVERY_DATETILL
|
25
|
-
WMI_PSP_MERCHANT_ID
|
26
|
-
)
|
27
|
-
|
28
|
-
MULTIPLE_VALUES = %i(WMI_PTENABLED WMI_PTDISABLED)
|
29
|
-
|
30
|
-
# Определяем методы для прямого доступа
|
31
|
-
# > payment.WMI_MERCHANT_ID
|
32
|
-
# > payment.WMI_MERCHANT_ID=123
|
33
|
-
#
|
34
|
-
# > payment.WMI_PTENABLED =
|
35
|
-
W1_KEYS.each do |k|
|
36
|
-
define_method k do
|
37
|
-
fetch k
|
38
|
-
end
|
39
|
-
|
40
|
-
define_method "#{k}=" do |value|
|
41
|
-
self[k]= value
|
5
|
+
def self.define_fields fields
|
6
|
+
# Определяем методы для прямого доступа
|
7
|
+
# > payment.WMI_MERCHANT_ID
|
8
|
+
# > payment.WMI_MERCHANT_ID=123
|
9
|
+
#
|
10
|
+
# > payment.WMI_PTENABLED =
|
11
|
+
fields.each do |k|
|
12
|
+
define_method k do
|
13
|
+
fetch k
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method "#{k}=" do |value|
|
17
|
+
self[k]= value
|
18
|
+
end
|
42
19
|
end
|
43
20
|
end
|
44
21
|
|
data/lib/walletone/form.rb
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
require 'cgi'
|
2
|
+
require 'walletone/payment'
|
2
3
|
module Walletone
|
3
4
|
class Form
|
4
|
-
|
5
|
-
|
5
|
+
attr_reader :payment
|
6
|
+
|
7
|
+
def initialize payment
|
8
|
+
unless payment.is_a?( Walletone::Payment ) && payment.valid? && payment.signed?
|
9
|
+
Walletone.raise_error ArgumentError.new("Must be valid and signed Payment #{payment}")
|
10
|
+
end
|
11
|
+
@payment = payment
|
12
|
+
end
|
6
13
|
|
7
14
|
def checkout_url
|
8
15
|
Walletone.config.web_checkout_url
|
@@ -1,17 +1,44 @@
|
|
1
1
|
require 'walletone/fields'
|
2
|
-
|
2
|
+
|
3
|
+
# Уведомление об оплате от walletone которое пришло через rack middleware callback
|
3
4
|
#
|
4
5
|
|
5
6
|
module Walletone
|
6
7
|
class Notification < Fields
|
8
|
+
FIELDS = %i(
|
9
|
+
WMI_MERCHANT_ID
|
10
|
+
WMI_PAYMENT_AMOUNT
|
11
|
+
WMI_COMMISSION_AMOUNT
|
12
|
+
WMI_CURRENCY_ID
|
13
|
+
WMI_TO_USER_ID
|
14
|
+
WMI_PAYMENT_NO
|
15
|
+
WMI_ORDER_ID
|
16
|
+
WMI_DESCRIPTION
|
17
|
+
WMI_SUCCESS_URL WMI_FAIL_URL
|
18
|
+
WMI_EXPIRED_DATE
|
19
|
+
WMI_CREATE_DATE WMI_UPDATE_DATE
|
20
|
+
WMI_ORDER_STATE
|
21
|
+
WMI_SIGNATURE
|
22
|
+
)
|
23
|
+
|
24
|
+
define_fields FIELDS
|
7
25
|
|
8
26
|
def initialize params
|
9
27
|
super( params ).freeze
|
10
28
|
end
|
11
29
|
|
30
|
+
# Обязательно проверяем валидость уведомления, вдруг его
|
31
|
+
# прислал злоумышленник.
|
32
|
+
#
|
12
33
|
def valid?(secret_key, hash_type = Signer::DEFAULT_HASH_TYPE)
|
13
34
|
self.WMI_SIGNATURE == signer.signature( secret_key, hash_type )
|
14
35
|
end
|
15
36
|
|
37
|
+
# Принята оплата или не прошла?
|
38
|
+
#
|
39
|
+
def accepted?
|
40
|
+
self['WMI_ORDER_STATE'].to_s.upcase == 'ACCEPTED'
|
41
|
+
end
|
42
|
+
|
16
43
|
end
|
17
44
|
end
|
data/lib/walletone/payment.rb
CHANGED
@@ -7,9 +7,41 @@ require 'time'
|
|
7
7
|
#
|
8
8
|
module Walletone
|
9
9
|
class Payment < Fields
|
10
|
+
# http://www.walletone.com/ru/merchant/documentation/#step2
|
11
|
+
#
|
12
|
+
#
|
13
|
+
class << self
|
14
|
+
attr_accessor :encode_description
|
15
|
+
end
|
16
|
+
|
17
|
+
DESCRIPTION_TRUNCATE_LENGTH = 250
|
18
|
+
FIELDS = %i(
|
19
|
+
WMI_MERCHANT_ID
|
20
|
+
WMI_PAYMENT_NO
|
21
|
+
WMI_PAYMENT_AMOUNT
|
22
|
+
WMI_CURRENCY_ID
|
23
|
+
WMI_DESCRIPTION
|
24
|
+
WMI_SUCCESS_URL WMI_FAIL_URL
|
25
|
+
WMI_EXPIRED_DATE
|
26
|
+
WMI_PTENABLED WMI_PTDISABLED
|
27
|
+
WMI_RECIPIENT_LOGIN
|
28
|
+
WMI_CUSTOMER_FIRSTNAME WMI_CUSTOMER_LASTNAME WMI_CUSTOMER_EMAIL
|
29
|
+
WMI_CULTURE_ID
|
30
|
+
WMI_SIGNATURE
|
31
|
+
WMI_DELIVERY_REQUEST
|
32
|
+
WMI_DELIVERY_COUNTRY WMI_DELIVERY_REGION WMI_DELIVERY_CITY WMI_DELIVERY_ADDRESS
|
33
|
+
WMI_DELIVERY_CONTACTINFO WMI_DELIVERY_COMMENTS WMI_DELIVERY_ORDERID
|
34
|
+
WMI_DELIVERY_DATEFROM WMI_DELIVERY_DATETILL
|
35
|
+
WMI_PSP_MERCHANT_ID
|
36
|
+
)
|
37
|
+
|
38
|
+
MULTIPLE_VALUES = %i(WMI_PTENABLED WMI_PTDISABLED)
|
39
|
+
|
10
40
|
RUB_ISO_NUMBER = 643
|
11
41
|
DEFAULT_CURRENTY = RUB_ISO_NUMBER
|
12
42
|
|
43
|
+
define_fields FIELDS
|
44
|
+
|
13
45
|
def sign!(secret_key, hash_type=Signer::DEFAULT_HASH_TYPE)
|
14
46
|
raise 'Already signed!' if signed?
|
15
47
|
self.WMI_SIGNATURE = signer.signature secret_key, hash_type
|
@@ -21,22 +53,38 @@ module Walletone
|
|
21
53
|
self.WMI_SIGNATURE.is_a?(String) && ! self.WMI_SIGNATURE.empty?
|
22
54
|
end
|
23
55
|
|
56
|
+
def valid?
|
57
|
+
# Где узнать какие поля обязательные?
|
58
|
+
self.WMI_PAYMENT_AMOUNT && self.WMI_MERCHANT_ID
|
59
|
+
end
|
60
|
+
|
61
|
+
# Form generation shortcut
|
62
|
+
def form
|
63
|
+
Walletone::Form.new self
|
64
|
+
end
|
65
|
+
|
24
66
|
def WMI_CURRENCY_ID
|
25
|
-
|
67
|
+
fetch(:WMI_CURRENCY_ID) || DEFAULT_CURRENTY
|
26
68
|
end
|
27
69
|
|
28
70
|
def WMI_PAYMENT_AMOUNT
|
29
|
-
value =
|
71
|
+
value = fetch :WMI_PAYMENT_AMOUNT
|
30
72
|
"%.2f" % value if value
|
31
73
|
end
|
32
74
|
|
33
75
|
def WMI_DESCRIPTION
|
34
|
-
value =
|
35
|
-
|
76
|
+
value = fetch :WMI_DESCRIPTION
|
77
|
+
return value unless value
|
78
|
+
if self.class.encode_description
|
79
|
+
# TODO энкодить автоматически, если встречаются национальные символы
|
80
|
+
"BASE64:#{Base64.encode64(value[0...250])[0..-2]}"
|
81
|
+
else
|
82
|
+
value.slice 0, DESCRIPTION_TRUNCATE_LENGTH
|
83
|
+
end
|
36
84
|
end
|
37
85
|
|
38
86
|
def WMI_EXPIRED_DATE
|
39
|
-
value =
|
87
|
+
value = fetch :WMI_EXPIRED_DATE
|
40
88
|
value ? value.iso8601 : value
|
41
89
|
end
|
42
90
|
|
data/lib/walletone/version.rb
CHANGED
@@ -3,7 +3,7 @@ require 'walletone/fields'
|
|
3
3
|
describe Walletone::Fields do
|
4
4
|
|
5
5
|
describe 'Именованные поля' do
|
6
|
-
subject {
|
6
|
+
subject { Walletone::Payment.new }
|
7
7
|
let(:merchant_id) { 'some_id' }
|
8
8
|
|
9
9
|
it 'nill by default' do
|
@@ -22,7 +22,7 @@ describe Walletone::Fields do
|
|
22
22
|
describe '#initialize' do
|
23
23
|
let(:fail_url) { 'someurl' }
|
24
24
|
let(:attrs) { { 'WMI_FAIL_URL' => fail_url } }
|
25
|
-
subject {
|
25
|
+
subject { Walletone::Payment.new attrs }
|
26
26
|
|
27
27
|
it { expect(subject.WMI_FAIL_URL).to eq fail_url }
|
28
28
|
it { expect(subject['WMI_FAIL_URL']).to eq fail_url }
|
data/spec/walletone/form_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'walletone/form'
|
2
2
|
|
3
3
|
describe Walletone::Form do
|
4
|
-
let(:payment) { Fabricate :payment }
|
4
|
+
let(:payment) { Fabricate( :payment ).sign! 'somekey' }
|
5
5
|
|
6
|
-
subject { described_class.new payment
|
6
|
+
subject { described_class.new payment }
|
7
7
|
|
8
8
|
describe '#checkout_url' do
|
9
9
|
it { expect(subject.checkout_url).to eq Walletone.config.web_checkout_url }
|
@@ -1,8 +1,14 @@
|
|
1
|
+
require 'walletone/form'
|
2
|
+
|
1
3
|
describe Walletone::Payment do
|
2
4
|
let(:merchant_id) { 127830694690 }
|
3
5
|
let(:secret_key) { '3475706857624f46344e573753316e387c396e5f4b54767b796c4c' }
|
4
6
|
|
5
|
-
|
7
|
+
before do
|
8
|
+
described_class.encode_description = true
|
9
|
+
end
|
10
|
+
|
11
|
+
subject { described_class.new( fields ) }
|
6
12
|
|
7
13
|
context '.new' do
|
8
14
|
let(:fields) { Walletone::Fields.new WMI_MERCHANT_ID: merchant_id }
|
@@ -31,8 +37,13 @@ describe Walletone::Payment do
|
|
31
37
|
|
32
38
|
it { expect(subject).to be_frozen }
|
33
39
|
it { expect(subject).to be_signed }
|
40
|
+
it { expect(subject).to be_valid }
|
34
41
|
it { expect(subject.WMI_SIGNATURE).to eq signature }
|
35
42
|
|
43
|
+
it '#form' do
|
44
|
+
expect(subject.form).to be_a Walletone::Form
|
45
|
+
end
|
46
|
+
|
36
47
|
end
|
37
48
|
|
38
49
|
it 'WMI_PAYMENT_AMOUNT' do
|
data/spec/walletone_spec.rb
CHANGED
@@ -5,6 +5,22 @@ describe Walletone do
|
|
5
5
|
end
|
6
6
|
end
|
7
7
|
|
8
|
+
describe 'Использует Bugsnag если он есть' do
|
9
|
+
before do
|
10
|
+
::Bugsnag = double
|
11
|
+
# Сбрасываем конфигурацию, чтобы она еще раз создалась
|
12
|
+
Walletone::Configuration.instance_variable_set('@singleton__instance__',nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'должен найти и применить Bugsnag' do
|
16
|
+
expect(Walletone.config.error_notifier).to eq Bugsnag
|
17
|
+
end
|
18
|
+
|
19
|
+
after do
|
20
|
+
::Bugsnag = nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
8
24
|
context '.notify_error' do
|
9
25
|
let(:error) { StandardError.new }
|
10
26
|
it do
|
data/walletone.gemspec
CHANGED
@@ -19,17 +19,17 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.test_files = Dir.glob("spec/**/*")
|
20
20
|
|
21
21
|
s.add_dependency 'virtus', '~> 1.0'
|
22
|
-
s.add_dependency 'rack', '~> 1.
|
22
|
+
s.add_dependency 'rack', '~> 1.5'
|
23
23
|
|
24
|
-
s.add_development_dependency 'rake'
|
25
|
-
s.add_development_dependency 'rspec', '
|
24
|
+
s.add_development_dependency 'rake', '>= 10.4.0'
|
25
|
+
s.add_development_dependency 'rspec', '>= 3.2.0'
|
26
26
|
s.add_development_dependency 'ffaker', '>= 2.0.0'
|
27
|
-
s.add_development_dependency 'fabrication', '
|
28
|
-
s.add_development_dependency "pry"
|
29
|
-
s.add_development_dependency "pry-nav"
|
30
|
-
s.add_development_dependency "webmock"
|
31
|
-
s.add_development_dependency "guard"
|
32
|
-
s.add_development_dependency "guard-rspec"
|
33
|
-
s.add_development_dependency 'guard-ctags-bundler'
|
34
|
-
s.add_development_dependency 'yard'
|
27
|
+
s.add_development_dependency 'fabrication', '>= 2.12'
|
28
|
+
s.add_development_dependency "pry", '~> 0'
|
29
|
+
s.add_development_dependency "pry-nav", '~> 0'
|
30
|
+
s.add_development_dependency "webmock", '>= 1.21'
|
31
|
+
s.add_development_dependency "guard", '>= 2.12'
|
32
|
+
s.add_development_dependency "guard-rspec", '>= 4.5.0'
|
33
|
+
s.add_development_dependency 'guard-ctags-bundler', '>= 1.4.0'
|
34
|
+
s.add_development_dependency 'yard', '~> 0'
|
35
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: walletone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danil Pismenny
|
@@ -31,40 +31,40 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '1.
|
34
|
+
version: '1.5'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '1.
|
41
|
+
version: '1.5'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: 10.4.0
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: 10.4.0
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rspec
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: 3.2.0
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: 3.2.0
|
70
70
|
- !ruby/object:Gem::Dependency
|
@@ -85,42 +85,42 @@ dependencies:
|
|
85
85
|
name: fabrication
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: 2.12
|
90
|
+
version: '2.12'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - "
|
95
|
+
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 2.12
|
97
|
+
version: '2.12'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: pry
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: pry-nav
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - "
|
123
|
+
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
@@ -129,68 +129,68 @@ dependencies:
|
|
129
129
|
requirements:
|
130
130
|
- - ">="
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
132
|
+
version: '1.21'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: '
|
139
|
+
version: '1.21'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: guard
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
146
|
+
version: '2.12'
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - ">="
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '
|
153
|
+
version: '2.12'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
155
|
name: guard-rspec
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
158
|
- - ">="
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
160
|
+
version: 4.5.0
|
161
161
|
type: :development
|
162
162
|
prerelease: false
|
163
163
|
version_requirements: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
165
|
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
167
|
+
version: 4.5.0
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: guard-ctags-bundler
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
172
|
- - ">="
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
174
|
+
version: 1.4.0
|
175
175
|
type: :development
|
176
176
|
prerelease: false
|
177
177
|
version_requirements: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
179
|
- - ">="
|
180
180
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
181
|
+
version: 1.4.0
|
182
182
|
- !ruby/object:Gem::Dependency
|
183
183
|
name: yard
|
184
184
|
requirement: !ruby/object:Gem::Requirement
|
185
185
|
requirements:
|
186
|
-
- - "
|
186
|
+
- - "~>"
|
187
187
|
- !ruby/object:Gem::Version
|
188
188
|
version: '0'
|
189
189
|
type: :development
|
190
190
|
prerelease: false
|
191
191
|
version_requirements: !ruby/object:Gem::Requirement
|
192
192
|
requirements:
|
193
|
-
- - "
|
193
|
+
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
195
|
version: '0'
|
196
196
|
description: "Клиент для приема оплаты через walletone.com"
|
@@ -204,8 +204,6 @@ files:
|
|
204
204
|
- LICENSE
|
205
205
|
- README.md
|
206
206
|
- lib/walletone.rb
|
207
|
-
- lib/walletone/errors/bad_url_error.rb
|
208
|
-
- lib/walletone/errors/walletone_error.rb
|
209
207
|
- lib/walletone/fields.rb
|
210
208
|
- lib/walletone/form.rb
|
211
209
|
- lib/walletone/middleware.rb
|