hncb_e_atm 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.rvmrc +1 -1
- data/lib/hncb_e_atm.rb +2 -1
- data/lib/hncb_e_atm/response.rb +19 -0
- data/lib/hncb_e_atm/{form.rb → serialization.rb} +1 -1
- data/lib/hncb_e_atm/version.rb +1 -1
- data/lib/hncb_e_atm/view_helpers.rb +13 -1
- data/spec/lib/hncb_e_atm/{form_spec.rb → serialization_spec.rb} +7 -7
- data/spec/lib/hncb_e_atm/view_helpers_spec.rb +27 -18
- metadata +15 -14
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MGNhMGJjN2IyNmU4YjkzNDk5MzliZjA4ODVlNzljOWUwOTgxYWRiZg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a5ead461780630f5735f7e26ab144ed4f844fa58
|
4
|
+
data.tar.gz: 18b00b8cf1c05306794cda3ff65a4e20ca9b943f
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MWZmOGQzYjI0MTA1ZDE1ZGI1OGEyZjJhMzU5ZGI4MWVhMjcxZTNjYzE1MjU3
|
11
|
-
YTU5YWZiOTY4YjNkZjZkZjJkNmI1MjQ2MjcxZDM1NDUzYzU4NTM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MzFiOTU2ZGViNmZiOWRhMTc5MDkzYjA1OTQ2ZWFmNGM5YWQzMWY4N2VkNzhi
|
14
|
-
YWU4ZjY5NTFlMmM2OWM0YTE4ZGJlZWU4MWJmZmYwMTI0OTRlZmYwOWNlYWIy
|
15
|
-
NmMyOWY3ODBkZTY4Mzk1ZGM0MzRiYjZlNzY5NmQzZWI0NjJiM2Q=
|
6
|
+
metadata.gz: bea463121db7323fe1469a780b84b0a3b5e9b81cd95039a01243f2341cf72c4c8e34cb87d7192a9a9593c74e9c3f05be9ef13da25c50d3671694ee5c6151e07f
|
7
|
+
data.tar.gz: 897e2459d2bd73c1e07ce5113b2b4b4cde841e1b9846e1ac609e96bb95454bc6f60c8f74fe50a458f8da7c80ee754cb047d5149912cbd9ca955f5945011cb975
|
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm use ruby-
|
1
|
+
rvm use ruby-2.0.0@hncb_e_atm --create
|
data/lib/hncb_e_atm.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module HncbEAtm
|
5
|
+
class Response
|
6
|
+
def initialize params
|
7
|
+
@params = HncbEAtm::Utils.stringfy_keys(params)
|
8
|
+
end
|
9
|
+
|
10
|
+
def parse
|
11
|
+
options_string = Base64.decode64 @params["val"]
|
12
|
+
Hash[URI::decode_www_form options_string]
|
13
|
+
end
|
14
|
+
|
15
|
+
def success?
|
16
|
+
true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/hncb_e_atm/version.rb
CHANGED
@@ -7,7 +7,7 @@ module HncbEAtm
|
|
7
7
|
include ::ActionView::Context
|
8
8
|
|
9
9
|
def hncb_e_atm_form_for(params, &block)
|
10
|
-
query_string = HncbEAtm::
|
10
|
+
query_string = HncbEAtm::Serialization.new(params).serialize
|
11
11
|
val = Base64.encode64(query_string)
|
12
12
|
mac = Digest::SHA1.hexdigest(query_string).upcase
|
13
13
|
|
@@ -27,5 +27,17 @@ module HncbEAtm
|
|
27
27
|
|
28
28
|
nil
|
29
29
|
end
|
30
|
+
|
31
|
+
def hncb_e_atm_link_for(params)
|
32
|
+
query_string = HncbEAtm::Serialization.new(params).serialize
|
33
|
+
val = Base64.encode64(query_string)
|
34
|
+
mac = Digest::SHA1.hexdigest(query_string).upcase
|
35
|
+
|
36
|
+
html_link = "#{HncbEAtm.endpoint}?trx=com.eatm.wibc.trx.web.EAtmWShopping&state=prompt&val=#{val}&mac=#{mac}"
|
37
|
+
|
38
|
+
concat(html_link.respond_to?(:html_safe) ? html_link.html_safe : html_form)
|
39
|
+
|
40
|
+
nil
|
41
|
+
end
|
30
42
|
end
|
31
43
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require File.expand_path('../../../lib/hncb_e_atm/
|
1
|
+
require File.expand_path('../../../lib/hncb_e_atm/serialization', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
describe HncbEAtm::
|
3
|
+
describe HncbEAtm::Serialization do
|
4
4
|
before do
|
5
5
|
@params = {
|
6
6
|
:store_id => "1",
|
@@ -15,21 +15,21 @@ describe HncbEAtm::Form do
|
|
15
15
|
}
|
16
16
|
end
|
17
17
|
|
18
|
-
HncbEAtm::
|
18
|
+
HncbEAtm::Serialization::REQUIRED_FIELDS.each do |field|
|
19
19
|
it "should validate the presence of #{field}" do
|
20
20
|
@params.delete(field.to_sym)
|
21
21
|
|
22
22
|
lambda do
|
23
|
-
HncbEAtm::
|
23
|
+
HncbEAtm::Serialization.new(@params)
|
24
24
|
end.should raise_error(ArgumentError, "#{field} is a required field")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "#serialize" do
|
29
|
-
it "should serialize the fields
|
30
|
-
|
29
|
+
it "should serialize the fields" do
|
30
|
+
serra = HncbEAtm::Serialization.new(@params)
|
31
31
|
|
32
|
-
|
32
|
+
serra.serialize.should == "StoreID=1&StoreAcnt=2&StoreTxDate=#{Date.today.strftime("%Y-%m-%d")}&\
|
33
33
|
OrderNumber=3&Amount=12.44&StoreName=xinqianbi&\
|
34
34
|
StoreURL=http://sandbox.xinqianbi.com&\
|
35
35
|
SuccessURL=http://sandbox.xinqianbi.com/transactions/succeed&\
|
@@ -6,29 +6,27 @@ require File.expand_path('../../../lib/hncb_e_atm/view_helpers', File.dirname(__
|
|
6
6
|
describe HncbEAtm::ViewHelpers do
|
7
7
|
include HncbEAtm::ViewHelpers
|
8
8
|
|
9
|
+
let (:params) {
|
10
|
+
{
|
11
|
+
:store_id => "008757080070001ABCD1310",
|
12
|
+
:store_account => "100200000025",
|
13
|
+
:store_transaction_date => "2005-11-10",
|
14
|
+
:order_number => "00001",
|
15
|
+
:amount => "10",
|
16
|
+
:store_name => "博客來網絡書店",
|
17
|
+
:store_url => "http://10.8.61.71:8080/mctmk/eatm/Shopping_01.jsp",
|
18
|
+
:success_url => "http://10.8.61.71:8080/mctmk/eatm/Shopping_03OK.jsp",
|
19
|
+
:fail_url => "http://10.8.61.71:8080/mctmk/eatm/Shopping_03NOK.jsp"
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
9
23
|
before do
|
24
|
+
HncbEAtm.debug = true
|
25
|
+
|
10
26
|
self.output_buffer = ""
|
11
27
|
end
|
12
28
|
|
13
29
|
describe "#hncb_e_atm_form_for" do
|
14
|
-
let (:params) {
|
15
|
-
{
|
16
|
-
:store_id => "008757080070001ABCD1310",
|
17
|
-
:store_account => "100200000025",
|
18
|
-
:store_transaction_date => "2005-11-10",
|
19
|
-
:order_number => "00001",
|
20
|
-
:amount => "10",
|
21
|
-
:store_name => "博客來網絡書店",
|
22
|
-
:store_url => "http://10.8.61.71:8080/mctmk/eatm/Shopping_01.jsp",
|
23
|
-
:success_url => "http://10.8.61.71:8080/mctmk/eatm/Shopping_03OK.jsp",
|
24
|
-
:fail_url => "http://10.8.61.71:8080/mctmk/eatm/Shopping_03NOK.jsp"
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
before do
|
29
|
-
HncbEAtm.debug = true
|
30
|
-
end
|
31
|
-
|
32
30
|
it "should generate a HTML form for the given parameters" do
|
33
31
|
expected_output = <<-FORM
|
34
32
|
<form action='https://210.65.217.216/eatm/servlet/TrxDispatcher' method='post'>
|
@@ -44,6 +42,17 @@ describe HncbEAtm::ViewHelpers do
|
|
44
42
|
"<%= submit_tag 'Pay Now!' %>"
|
45
43
|
end
|
46
44
|
|
45
|
+
self.output_buffer.should == expected_output.strip
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#hncb_e_atm_link_for" do
|
50
|
+
it "should generate a HTML link for the given parameters" do
|
51
|
+
expected_output = <<-LINK
|
52
|
+
https://210.65.217.216/eatm/servlet/TrxDispatcher?trx=com.eatm.wibc.trx.web.EAtmWShopping&state=prompt&val=U3RvcmVJRD0wMDg3NTcwODAwNzAwMDFBQkNEMTMxMCZTdG9yZUFjbnQ9MTAw\nMjAwMDAwMDI1JlN0b3JlVHhEYXRlPTIwMDUtMTEtMTAmT3JkZXJOdW1iZXI9\nMDAwMDEmQW1vdW50PTEwJlN0b3JlTmFtZT3ljZrlrqLkvobntrLntaHmm7jl\nupcmU3RvcmVVUkw9aHR0cDovLzEwLjguNjEuNzE6ODA4MC9tY3Rtay9lYXRt\nL1Nob3BwaW5nXzAxLmpzcCZTdWNjZXNzVVJMPWh0dHA6Ly8xMC44LjYxLjcx\nOjgwODAvbWN0bWsvZWF0bS9TaG9wcGluZ18wM09LLmpzcCZGYWlsVVJMPWh0\ndHA6Ly8xMC44LjYxLjcxOjgwODAvbWN0bWsvZWF0bS9TaG9wcGluZ18wM05P\nSy5qc3A=\n&mac=8E446B831D90EF4DC429DAA5FD82979580B53DAD
|
53
|
+
LINK
|
54
|
+
|
55
|
+
hncb_e_atm_link_for(params)
|
47
56
|
|
48
57
|
self.output_buffer.should == expected_output.strip
|
49
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hncb_e_atm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hao Liu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,42 +28,42 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: debugger
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description: eATM interface for 華南銀行(HNCB)
|
@@ -83,12 +83,13 @@ files:
|
|
83
83
|
- lib/generators/hncb_e_atm/install_generator.rb
|
84
84
|
- lib/generators/hncb_e_atm/templates/config.yml
|
85
85
|
- lib/hncb_e_atm.rb
|
86
|
-
- lib/hncb_e_atm/form.rb
|
87
86
|
- lib/hncb_e_atm/railtie.rb
|
87
|
+
- lib/hncb_e_atm/response.rb
|
88
|
+
- lib/hncb_e_atm/serialization.rb
|
88
89
|
- lib/hncb_e_atm/utils.rb
|
89
90
|
- lib/hncb_e_atm/version.rb
|
90
91
|
- lib/hncb_e_atm/view_helpers.rb
|
91
|
-
- spec/lib/hncb_e_atm/
|
92
|
+
- spec/lib/hncb_e_atm/serialization_spec.rb
|
92
93
|
- spec/lib/hncb_e_atm/view_helpers_spec.rb
|
93
94
|
- spec/lib/hncb_e_atm_spec.rb
|
94
95
|
homepage: ''
|
@@ -101,21 +102,21 @@ require_paths:
|
|
101
102
|
- lib
|
102
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
104
|
requirements:
|
104
|
-
- -
|
105
|
+
- - '>='
|
105
106
|
- !ruby/object:Gem::Version
|
106
107
|
version: '0'
|
107
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
109
|
requirements:
|
109
|
-
- -
|
110
|
+
- - '>='
|
110
111
|
- !ruby/object:Gem::Version
|
111
112
|
version: '0'
|
112
113
|
requirements: []
|
113
114
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.
|
115
|
+
rubygems_version: 2.0.6
|
115
116
|
signing_key:
|
116
117
|
specification_version: 4
|
117
118
|
summary: eATM interface for 華南銀行(HNCB)
|
118
119
|
test_files:
|
119
|
-
- spec/lib/hncb_e_atm/
|
120
|
+
- spec/lib/hncb_e_atm/serialization_spec.rb
|
120
121
|
- spec/lib/hncb_e_atm/view_helpers_spec.rb
|
121
122
|
- spec/lib/hncb_e_atm_spec.rb
|