bank_link 0.0.2 → 0.0.3
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 +77 -38
- data/bank_link.gemspec +2 -0
- data/lib/bank_link/bank.rb +28 -0
- data/lib/bank_link/configuration.rb +24 -72
- data/lib/bank_link/link.rb +30 -23
- data/lib/bank_link/mac/base.rb +10 -23
- data/lib/bank_link/mac/solo.rb +5 -10
- data/lib/bank_link/mac/vk.rb +12 -10
- data/lib/bank_link/version.rb +1 -1
- data/lib/bank_link/view_helpers.rb +29 -16
- data/lib/bank_link.rb +14 -2
- data/mac_fields.yml +109 -0
- data/spec/lib/bank_link/bank_spec.rb +50 -0
- data/spec/lib/bank_link/configuration_spec.rb +17 -59
- data/spec/lib/bank_link/link_spec.rb +38 -34
- data/spec/lib/bank_link/mac/base_spec.rb +15 -18
- data/spec/lib/bank_link/mac/solo_spec.rb +17 -28
- data/spec/lib/bank_link/mac/vk_spec.rb +15 -10
- data/spec/lib/bank_link/view_helpers_spec.rb +51 -44
- data/spec/lib/bank_link_spec.rb +16 -3
- data/spec/spec_helper.rb +0 -3
- metadata +20 -5
- data/lib/bank_link/estruct.rb +0 -26
- data/spec/lib/bank_link/estruct_spec.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f1f740303014c35a3e0973b7e434e2c014279aa
|
4
|
+
data.tar.gz: 98aa010fd3057255e52dc0a53458063a31e60d52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 223593b63c1650511b08874da3ed73ceadf58a3850cd9a557b744ebbe9fbafc864c2f7b5126665d352f24f4c6603066f3c3e8b2826e19d33dd21cd0f5b4708a5
|
7
|
+
data.tar.gz: e18324989715dc1bdf7798264e955002ee71aec21f6ac66c12e9003e6a521650f6bd02ed52f59e87c63bfde51eefee58daea527069021a1a7aa55048f3629159
|
data/README.md
CHANGED
@@ -21,69 +21,108 @@ $ gem install bank_link
|
|
21
21
|
### Set Up Initializer
|
22
22
|
```ruby
|
23
23
|
BankLink.configuration do |config|
|
24
|
-
|
25
|
-
|
26
|
-
config.links(:name_of_link, "https://url.of.link") do |data, form|
|
27
|
-
form[:VK_SERVICE] = "1001"
|
28
|
-
form[:VK_VERSION] = "008"
|
29
|
-
form[:VK_AMOUNT] = Proc.new { |link, object| object.price }
|
30
|
-
form[:VK_CURR] = "EUR"
|
31
|
-
```
|
32
|
-
#### Additional Options
|
33
|
-
##### Encoding
|
24
|
+
```
|
34
25
|
```ruby
|
35
|
-
|
36
|
-
data.encoding_key = "VK_ENCODING"
|
37
|
-
data.encoding = "UTF-8"
|
26
|
+
BankLink do |config|
|
38
27
|
```
|
39
|
-
|
28
|
+
#### Override mac fields if you so wish
|
29
|
+
Defaults can be found in [mac_fields.yml](https://github.com/jhaesus/bank_link/blob/master/mac_fields.yml)
|
40
30
|
```ruby
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
31
|
+
config.mac_fields do |mac_fields|
|
32
|
+
mac_fields.SOLOPMT_VERSION["0003"] = [
|
33
|
+
:VERSION,
|
34
|
+
:STAMP,
|
35
|
+
:RCV_ID,
|
36
|
+
:AMOUNT,
|
37
|
+
:REF,
|
38
|
+
:DATE,
|
39
|
+
:CUR
|
40
|
+
]
|
41
|
+
end
|
42
|
+
```
|
43
|
+
#### Add banks
|
44
|
+
```ruby
|
45
|
+
config.banks :name_of_bank do |bank|
|
46
|
+
```
|
47
|
+
##### Change bank settings
|
48
|
+
```ruby
|
49
|
+
bank.settings do |settings|
|
50
|
+
```
|
51
|
+
###### Encoding
|
52
|
+
```ruby
|
53
|
+
settings.encoding_key = "VK_CHARSET"
|
54
|
+
settings.encoding = "UTF-8"
|
55
|
+
```
|
56
|
+
###### Private/Public keys and passphrases
|
57
|
+
```ruby
|
58
|
+
settings.private_key = File.read("my/private_key.pem")
|
59
|
+
settings.private_key_passphrase = File.read("my_password")
|
60
|
+
settings.public_key = File.read("bank/certificate")
|
61
|
+
```
|
62
|
+
###### Mac calculation settings
|
63
|
+
```ruby
|
64
|
+
settings.mac_class = BankLink::Mac::VK
|
65
|
+
settings.digest = OpenSSL::Digest::SHA1
|
50
66
|
|
67
|
+
settings.mac_class = BankLink::Mac::Solo
|
68
|
+
settings.digest = OpenSSL::Digest::MD5
|
51
69
|
|
52
|
-
|
70
|
+
settings.mac_class = BankLink::Mac::Custom #Or roll your own
|
71
|
+
end
|
72
|
+
```
|
73
|
+
##### Add link(s)
|
74
|
+
All the correct form fields can be found in various bank documentations, [listed below](https://github.com/jhaesus/bank_link/edit/master/README.md#additional-info). "Have fun"
|
75
|
+
```ruby
|
76
|
+
bank.payment_link "https://url.of.link" do |form|
|
77
|
+
form[:VK_SERVICE] = "1001"
|
78
|
+
form[:VK_VERSION] = "008"
|
79
|
+
form[:VK_AMOUNT] = Proc.new { |link, object| object.price }
|
80
|
+
form[:VK_CURR] = "EUR"
|
81
|
+
end
|
82
|
+
bank.authorization_link "https://url.of.link/auth" do |form|
|
83
|
+
form[:VK_SERVICE] = "1001"
|
84
|
+
form[:VK_VERSION] = "008"
|
85
|
+
end
|
53
86
|
```
|
54
87
|
### View Helper
|
55
88
|
```haml
|
56
|
-
=
|
57
|
-
= submit_tag(link.name)
|
89
|
+
= payment_links @object do |link|
|
90
|
+
= submit_tag(link.bank.name)
|
58
91
|
```
|
59
92
|
```haml
|
60
|
-
- BankLink.
|
93
|
+
- BankLink.payment_links do |link|
|
61
94
|
= bank_link_tag link, @object do
|
62
|
-
= submit_tag(link.name)
|
95
|
+
= submit_tag(link.bank.name)
|
63
96
|
```
|
64
|
-
####
|
65
|
-
##### Override/Set Form Values
|
97
|
+
#### Override/Set Form Values
|
66
98
|
```haml
|
67
|
-
-
|
99
|
+
- payment_links @object, { :values => { :VK_AMOUNT => Proc.new { |link, object| object.price * 2 } }} do |link|
|
100
|
+
= submit_tag
|
101
|
+
```
|
102
|
+
```haml
|
103
|
+
- BankLink.payment_links do |link|
|
68
104
|
= bank_link_tag link, @object, { :values => {:VK_AMOUNT => @object.price }} do
|
69
105
|
= submit_tag
|
70
106
|
```
|
71
|
-
|
107
|
+
#### Override/Set Form Attributes
|
72
108
|
```haml
|
73
|
-
-
|
109
|
+
- payment_links @object, { :form => { :data => { :something => "other" } } } do |link|
|
110
|
+
= submit_tag
|
111
|
+
```
|
112
|
+
```haml
|
113
|
+
- BankLink.payment_links do |link|
|
74
114
|
= bank_link_tag link, @object, { :form => {:method => :get }} do
|
75
115
|
= submit_tag
|
76
116
|
```
|
77
|
-
|
78
|
-
#### Verifying Responses
|
117
|
+
### Verifying Responses
|
79
118
|
```ruby
|
80
|
-
link = BankLink.configuration.
|
119
|
+
link = BankLink.configuration.banks.name_of_link
|
81
120
|
link.verify params
|
82
121
|
```
|
83
122
|
|
84
|
-
|
123
|
+
## Additional Info
|
85
124
|
[Pangalink.net](https://pangalink.net/info)
|
86
|
-
|
125
|
+
### Documentations
|
87
126
|
- [Danske Bank Documentation](http://www.danskebank.ee/et/14732.html)
|
88
127
|
- [Krediidipank Documentation](http://www.krediidipank.ee/business/settlements/bank-link/tehniline_kirjeldus.pdf)
|
89
128
|
- [LHV Documentation](http://www.lhv.ee/images/docs/Bank_Link_Technical_Specification-ET.pdf)
|
data/bank_link.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "hashie"
|
22
|
+
|
21
23
|
spec.add_development_dependency "bundler"
|
22
24
|
spec.add_development_dependency "rake"
|
23
25
|
spec.add_development_dependency "rspec", "~> 2"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "bank_link/link"
|
2
|
+
|
3
|
+
module BankLink
|
4
|
+
class Bank
|
5
|
+
attr_accessor :name, :settings, :payment_link, :authorization_link
|
6
|
+
|
7
|
+
def initialize name, &block
|
8
|
+
self.name = name
|
9
|
+
self.settings = Hashie::Mash.new(
|
10
|
+
:mac_class => Mac::VK,
|
11
|
+
:digest => OpenSSL::Digest::SHA1
|
12
|
+
)
|
13
|
+
yield(self) if block_given?
|
14
|
+
end
|
15
|
+
|
16
|
+
def settings &block
|
17
|
+
block_given? ? yield(@settings) : @settings
|
18
|
+
end
|
19
|
+
|
20
|
+
def payment_link url=nil, &block
|
21
|
+
url ? (@payment_link = Link.new(self, url, &block)) : @payment_link
|
22
|
+
end
|
23
|
+
|
24
|
+
def authorization_link url=nil, &block
|
25
|
+
url ? (@authorization_link = Link.new(self, url, &block)) : @authorization_link
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,92 +1,44 @@
|
|
1
|
-
require "bank_link/
|
2
|
-
require "bank_link/link"
|
1
|
+
require "bank_link/bank"
|
3
2
|
require "singleton"
|
4
3
|
|
5
4
|
module BankLink
|
6
5
|
class Configuration
|
7
6
|
include Singleton
|
8
7
|
|
9
|
-
attr_accessor :
|
8
|
+
attr_accessor :banks, :mac_fields, :default_encoding
|
10
9
|
|
11
|
-
def
|
12
|
-
if name &&
|
13
|
-
|
10
|
+
def banks name=nil, &block
|
11
|
+
if name && block_given?
|
12
|
+
@banks[name] = Bank.new(name, &block)
|
13
|
+
elsif name
|
14
|
+
@banks[name]
|
14
15
|
else
|
15
|
-
@
|
16
|
+
@banks
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
19
|
-
def
|
20
|
-
|
20
|
+
def authorization_links &block
|
21
|
+
each_link :authorization_link, &block
|
22
|
+
end
|
23
|
+
|
24
|
+
def payment_links &block
|
25
|
+
each_link :payment_link, &block
|
21
26
|
end
|
22
27
|
|
23
28
|
def mac_fields &block
|
24
|
-
block_given? ? yield(mac_fields) : (@mac_fields ||=
|
29
|
+
block_given? ? yield(mac_fields) : (@mac_fields ||= Hashie::Mash.new)
|
25
30
|
end
|
26
31
|
|
27
32
|
def initialize
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
:VK_SERVICE,
|
32
|
-
:VK_VERSION,
|
33
|
-
:VK_SND_ID,
|
34
|
-
:VK_STAMP,
|
35
|
-
:VK_AMOUNT,
|
36
|
-
:VK_CURR,
|
37
|
-
:VK_ACC,
|
38
|
-
:VK_NAME,
|
39
|
-
:VK_REF,
|
40
|
-
:VK_MSG
|
41
|
-
],
|
42
|
-
"1101" => [
|
43
|
-
:VK_SERVICE,
|
44
|
-
:VK_VERSION,
|
45
|
-
:VK_SND_ID,
|
46
|
-
:VK_REC_ID,
|
47
|
-
:VK_STAMP,
|
48
|
-
:VK_T_NO,
|
49
|
-
:VK_AMOUNT,
|
50
|
-
:VK_CURR,
|
51
|
-
:VK_REC_ACC,
|
52
|
-
:VK_REC_NAME,
|
53
|
-
:VK_SND_ACC,
|
54
|
-
:VK_SND_NAME,
|
55
|
-
:VK_REF,
|
56
|
-
:VK_MSG,
|
57
|
-
:VK_T_DATE
|
58
|
-
],
|
59
|
-
"1901" => [
|
60
|
-
:VK_SERVICE,
|
61
|
-
:VK_VERSION,
|
62
|
-
:VK_SND_ID,
|
63
|
-
:VK_REC_ID,
|
64
|
-
:VK_STAMP,
|
65
|
-
:VK_REF,
|
66
|
-
:VK_MSG
|
67
|
-
]
|
68
|
-
)
|
69
|
-
ml.SOLOPMT_VERSION = EStruct.new(
|
70
|
-
"0003" => [
|
71
|
-
:SOLOPMT_VERSION,
|
72
|
-
:SOLOPMT_STAMP,
|
73
|
-
:SOLOPMT_RCV_ID,
|
74
|
-
:SOLOPMT_AMOUNT,
|
75
|
-
:SOLOPMT_REF,
|
76
|
-
:SOLOPMT_DATE,
|
77
|
-
:SOLOPMT_CUR
|
78
|
-
],
|
79
|
-
"0002" => [
|
80
|
-
:SOLOPMT_VERSION,
|
81
|
-
:SOLOPMT_STAMP,
|
82
|
-
:SOLOPMT_RCV_ID,
|
83
|
-
:SOLOPMT_AMOUNT,
|
84
|
-
:SOLOPMT_REF,
|
85
|
-
:SOLOPMT_DATE,
|
86
|
-
:SOLOPMT_CUR
|
87
|
-
]
|
88
|
-
)
|
33
|
+
file_data = YAML.load(File.read(File.dirname(__FILE__) + "/../../mac_fields.yml"))
|
34
|
+
file_data.each do |type, versions|
|
35
|
+
mac_fields { |mf| mf[type] = Hashie::Mash.new(versions) }
|
89
36
|
end
|
37
|
+
@banks ||= Hashie::Mash.new
|
38
|
+
end
|
39
|
+
|
40
|
+
def each_link type, &block
|
41
|
+
banks.collect { |name, bank| bank.method(type).call() }.compact.each(&block)
|
90
42
|
end
|
91
43
|
end
|
92
|
-
end
|
44
|
+
end
|
data/lib/bank_link/link.rb
CHANGED
@@ -1,40 +1,47 @@
|
|
1
|
-
require "bank_link/estruct"
|
2
|
-
require "bank_link/mac"
|
3
|
-
|
4
1
|
module BankLink
|
5
2
|
class Link
|
6
|
-
attr_accessor :
|
3
|
+
attr_accessor :bank, :url, :form
|
7
4
|
|
8
|
-
def initialize
|
9
|
-
self.
|
5
|
+
def initialize bank, url, &block
|
6
|
+
self.bank = bank
|
10
7
|
self.url = url
|
11
|
-
self.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
self.form = Hashie::Mash.new
|
9
|
+
yield(form) if block_given?
|
10
|
+
end
|
11
|
+
|
12
|
+
def settings *args, &block
|
13
|
+
bank.settings *args, &block
|
17
14
|
end
|
18
15
|
|
19
16
|
def processed_data object, overrides={}
|
20
|
-
content =
|
17
|
+
content = Hashie::Mash.new(form.merge(overrides))
|
18
|
+
apply_encoding content
|
19
|
+
calculate_keys content, object
|
20
|
+
calculate_mac content
|
21
|
+
content
|
22
|
+
end
|
21
23
|
|
24
|
+
def verify params
|
25
|
+
content = Hashie::Mash.new(params)
|
26
|
+
mac = settings.mac_class.new(self, content)
|
27
|
+
version = params[mac.query_key]
|
28
|
+
mac.verify version, params[mac.key]
|
29
|
+
end
|
30
|
+
|
31
|
+
def calculate_keys content, object
|
22
32
|
content.each do |key, value|
|
23
33
|
content[key] = content[key].call(self, object) if content[key].is_a?(Proc)
|
24
34
|
end
|
35
|
+
end
|
25
36
|
|
26
|
-
|
37
|
+
def apply_encoding content
|
38
|
+
content[settings.encoding_key] = settings.encoding if settings.encoding && settings.encoding_key
|
39
|
+
end
|
27
40
|
|
28
|
-
|
41
|
+
def calculate_mac content
|
42
|
+
mac = settings.mac_class.new(self, content)
|
29
43
|
content[mac.key] = mac.generate
|
30
|
-
content
|
31
44
|
end
|
32
45
|
|
33
|
-
def verify params
|
34
|
-
content = EStruct.new(params)
|
35
|
-
mac = data.mac_class.new(self, content)
|
36
|
-
version = params[mac.query_key]
|
37
|
-
mac.verify version, params[mac.key]
|
38
|
-
end
|
39
46
|
end
|
40
|
-
end
|
47
|
+
end
|
data/lib/bank_link/mac/base.rb
CHANGED
@@ -3,16 +3,8 @@ module BankLink
|
|
3
3
|
class Base
|
4
4
|
attr_accessor :link, :data
|
5
5
|
|
6
|
-
def
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.key
|
11
|
-
raise NotImplementedError
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.default_algorithm
|
15
|
-
raise NotImplementedError
|
6
|
+
def settings *args, &block
|
7
|
+
link.settings *args, &block
|
16
8
|
end
|
17
9
|
|
18
10
|
def initialize link, data
|
@@ -20,30 +12,25 @@ module BankLink
|
|
20
12
|
self.data = data
|
21
13
|
end
|
22
14
|
|
23
|
-
def generate
|
15
|
+
def generate *args
|
24
16
|
raise NotImplementedError
|
25
17
|
end
|
26
18
|
|
27
|
-
def
|
28
|
-
|
29
|
-
public_key.verify algorithm.new, Base64.strict_decode64(mac), request_data(version)
|
19
|
+
def key *args
|
20
|
+
raise NotImplementedError
|
30
21
|
end
|
31
22
|
|
32
|
-
def
|
33
|
-
|
23
|
+
def query_key *args
|
24
|
+
raise NotImplementedError
|
34
25
|
end
|
35
26
|
|
36
|
-
def
|
37
|
-
|
27
|
+
def verify *args
|
28
|
+
raise NotImplementedError
|
38
29
|
end
|
39
30
|
|
40
|
-
def
|
31
|
+
def keys version
|
41
32
|
BankLink.configuration.mac_fields[query_key][version.intern]
|
42
33
|
end
|
43
|
-
|
44
|
-
def algorithm
|
45
|
-
link.data.algorithm || self.class.default_algorithm
|
46
|
-
end
|
47
34
|
end
|
48
35
|
end
|
49
36
|
end
|
data/lib/bank_link/mac/solo.rb
CHANGED
@@ -1,30 +1,25 @@
|
|
1
1
|
require "bank_link/mac/base"
|
2
|
-
require "openssl"
|
3
2
|
|
4
3
|
module BankLink
|
5
4
|
module Mac
|
6
5
|
class Solo < BankLink::Mac::Base
|
7
|
-
def
|
6
|
+
def query_key
|
8
7
|
:SOLOPMT_VERSION
|
9
8
|
end
|
10
9
|
|
11
|
-
def
|
10
|
+
def key
|
12
11
|
:SOLOPMT_MAC
|
13
12
|
end
|
14
13
|
|
15
|
-
def self.default_algorithm
|
16
|
-
OpenSSL::Digest::MD5
|
17
|
-
end
|
18
|
-
|
19
14
|
def generate version=data[query_key]
|
20
|
-
|
15
|
+
settings.digest.hexdigest(request_data(version).join).upcase
|
21
16
|
end
|
22
17
|
|
23
18
|
private
|
24
19
|
def request_data version
|
25
|
-
|
20
|
+
keys(version).collect { |key_name|
|
26
21
|
field_for data[key_name].to_s
|
27
|
-
} + [field_for(
|
22
|
+
} + [field_for(settings.private_key)]
|
28
23
|
end
|
29
24
|
|
30
25
|
def field_for value
|
data/lib/bank_link/mac/vk.rb
CHANGED
@@ -6,27 +6,29 @@ require "base64"
|
|
6
6
|
module BankLink
|
7
7
|
module Mac
|
8
8
|
class VK < BankLink::Mac::Base
|
9
|
-
def
|
9
|
+
def query_key
|
10
10
|
:VK_SERVICE
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def key
|
14
14
|
:VK_MAC
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.default_algorithm
|
18
|
-
OpenSSL::Digest::SHA1
|
19
|
-
end
|
20
|
-
|
21
17
|
def generate version=data[query_key]
|
22
18
|
Base64.strict_encode64(
|
23
|
-
|
19
|
+
private_key.sign(settings.digest.new, request_data(version))
|
24
20
|
)
|
25
21
|
end
|
26
22
|
|
23
|
+
def verify version, mac
|
24
|
+
public_key = OpenSSL::X509::Certificate.new(settings.public_key).public_key
|
25
|
+
public_key.verify settings.digest.new, Base64.strict_decode64(mac), request_data(version)
|
26
|
+
end
|
27
|
+
|
27
28
|
private
|
28
|
-
|
29
|
-
|
29
|
+
|
30
|
+
def private_key
|
31
|
+
OpenSSL::PKey::RSA.new(settings.private_key, settings.private_key_passphrase)
|
30
32
|
end
|
31
33
|
|
32
34
|
def field_for value
|
@@ -34,7 +36,7 @@ module BankLink
|
|
34
36
|
end
|
35
37
|
|
36
38
|
def request_data version
|
37
|
-
|
39
|
+
keys(version).collect { |key_name|
|
38
40
|
field_for data[key_name].to_s
|
39
41
|
}.flatten.join
|
40
42
|
end
|
data/lib/bank_link/version.rb
CHANGED
@@ -1,19 +1,8 @@
|
|
1
|
-
require "bank_link/estruct"
|
2
|
-
|
3
1
|
module BankLink
|
4
2
|
module ViewHelpers
|
5
3
|
def bank_link_tag link, object=nil, options={}, &block
|
6
|
-
form_data =
|
7
|
-
|
8
|
-
form_options = { :action => link.url, :method => :post }
|
9
|
-
|
10
|
-
if encoding_key = link.data.encoding_key
|
11
|
-
if encoding = form_data[link.data.encoding_key]
|
12
|
-
form_options[:"accept-charset"] = encoding
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
form_options.merge!(options[:form] || {})
|
4
|
+
form_data = Hashie::Mash.new(link.processed_data(object, options[:values] || {}))
|
5
|
+
form_options = bank_link_form_options link, form_data, options
|
17
6
|
|
18
7
|
content_tag(:form, form_options) do
|
19
8
|
form_data.each do |key, value|
|
@@ -23,12 +12,36 @@ module BankLink
|
|
23
12
|
end
|
24
13
|
end
|
25
14
|
|
26
|
-
def
|
15
|
+
def authorization_links object=nil, options={}, &block
|
16
|
+
content_tag(:div, (options[:container] || {})) do
|
17
|
+
BankLink.authorization_links do |link|
|
18
|
+
concat(bank_link_tag(link, object, options, &block))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def payment_links object=nil, options={}, &block
|
27
24
|
content_tag(:div, (options[:container] || {})) do
|
28
|
-
BankLink.
|
25
|
+
BankLink.payment_links do |link|
|
29
26
|
concat(bank_link_tag(link, object, options, &block))
|
30
27
|
end
|
31
28
|
end
|
32
29
|
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def bank_link_form_options link, form_data, options={}
|
34
|
+
form_options = { :action => link.url, :method => :post }
|
35
|
+
|
36
|
+
if encoding_key = link.settings.encoding_key
|
37
|
+
if encoding = form_data[link.settings.encoding_key]
|
38
|
+
form_options[:"accept-charset"] = encoding
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
form_options.merge!(options[:form] || {})
|
43
|
+
|
44
|
+
form_options
|
45
|
+
end
|
33
46
|
end
|
34
|
-
end
|
47
|
+
end
|
data/lib/bank_link.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
require "bank_link/version"
|
2
2
|
require "bank_link/configuration"
|
3
|
+
require "bank_link/mac"
|
4
|
+
|
5
|
+
require "hashie"
|
6
|
+
|
3
7
|
begin
|
4
8
|
require "rails/all"
|
5
9
|
rescue LoadError
|
@@ -13,8 +17,16 @@ module BankLink
|
|
13
17
|
block_given? ? yield(configuration) : (@configuration ||= Configuration.instance)
|
14
18
|
end
|
15
19
|
|
16
|
-
def
|
17
|
-
configuration.
|
20
|
+
def payment_links *args, &block
|
21
|
+
configuration.payment_links(*args, &block)
|
22
|
+
end
|
23
|
+
|
24
|
+
def authorization_links *args, &block
|
25
|
+
configuration.authorization_links(*args, &block)
|
18
26
|
end
|
19
27
|
end
|
20
28
|
end
|
29
|
+
|
30
|
+
def BankLink &block
|
31
|
+
::BankLink.configuration(&block)
|
32
|
+
end
|