banklink_lv 0.0.4 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +1 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +15 -78
- data/README.rdoc +18 -15
- data/Rakefile +2 -2
- data/banklink_lv.gemspec +9 -11
- data/init.rb +1 -1
- data/lib/{banklink_lv → banklink}/banklink.rb +13 -13
- data/lib/{banklink_lv → banklink}/base.rb +3 -3
- data/lib/{banklink_lv → banklink}/helper.rb +14 -14
- data/lib/{banklink_lv → banklink}/notification.rb +33 -37
- data/lib/banklink/swedbank.rb +27 -0
- data/lib/banklink/version.rb +3 -0
- data/lib/banklink.rb +20 -0
- data/test/banklink_helper_test.rb +4 -7
- data/test/banklink_notification_test.rb +4 -4
- data/test/database.yml +1 -1
- data/test/test_helper.rb +16 -14
- metadata +23 -53
- data/README +0 -71
- data/lib/banklink_lv/swedbank.rb +0 -49
- data/lib/banklink_lv/version.rb +0 -3
- data/lib/banklink_lv.rb +0 -27
- data/pkg/banklink_lv-0.0.3.gem +0 -0
- data/pkg/banklink_lv-0.0.4.gem +0 -0
- data/rails/init.rb +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f8ffa82dc6e5fb3d28a30670349fb52b6877c56a
|
4
|
+
data.tar.gz: ff9dc27db51a21c0f8682e978feec47c2116dcb1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fe37fe090c02338e868fc8b354414e67b322930f284495dd58527996584bafd8b6afc9c47c7d56a29c34d2bcb557159ebaefd555c75a10a5978d1860f4f792ba
|
7
|
+
data.tar.gz: 7f4715437ccb1435c9de41e4d890079bbe4eaee68885c0b6f4c6b42b51141ab7cc000668d595eb7bb7ed9002e6a58e08a3101454f3e4cb15934db77388cb410b
|
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/pkg
|
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
# Specify your gem's dependencies in
|
2
|
-
gemspec
|
1
|
+
# Specify your gem's dependencies in banklink.gemspec
|
2
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,88 +1,25 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
banklink_lv (
|
4
|
+
banklink_lv (1.0.2)
|
5
5
|
activesupport
|
6
|
-
rails
|
7
6
|
|
8
7
|
GEM
|
9
8
|
specs:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
activesupport (= 3.2.13)
|
25
|
-
builder (~> 3.0.0)
|
26
|
-
activerecord (3.2.13)
|
27
|
-
activemodel (= 3.2.13)
|
28
|
-
activesupport (= 3.2.13)
|
29
|
-
arel (~> 3.0.2)
|
30
|
-
tzinfo (~> 0.3.29)
|
31
|
-
activeresource (3.2.13)
|
32
|
-
activemodel (= 3.2.13)
|
33
|
-
activesupport (= 3.2.13)
|
34
|
-
activesupport (3.2.13)
|
35
|
-
i18n (= 0.6.1)
|
36
|
-
multi_json (~> 1.0)
|
37
|
-
arel (3.0.2)
|
38
|
-
builder (3.0.4)
|
39
|
-
erubis (2.7.0)
|
40
|
-
hike (1.2.2)
|
41
|
-
i18n (0.6.1)
|
42
|
-
journey (1.0.4)
|
43
|
-
json (1.8.0)
|
44
|
-
mail (2.5.4)
|
45
|
-
mime-types (~> 1.16)
|
46
|
-
treetop (~> 1.4.8)
|
47
|
-
mime-types (1.23)
|
48
|
-
multi_json (1.7.3)
|
49
|
-
polyglot (0.3.3)
|
50
|
-
rack (1.4.5)
|
51
|
-
rack-cache (1.2)
|
52
|
-
rack (>= 0.4)
|
53
|
-
rack-ssl (1.3.3)
|
54
|
-
rack
|
55
|
-
rack-test (0.6.2)
|
56
|
-
rack (>= 1.0)
|
57
|
-
rails (3.2.13)
|
58
|
-
actionmailer (= 3.2.13)
|
59
|
-
actionpack (= 3.2.13)
|
60
|
-
activerecord (= 3.2.13)
|
61
|
-
activeresource (= 3.2.13)
|
62
|
-
activesupport (= 3.2.13)
|
63
|
-
bundler (~> 1.0)
|
64
|
-
railties (= 3.2.13)
|
65
|
-
railties (3.2.13)
|
66
|
-
actionpack (= 3.2.13)
|
67
|
-
activesupport (= 3.2.13)
|
68
|
-
rack-ssl (~> 1.3.2)
|
69
|
-
rake (>= 0.8.7)
|
70
|
-
rdoc (~> 3.4)
|
71
|
-
thor (>= 0.14.6, < 2.0)
|
72
|
-
rake (0.9.2.2)
|
73
|
-
rdoc (3.12.2)
|
74
|
-
json (~> 1.4)
|
75
|
-
sprockets (2.2.2)
|
76
|
-
hike (~> 1.2)
|
77
|
-
multi_json (~> 1.0)
|
78
|
-
rack (~> 1.0)
|
79
|
-
tilt (~> 1.1, != 1.3.0)
|
80
|
-
thor (0.18.1)
|
81
|
-
tilt (1.4.1)
|
82
|
-
treetop (1.4.12)
|
83
|
-
polyglot
|
84
|
-
polyglot (>= 0.3.1)
|
85
|
-
tzinfo (0.3.37)
|
9
|
+
activesupport (4.0.2)
|
10
|
+
i18n (~> 0.6, >= 0.6.4)
|
11
|
+
minitest (~> 4.2)
|
12
|
+
multi_json (~> 1.3)
|
13
|
+
thread_safe (~> 0.1)
|
14
|
+
tzinfo (~> 0.3.37)
|
15
|
+
atomic (1.1.14)
|
16
|
+
i18n (0.6.9)
|
17
|
+
minitest (4.7.5)
|
18
|
+
multi_json (1.8.4)
|
19
|
+
rake (10.1.1)
|
20
|
+
thread_safe (0.1.3)
|
21
|
+
atomic
|
22
|
+
tzinfo (0.3.38)
|
86
23
|
|
87
24
|
PLATFORMS
|
88
25
|
ruby
|
data/README.rdoc
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
Payment system integration for Latvian banks what uses banklink API.
|
4
4
|
|
5
|
+
== Changes in 1.0.0
|
6
|
+
|
7
|
+
* No test keys and certificates options.
|
8
|
+
* Remove Rails depedency.
|
9
|
+
* Refactured SwedbankLv to Swedbank
|
10
|
+
* Notification#transaction_id is comming from VK_REF. (not VK_T_NO anymore)
|
11
|
+
|
5
12
|
== Supported banks
|
6
13
|
|
7
14
|
Swedbank (Latvia)
|
@@ -17,19 +24,15 @@ Not yet in RubyGems
|
|
17
24
|
|
18
25
|
Insert this into your Gemfile
|
19
26
|
|
20
|
-
gem "banklink_lv", :
|
27
|
+
gem "banklink_lv", git: "artursbraucs/banklink"
|
21
28
|
|
22
29
|
=== Configurations
|
23
30
|
|
24
31
|
Insert this in your config file:
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
SwedbankLv.test_private_key = File.read("#{Rails.root}/path/to/your_test_private_key")
|
31
|
-
SwedbankLv.test_bank_certificate = File.read("#{Rails.root}/path/to/test_bank_public_key")
|
32
|
-
SwedbankLv.test_url = "https://ib.swedbank.lv/banklink"
|
32
|
+
|
33
|
+
Swedbank.private_key = File.read("#{Rails.root}/path/to/your_private_key")
|
34
|
+
Swedbank.bank_certificate = File.read("#{Rails.root}/path/to/bank_public_key")
|
35
|
+
Swedbank.production_url = "https://ib.swedbank.lv/banklink"
|
33
36
|
|
34
37
|
Helper for view:
|
35
38
|
|
@@ -40,9 +43,9 @@ Helper for view:
|
|
40
43
|
options[:reference] = '454'
|
41
44
|
options[:message] = 'Testing banklink'
|
42
45
|
@helper = Banklink::Helper.new(TRANS_ID, YOUR_SENDER_ID, options)
|
43
|
-
|
46
|
+
|
44
47
|
Then create Notification controller for notify. Then you can notify:
|
45
|
-
|
48
|
+
|
46
49
|
notify = Banklink::Notification.new(request.raw_post)
|
47
50
|
@text
|
48
51
|
if notify.acknowledge
|
@@ -56,16 +59,16 @@ Then create Notification controller for notify. Then you can notify:
|
|
56
59
|
else
|
57
60
|
@text = "Stmx went wrong"
|
58
61
|
end
|
59
|
-
|
62
|
+
|
60
63
|
Thats all!
|
61
|
-
|
64
|
+
|
62
65
|
|
63
66
|
== Testing
|
64
67
|
|
65
|
-
You can run the tests from this gem with (inside the
|
68
|
+
You can run the tests from this gem with (inside the banklink directory):
|
66
69
|
|
67
70
|
rake
|
68
71
|
|
69
72
|
== Maintainer
|
70
73
|
|
71
|
-
This gem is maintained by {Arturs Braucs @
|
74
|
+
This gem is maintained by {Arturs Braucs @ Weby}[mailto:arturs@weby.lv]
|
data/Rakefile
CHANGED
@@ -7,10 +7,10 @@ require "bundler/gem_tasks"
|
|
7
7
|
desc 'Default: run unit tests.'
|
8
8
|
task :default => :test
|
9
9
|
|
10
|
-
desc 'Test the
|
10
|
+
desc 'Test the banklink plugin.'
|
11
11
|
Rake::TestTask.new(:test) do |t|
|
12
12
|
t.libs << 'lib'
|
13
13
|
t.libs << 'test'
|
14
14
|
t.pattern = 'test/**/*_test.rb'
|
15
15
|
t.verbose = true
|
16
|
-
end
|
16
|
+
end
|
data/banklink_lv.gemspec
CHANGED
@@ -1,28 +1,26 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "
|
3
|
+
require "banklink/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "banklink_lv"
|
7
|
-
s.version =
|
7
|
+
s.version = Banklink::VERSION
|
8
8
|
s.author = "Arturs Braucs"
|
9
|
-
s.email = ["arturs@
|
10
|
-
s.homepage = "https://github.com/
|
9
|
+
s.email = ["arturs@weby.lv"]
|
10
|
+
s.homepage = "https://github.com/artursbraucs/banklink"
|
11
11
|
s.platform = Gem::Platform::RUBY
|
12
12
|
s.summary = "Banklink integration in your website without active merchant (Latvia)"
|
13
13
|
s.require_path = "lib"
|
14
14
|
s.has_rdoc = false
|
15
|
-
s.extra_rdoc_files = ["README"]
|
16
|
-
|
15
|
+
s.extra_rdoc_files = ["README.rdoc"]
|
16
|
+
|
17
17
|
s.files = `git ls-files`.split("\n")
|
18
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
s.rubyforge_project = "banklink_lv"
|
22
|
-
|
22
|
+
|
23
23
|
s.add_development_dependency 'rake'
|
24
|
-
|
24
|
+
|
25
25
|
s.add_dependency "activesupport"
|
26
|
-
|
27
|
-
|
28
|
-
end
|
26
|
+
end
|
data/init.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require '
|
1
|
+
require 'banklink'
|
@@ -6,22 +6,22 @@ module Banklink
|
|
6
6
|
# when 'EYP' then SebEst
|
7
7
|
# when 'SAMPOPANK' then SampoEst
|
8
8
|
# when 'HP' then SwedbankEst
|
9
|
-
|
9
|
+
|
10
10
|
# Swedbank uses same sender id for different countries, currently can't detect Lithuanian
|
11
11
|
# use:
|
12
|
-
# notify =
|
13
|
-
#when 'HP' then
|
14
|
-
|
12
|
+
# notify = Swedbank::Notification.new(params)
|
13
|
+
#when 'HP' then Swedbank
|
14
|
+
|
15
15
|
#when '70440' then SebLtu
|
16
16
|
#when 'SMPOLT22' then DanskeLtu
|
17
17
|
#when 'SNORLT22' then SnorasLtu
|
18
18
|
#when '112029720' then DnbnordLtu
|
19
|
-
#when '70100' then UbLtu
|
20
|
-
|
19
|
+
#when '70100' then UbLtu
|
20
|
+
|
21
21
|
# else raise(ArgumentError, "unknown sender id: #{params['VK_SND_ID']}")
|
22
22
|
# end
|
23
23
|
#end
|
24
|
-
|
24
|
+
|
25
25
|
# Define required fields for each service message.
|
26
26
|
# We need to know this in order to calculate VK_MAC
|
27
27
|
# from a given hash of parameters.
|
@@ -87,7 +87,7 @@ module Banklink
|
|
87
87
|
'VK_REF',
|
88
88
|
'VK_MSG']
|
89
89
|
}
|
90
|
-
|
90
|
+
|
91
91
|
# Calculation using method VK_VERSION=008:
|
92
92
|
# VK_MAC is RSA signature of the request fields coded into BASE64.
|
93
93
|
# VK_MAC will be calculated using secret key of the sender using RSA. Signature will
|
@@ -106,7 +106,7 @@ module Banklink
|
|
106
106
|
def func_p(val)
|
107
107
|
sprintf("%03i", val.length)
|
108
108
|
end
|
109
|
-
|
109
|
+
|
110
110
|
# Generate a string to be signed out of service message parameters.
|
111
111
|
# p(x1 )|| x1|| p(x2 )|| x2 || ... ||p( xn )||xn
|
112
112
|
# || is string concatenation mark
|
@@ -121,15 +121,15 @@ module Banklink
|
|
121
121
|
end
|
122
122
|
str
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
def generate_signature(service_msg_number, sigparams)
|
126
126
|
# privkey = self.class.parent.get_private_key
|
127
|
-
privkey =
|
127
|
+
privkey = Swedbank.get_private_key
|
128
128
|
privkey.sign(OpenSSL::Digest::SHA1.new, generate_data_string(service_msg_number, sigparams))
|
129
129
|
end
|
130
|
-
|
130
|
+
|
131
131
|
def generate_mac(service_msg_number, sigparams)
|
132
132
|
Base64.encode64(generate_signature(service_msg_number, sigparams)).gsub(/\n/,'')
|
133
133
|
end
|
134
134
|
end
|
135
|
-
end
|
135
|
+
end
|
@@ -2,12 +2,12 @@ module Banklink #:nodoc:
|
|
2
2
|
class Helper
|
3
3
|
attr_reader :fields
|
4
4
|
include Banklink::Common
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(order, account, options = {})
|
7
|
-
|
7
|
+
|
8
8
|
@options = options
|
9
9
|
@fields = {}
|
10
|
-
|
10
|
+
|
11
11
|
@options['VK_SND_ID'] = account
|
12
12
|
@options['VK_STAMP'] = order
|
13
13
|
@options['VK_AMOUNT'] = options[:amount]
|
@@ -16,7 +16,7 @@ module Banklink #:nodoc:
|
|
16
16
|
@options['VK_REF'] = options[:reference] || ""
|
17
17
|
@options['VK_MSG'] = options[:message]
|
18
18
|
@options['VK_LANG'] = options[:lang] if options[:lang]
|
19
|
-
|
19
|
+
|
20
20
|
if options[:service_msg_number]
|
21
21
|
@service_msg_number = options.delete(:service_msg_number)
|
22
22
|
else
|
@@ -29,12 +29,12 @@ module Banklink #:nodoc:
|
|
29
29
|
add_return_url_field
|
30
30
|
add_lang_field
|
31
31
|
end
|
32
|
-
|
33
|
-
|
32
|
+
|
33
|
+
|
34
34
|
def form_fields
|
35
35
|
@fields
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def self.mapping(attribute, options = {})
|
39
39
|
self.mappings ||= {}
|
40
40
|
self.mappings[attribute] = options
|
@@ -49,11 +49,11 @@ module Banklink #:nodoc:
|
|
49
49
|
# Signature used to validate previous parameters
|
50
50
|
add_field('VK_MAC', generate_mac(@service_msg_number, form_fields))
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def add_return_url_field
|
54
54
|
add_field('VK_RETURN', @options['VK_RETURN'])
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
def add_lang_field
|
58
58
|
if @options['VK_LANG']
|
59
59
|
add_field(vk_lang_param, @options['VK_LANG'])
|
@@ -65,7 +65,7 @@ module Banklink #:nodoc:
|
|
65
65
|
def add_charset_field
|
66
66
|
add_field vk_charset_param, vk_charset
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
def add_required_params
|
70
70
|
required_params = Banklink.required_service_params[@service_msg_number]
|
71
71
|
required_params.each do |param|
|
@@ -82,7 +82,7 @@ module Banklink #:nodoc:
|
|
82
82
|
def vk_charset_param
|
83
83
|
'VK_ENCODING'
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
def vk_lang
|
87
87
|
'LAT'
|
88
88
|
end
|
@@ -108,10 +108,10 @@ module Banklink #:nodoc:
|
|
108
108
|
private
|
109
109
|
# Iconv converter to convert from utf8 to
|
110
110
|
# the charset the bank api expects.
|
111
|
-
|
111
|
+
|
112
112
|
def encode_to_utf8 string
|
113
113
|
string.encode('UTF-8', :invalid => :replace, :replace => '').encode('UTF-8')
|
114
114
|
end
|
115
|
-
|
115
|
+
|
116
116
|
end
|
117
|
-
end
|
117
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Banklink
|
2
|
-
|
2
|
+
|
3
3
|
class Notification
|
4
4
|
include Banklink::Common
|
5
5
|
attr_accessor :params
|
6
6
|
attr_accessor :raw
|
7
|
-
|
7
|
+
|
8
8
|
# set this to an array in the subclass, to specify which IPs are allowed to send requests
|
9
9
|
attr_accessor :production_ips
|
10
10
|
|
@@ -18,80 +18,80 @@ module Banklink
|
|
18
18
|
(gross.to_f * 100.0).round
|
19
19
|
end
|
20
20
|
|
21
|
-
# This combines the gross and currency and returns a proper Money object.
|
21
|
+
# This combines the gross and currency and returns a proper Money object.
|
22
22
|
# this requires the money library located at http://dist.leetsoft.com/api/money
|
23
23
|
def amount
|
24
24
|
return gross_cents
|
25
25
|
end
|
26
26
|
|
27
|
-
# reset the notification.
|
27
|
+
# reset the notification.
|
28
28
|
def empty!
|
29
29
|
@params = Hash.new
|
30
|
-
@raw = ""
|
30
|
+
@raw = ""
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
# Check if the request comes from an official IP
|
34
34
|
def valid_sender?(ip)
|
35
35
|
return true if Rails.env == :test || production_ips.blank?
|
36
36
|
production_ips.include?(ip)
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
# A helper method to parse the raw post of the request & return
|
40
40
|
# the right Notification subclass based on the sender id.
|
41
41
|
#def self.get_notification(http_raw_data)
|
42
42
|
# params = ActiveMerchant::Billing::Integrations::Notification.new(http_raw_data).params
|
43
43
|
# Banklink.get_class(params)::Notification.new(http_raw_data)
|
44
44
|
#end
|
45
|
-
|
45
|
+
|
46
46
|
def get_data_string
|
47
47
|
generate_data_string(params['VK_SERVICE'], params)
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
def bank_signature_valid?(bank_signature, service_msg_number, sigparams)
|
51
|
-
|
51
|
+
Swedbank.get_bank_public_key.verify(OpenSSL::Digest::SHA1.new, bank_signature, generate_data_string(service_msg_number, sigparams))
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
def complete?
|
55
55
|
params['VK_SERVICE'] == '1101'
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
def wait?
|
59
59
|
params['VK_SERVICE'] == '1201'
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
def failed?
|
63
63
|
params['VK_SERVICE'] == '1901'
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
def currency
|
67
67
|
params['VK_CURR']
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
# The order id we passed to the form helper.
|
71
71
|
def item_id
|
72
72
|
params['VK_STAMP']
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
def transaction_id
|
76
|
-
params['
|
76
|
+
params['VK_REF']
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
def sender_name
|
80
80
|
params['VK_SND_NAME']
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
def sender_bank_account
|
84
84
|
params['VK_SND_ACC']
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
def reciever_name
|
88
88
|
params['VK_REC_NAME']
|
89
89
|
end
|
90
|
-
|
90
|
+
|
91
91
|
def reciever_bank_account
|
92
92
|
params['VK_REC_ACC']
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
# When was this payment received by the client.
|
96
96
|
# We're expecting a dd.mm.yyyy format.
|
97
97
|
def received_at
|
@@ -100,36 +100,36 @@ module Banklink
|
|
100
100
|
day, month, year = *date.split('.').map(&:to_i)
|
101
101
|
Date.civil(year, month, day)
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
def signature
|
105
105
|
Base64.decode64(params['VK_MAC'])
|
106
106
|
end
|
107
|
-
|
107
|
+
|
108
108
|
# The money amount we received, string.
|
109
109
|
def gross
|
110
110
|
params['VK_AMOUNT']
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
# Was this a test transaction?
|
114
114
|
def test?
|
115
115
|
params['VK_REC_ID'] == 'testvpos'
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
# TODO what should be here?
|
119
119
|
def status
|
120
120
|
complete? ? 'Completed' : 'Failed'
|
121
121
|
end
|
122
|
-
|
122
|
+
|
123
123
|
# If our request was sent automatically by the bank (true) or manually
|
124
124
|
# by the user triggering the callback by pressing a "return" button (false).
|
125
125
|
def automatic?
|
126
126
|
params['VK_AUTO'].upcase == 'Y'
|
127
127
|
end
|
128
|
-
|
128
|
+
|
129
129
|
def success?
|
130
130
|
acknowledge && complete?
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
# We don't actually acknowledge the notification by making another request ourself,
|
134
134
|
# instead, we check the notification by checking the signature that came with the notification.
|
135
135
|
# This method has to be called when handling the notification & deciding whether to process the order.
|
@@ -146,22 +146,18 @@ module Banklink
|
|
146
146
|
def acknowledge
|
147
147
|
bank_signature_valid?(signature, params['VK_SERVICE'], params)
|
148
148
|
end
|
149
|
-
|
150
|
-
|
149
|
+
|
150
|
+
|
151
151
|
private
|
152
152
|
|
153
153
|
# Take the posted data and move the relevant data into a hash
|
154
154
|
def parse(post)
|
155
155
|
@raw = post.to_s
|
156
|
-
|
157
|
-
for line in @raw.split('&')
|
156
|
+
for line in @raw.split('&')
|
158
157
|
key, value = *line.scan( %r{^([A-Za-z0-9_.]+)\=(.*)$} ).flatten
|
159
158
|
params[key] = CGI.unescape(value)
|
160
|
-
|
161
|
-
puts "<#{key}> #{params[key]}"
|
162
159
|
end
|
163
|
-
puts "======================="
|
164
160
|
end
|
165
161
|
end
|
166
162
|
end
|
167
|
-
|
163
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Swedbank
|
2
|
+
|
3
|
+
# Raw X509 certificate of the bank, string format.
|
4
|
+
mattr_accessor :bank_certificate
|
5
|
+
# RSA public key of the bank, taken from the X509 certificate of the bank. OpenSSL container.
|
6
|
+
def self.get_bank_public_key
|
7
|
+
cert = self.bank_certificate
|
8
|
+
OpenSSL::X509::Certificate.new(cert.gsub(/ /, '')).public_key
|
9
|
+
end
|
10
|
+
|
11
|
+
mattr_accessor :private_key
|
12
|
+
# Our RSA private key. OpenSSL container.
|
13
|
+
def self.get_private_key
|
14
|
+
private_key = self.private_key
|
15
|
+
OpenSSL::PKey::RSA.new(private_key.gsub(/ /, ''))
|
16
|
+
end
|
17
|
+
|
18
|
+
mattr_accessor :service_url
|
19
|
+
def self.service_url
|
20
|
+
self.service_url
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.notification(post)
|
24
|
+
Notification.new(post)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/lib/banklink.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'banklink/version'
|
2
|
+
|
3
|
+
require "base64"
|
4
|
+
require "active_support/dependencies"
|
5
|
+
|
6
|
+
require 'net/http'
|
7
|
+
require 'net/https'
|
8
|
+
require 'uri'
|
9
|
+
|
10
|
+
require 'digest'
|
11
|
+
require 'digest/md5'
|
12
|
+
require 'openssl'
|
13
|
+
|
14
|
+
require 'cgi'
|
15
|
+
|
16
|
+
require 'banklink/banklink'
|
17
|
+
require 'banklink/base'
|
18
|
+
require 'banklink/helper'
|
19
|
+
require 'banklink/swedbank'
|
20
|
+
require 'banklink/notification'
|
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/test_helper'
|
|
4
4
|
|
5
5
|
class BanklinkHelperTest < Test::Unit::TestCase
|
6
6
|
include Banklink
|
7
|
-
|
7
|
+
|
8
8
|
def test_should_create_fields_for_1002
|
9
9
|
options = {}
|
10
10
|
options[:amount] = '1.55'
|
@@ -12,12 +12,9 @@ class BanklinkHelperTest < Test::Unit::TestCase
|
|
12
12
|
options[:return] = 'http://default/'
|
13
13
|
options[:reference] = '54'
|
14
14
|
options[:message] = 'Pay for smtx'
|
15
|
-
|
15
|
+
|
16
16
|
helper = Helper.new(300, '300', options)
|
17
|
-
helper.form_fields.each do |field, value|
|
18
|
-
puts "<#{field}> #{value}"
|
19
|
-
end
|
20
17
|
assert_equal 12, helper.form_fields.size
|
21
18
|
end
|
22
|
-
|
23
|
-
end
|
19
|
+
|
20
|
+
end
|
@@ -8,7 +8,7 @@ class BanklinkNotificationTest < Test::Unit::TestCase
|
|
8
8
|
def setup
|
9
9
|
@swedbank = Banklink::Notification.new(http_raw_data)
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
# TODO: fix test
|
13
13
|
def test_acknowledgement
|
14
14
|
assert_equal false, @swedbank.acknowledge
|
@@ -18,7 +18,7 @@ class BanklinkNotificationTest < Test::Unit::TestCase
|
|
18
18
|
assert_equal true, @swedbank.complete?
|
19
19
|
assert_equal 'Completed', @swedbank.status
|
20
20
|
assert_equal "88", @swedbank.item_id
|
21
|
-
assert_equal "
|
21
|
+
assert_equal "123", @swedbank.transaction_id
|
22
22
|
assert_equal '33', @swedbank.gross
|
23
23
|
assert_equal "EEK", @swedbank.currency
|
24
24
|
assert_equal '26.11.2007', @swedbank.received_at.strftime("%d.%m.%Y")
|
@@ -39,5 +39,5 @@ class BanklinkNotificationTest < Test::Unit::TestCase
|
|
39
39
|
def http_raw_data
|
40
40
|
"VK_SERVICE=1101&VK_VERSION=008&VK_SND_ID=EYP&VK_REC_ID=testvpos&VK_STAMP=88&VK_T_NO=2774&VK_AMOUNT=33&VK_CURR=EEK&VK_REC_ACC=10002050618003&VK_REC_NAME=ALLAS+ALLAR&VK_SND_ACC=10010046155012&VK_SND_NAME=t%C3%B5%C3%B5ger+%2C+Le%C3%B5p%C3%A4%C3%B6ld%C5%BE%C5%BD%C5%A1%C5%A0&VK_REF=123&VK_MSG=Porgandid&VK_T_DATE=26.11.2007&VK_MAC=LyCZRncu%2F%2BOi5nwzOkI6C9UMFohN6tSl3tLFyIJyNp2lGKBrDKZ2H8b%2BadU3XalzS7MwnAj8r%2FRhLpbsGNE5ysNyM4CKkSrsVzxoXbt9%2BB1foH9Rlp9LCeoR2H774f8UcMe9RVsE%2B%2BZfrEZzzXYyR1PXDCVOShQOAxlD9pbh8nk%3D&VK_LANG=EST&VK_RETURN=http%3A%2F%2F90.190.110.154%2Fseb_est%2Fnotify&VK_AUTO=N&VK_CHARSET=UTF-8&keel=EST&appname=UN3MIN&act=UPOSTEST2"
|
41
41
|
end
|
42
|
-
|
43
|
-
end
|
42
|
+
|
43
|
+
end
|
data/test/database.yml
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
ENV['RAILS_ENV'] = 'test'
|
4
|
-
ENV['RAILS_ROOT'] ||= File.dirname(__FILE__) + '/../../../..'
|
5
|
-
|
3
|
+
# ENV['RAILS_ENV'] = 'test'
|
4
|
+
#ENV['RAILS_ROOT'] ||= File.dirname(__FILE__) + '/../../../..'
|
5
|
+
|
6
6
|
require 'test/unit'
|
7
|
+
require 'banklink'
|
7
8
|
# require File.expand_path(File.join(ENV['RAILS_ROOT'], 'config/environment.rb'))
|
8
9
|
|
9
|
-
require File.dirname(__FILE__) + '/../rails/init'
|
10
|
+
# require File.dirname(__FILE__) + '/../rails/init'
|
11
|
+
|
10
12
|
|
11
13
|
# default params
|
12
|
-
PARAMS_1002 = {'VK_SERVICE' => 'foo', 'VK_VERSION' => 'bar', 'VK_SND_ID' => 'goo', 'VK_STAMP' => 'tooboo', 'VK_AMOUNT' => '10565', 'VK_CURR' => 'LVL', 'VK_REF' => 'dsa', 'VK_MSG' => 'Āžēīū'}
|
14
|
+
PARAMS_1002 = {'VK_SERVICE' => 'foo', 'VK_VERSION' => 'bar', 'VK_SND_ID' => 'goo', 'VK_STAMP' => 'tooboo', 'VK_AMOUNT' => '10565', 'VK_CURR' => 'LVL', 'VK_REF' => 'dsa', 'VK_MSG' => 'Āžēīū'}
|
13
15
|
|
14
|
-
|
16
|
+
Swedbank.private_key = <<EOF
|
15
17
|
-----BEGIN RSA PRIVATE KEY-----
|
16
18
|
MIICXAIBAAKBgQC+AROlXiRvi1T7Q9fAh0Lw73szAn26mqfKDqd6Bdplq3v+gVWC
|
17
19
|
3v0+bgtfNakRE/UVYOxEA0z0viqRpKzPuNy8OstTMe8fFKs19NW8lBYik6NzJ4Bk
|
@@ -29,7 +31,7 @@ m3gFeXEBgzGn9UOd6xIAp0p7A1XVBN8XzDMa09gSOks=
|
|
29
31
|
-----END RSA PRIVATE KEY-----
|
30
32
|
EOF
|
31
33
|
|
32
|
-
|
34
|
+
Swedbank.bank_certificate = <<EOF
|
33
35
|
-----BEGIN CERTIFICATE-----
|
34
36
|
MIIDRTCCAq6gAwIBAgIBADANBgkqhkiG9w0BAQQFADB7MQswCQYDVQQGEwJFRTEO
|
35
37
|
MAwGA1UECBMFSGFyanUxEDAOBgNVBAcTB1RhbGxpbm4xDDAKBgNVBAoTA0VZUDEL
|
@@ -52,14 +54,14 @@ C82uR/wUZJDw9kj+R1O46/byG8yA+S9FVw==
|
|
52
54
|
-----END CERTIFICATE-----
|
53
55
|
EOF
|
54
56
|
|
55
|
-
|
56
|
-
|
57
|
+
Swedbank.service_url = 'https://banklink.lv'
|
58
|
+
|
57
59
|
def load_schema
|
58
60
|
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
59
61
|
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
|
60
|
-
|
62
|
+
|
61
63
|
db_adapter = ENV['DB']
|
62
|
-
|
64
|
+
|
63
65
|
# no db passed, try one of these fine config-free DBs before bombing.
|
64
66
|
db_adapter ||=
|
65
67
|
begin
|
@@ -73,11 +75,11 @@ def load_schema
|
|
73
75
|
rescue MissingSourceFile
|
74
76
|
end
|
75
77
|
end
|
76
|
-
|
78
|
+
|
77
79
|
if db_adapter.nil?
|
78
80
|
raise "No DB Adapter selected. Pass the DB= option to pick one, or install Sqlite or Sqlite3."
|
79
81
|
end
|
80
|
-
|
82
|
+
|
81
83
|
ActiveRecord::Base.establish_connection(config[db_adapter])
|
82
84
|
load(File.dirname(__FILE__) + "/schema.rb")
|
83
|
-
end
|
85
|
+
end
|
metadata
CHANGED
@@ -1,90 +1,67 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: banklink_lv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Arturs Braucs
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-02-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: activesupport
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rails
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
38
|
+
- - ">="
|
60
39
|
- !ruby/object:Gem::Version
|
61
40
|
version: '0'
|
62
41
|
description:
|
63
42
|
email:
|
64
|
-
- arturs@
|
43
|
+
- arturs@weby.lv
|
65
44
|
executables: []
|
66
45
|
extensions: []
|
67
46
|
extra_rdoc_files:
|
68
|
-
- README
|
47
|
+
- README.rdoc
|
69
48
|
files:
|
49
|
+
- ".DS_Store"
|
50
|
+
- ".gitignore"
|
70
51
|
- Gemfile
|
71
52
|
- Gemfile.lock
|
72
53
|
- MIT-LICENSE
|
73
|
-
- README
|
74
54
|
- README.rdoc
|
75
55
|
- Rakefile
|
76
56
|
- banklink_lv.gemspec
|
77
57
|
- init.rb
|
78
|
-
- lib/
|
79
|
-
- lib/
|
80
|
-
- lib/
|
81
|
-
- lib/
|
82
|
-
- lib/
|
83
|
-
- lib/
|
84
|
-
- lib/
|
85
|
-
- pkg/banklink_lv-0.0.3.gem
|
86
|
-
- pkg/banklink_lv-0.0.4.gem
|
87
|
-
- rails/init.rb
|
58
|
+
- lib/banklink.rb
|
59
|
+
- lib/banklink/banklink.rb
|
60
|
+
- lib/banklink/base.rb
|
61
|
+
- lib/banklink/helper.rb
|
62
|
+
- lib/banklink/notification.rb
|
63
|
+
- lib/banklink/swedbank.rb
|
64
|
+
- lib/banklink/version.rb
|
88
65
|
- test/banklink_common_test.rb
|
89
66
|
- test/banklink_helper_test.rb
|
90
67
|
- test/banklink_notification_test.rb
|
@@ -93,35 +70,28 @@ files:
|
|
93
70
|
- test/schema.rb
|
94
71
|
- test/string_utf8_test.rb
|
95
72
|
- test/test_helper.rb
|
96
|
-
homepage: https://github.com/
|
73
|
+
homepage: https://github.com/artursbraucs/banklink
|
97
74
|
licenses: []
|
75
|
+
metadata: {}
|
98
76
|
post_install_message:
|
99
77
|
rdoc_options: []
|
100
78
|
require_paths:
|
101
79
|
- lib
|
102
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
81
|
requirements:
|
105
|
-
- -
|
82
|
+
- - ">="
|
106
83
|
- !ruby/object:Gem::Version
|
107
84
|
version: '0'
|
108
|
-
segments:
|
109
|
-
- 0
|
110
|
-
hash: 296864345537664305
|
111
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
|
-
none: false
|
113
86
|
requirements:
|
114
|
-
- -
|
87
|
+
- - ">="
|
115
88
|
- !ruby/object:Gem::Version
|
116
89
|
version: '0'
|
117
|
-
segments:
|
118
|
-
- 0
|
119
|
-
hash: 296864345537664305
|
120
90
|
requirements: []
|
121
91
|
rubyforge_project: banklink_lv
|
122
|
-
rubygems_version:
|
92
|
+
rubygems_version: 2.2.2
|
123
93
|
signing_key:
|
124
|
-
specification_version:
|
94
|
+
specification_version: 4
|
125
95
|
summary: Banklink integration in your website without active merchant (Latvia)
|
126
96
|
test_files:
|
127
97
|
- test/banklink_common_test.rb
|
data/README
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
= Swedbank Banklink
|
2
|
-
|
3
|
-
Payment system integration for Latvian banks what uses banklink API.
|
4
|
-
|
5
|
-
== Supported banks
|
6
|
-
|
7
|
-
Swedbank (Latvia)
|
8
|
-
Swedbank (Estonia)
|
9
|
-
|
10
|
-
== Installation
|
11
|
-
|
12
|
-
=== From Ruby Gems
|
13
|
-
|
14
|
-
Not yet in RubyGems
|
15
|
-
|
16
|
-
=== From Git
|
17
|
-
|
18
|
-
Insert this into your Gemfile
|
19
|
-
|
20
|
-
gem "banklink_lv", :git => 'git://github.com/CreativeMobile/Banklink-LV.git'
|
21
|
-
|
22
|
-
=== Configurations
|
23
|
-
|
24
|
-
Insert this in your config file:
|
25
|
-
|
26
|
-
SwedbankLv.private_key = File.read("#{Rails.root}/path/to/your_private_key")
|
27
|
-
SwedbankLv.bank_certificate = File.read("#{Rails.root}/path/to/bank_public_key")
|
28
|
-
SwedbankLv.production_url = "https://ib.swedbank.lv/banklink"
|
29
|
-
|
30
|
-
SwedbankLv.test_private_key = File.read("#{Rails.root}/path/to/your_test_private_key")
|
31
|
-
SwedbankLv.test_bank_certificate = File.read("#{Rails.root}/path/to/test_bank_public_key")
|
32
|
-
SwedbankLv.test_url = "https://ib.swedbank.lv/banklink"
|
33
|
-
|
34
|
-
Helper for view:
|
35
|
-
|
36
|
-
options = {}
|
37
|
-
options[:amount] = '0.01'
|
38
|
-
options[:currency] = 'LVL'
|
39
|
-
options[:return] = 'http://yourapp.com/'
|
40
|
-
options[:reference] = '454' # Use only for Latvian Swedbank, because Estonia has special requirements. More information here - http://www.pangaliit.ee/en/settlements-and-standards/reference-number-of-the-invoice
|
41
|
-
options[:message] = 'Testing banklink'
|
42
|
-
@helper = Banklink::Helper.new(TRANS_ID, YOUR_SENDER_ID, options)
|
43
|
-
|
44
|
-
Then create Notification controller for notify. Then you can notify:
|
45
|
-
|
46
|
-
notify = Banklink::Notification.new(request.raw_post)
|
47
|
-
@text
|
48
|
-
if notify.acknowledge
|
49
|
-
if notify.complete?
|
50
|
-
@text = "Thanks!"
|
51
|
-
elsif notify.failed?
|
52
|
-
@text = "You didn't paid!"
|
53
|
-
else
|
54
|
-
@text = "Wait or other status"
|
55
|
-
end
|
56
|
-
else
|
57
|
-
@text = "Stmx went wrong"
|
58
|
-
end
|
59
|
-
|
60
|
-
Thats all!
|
61
|
-
|
62
|
-
|
63
|
-
== Testing
|
64
|
-
|
65
|
-
You can run the tests from this gem with (inside the banklink_lv directory):
|
66
|
-
|
67
|
-
rake
|
68
|
-
|
69
|
-
== Maintainer
|
70
|
-
|
71
|
-
This gem is maintained by {Arturs Braucs @ Creative Mobile}[mailto:arturs@creo.mobi]
|
data/lib/banklink_lv/swedbank.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
module SwedbankLv
|
2
|
-
|
3
|
-
# Raw X509 certificate of the bank, string format.
|
4
|
-
mattr_accessor :bank_certificate
|
5
|
-
mattr_accessor :test_bank_certificate
|
6
|
-
# RSA public key of the bank, taken from the X509 certificate of the bank. OpenSSL container.
|
7
|
-
def self.get_bank_public_key
|
8
|
-
if Rails.env == 'production'
|
9
|
-
cert = self.bank_certificate
|
10
|
-
else
|
11
|
-
cert = self.test_bank_certificate
|
12
|
-
end
|
13
|
-
OpenSSL::X509::Certificate.new(cert.gsub(/ /, '')).public_key
|
14
|
-
end
|
15
|
-
|
16
|
-
mattr_accessor :private_key
|
17
|
-
mattr_accessor :test_private_key
|
18
|
-
# Our RSA private key. OpenSSL container.
|
19
|
-
def self.get_private_key
|
20
|
-
if Rails.env == 'production'
|
21
|
-
private_key = self.private_key
|
22
|
-
else
|
23
|
-
private_key = self.test_private_key
|
24
|
-
end
|
25
|
-
OpenSSL::PKey::RSA.new(private_key.gsub(/ /, ''))
|
26
|
-
end
|
27
|
-
|
28
|
-
mattr_accessor :test_url
|
29
|
-
mattr_accessor :production_url
|
30
|
-
def self.service_url
|
31
|
-
mode = Rails.env
|
32
|
-
case mode
|
33
|
-
when 'production'
|
34
|
-
self.production_url
|
35
|
-
when 'test'
|
36
|
-
self.test_url
|
37
|
-
when 'development'
|
38
|
-
self.production_url
|
39
|
-
else
|
40
|
-
self.production_url
|
41
|
-
# raise StandardError, "Integration mode set to an invalid value: #{mode}"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.notification(post)
|
46
|
-
Notification.new(post)
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
data/lib/banklink_lv/version.rb
DELETED
data/lib/banklink_lv.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'banklink_lv/version'
|
2
|
-
|
3
|
-
require "rails"
|
4
|
-
require "active_support/dependencies"
|
5
|
-
|
6
|
-
require 'net/http'
|
7
|
-
require 'net/https'
|
8
|
-
require 'uri'
|
9
|
-
|
10
|
-
require 'digest'
|
11
|
-
require 'digest/md5'
|
12
|
-
require 'openssl'
|
13
|
-
|
14
|
-
require 'cgi'
|
15
|
-
|
16
|
-
require 'banklink_lv/banklink'
|
17
|
-
require 'banklink_lv/base'
|
18
|
-
require 'banklink_lv/helper'
|
19
|
-
require 'banklink_lv/swedbank'
|
20
|
-
require 'banklink_lv/notification'
|
21
|
-
|
22
|
-
%w{ models controllers helpers }.each do |dir|
|
23
|
-
path = File.join(File.dirname(__FILE__), 'app', dir)
|
24
|
-
$LOAD_PATH << path
|
25
|
-
# ActiveSupport::Dependencies.load_paths << path
|
26
|
-
# ActiveSupport::Dependencies.load_once_paths.delete(path)
|
27
|
-
end
|
data/pkg/banklink_lv-0.0.3.gem
DELETED
Binary file
|
data/pkg/banklink_lv-0.0.4.gem
DELETED
Binary file
|
data/rails/init.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'banklink_lv'
|