active_merchant_allpay 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 +1 -2
- data/active_merchant_allpay.gemspec +5 -0
- data/lib/active_merchant/billing/integrations/allpay/helper.rb +3 -16
- data/lib/active_merchant_allpay/version.rb +1 -1
- data/test/unit/integrations/allpay_module_test.rb +9 -0
- data/test/unit/integrations/helpers/allpay_helper_test.rb +9 -0
- data/test/unit/integrations/notifications/allpay_notification_test.rb +11 -0
- data/test/unit/test_helper.rb +261 -0
- metadata +73 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b5b7316493c8408a42d6151b32918d5fa129318
|
4
|
+
data.tar.gz: dee01594819a8ca7fab9be0588b12afb2d12911e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fb1819769610b827a56ae20e0586e64055b666b004f564045900946689fc778ac222ed4a07c523df4e011025b30a8ea30640602202701caadcd4d37d13a7509
|
7
|
+
data.tar.gz: 18a66c88a215458591c3717b383a5f6912027c24649cec6dd305a288863c1f6766b02a8f56492d0150983d1525b3a1dab528eb39a1fc734a1a98a938cced087f
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@ Now it supports Credit card(信用卡), ATM(虛擬ATM) and CVS(超商繳費).
|
|
8
8
|
Add this line to your application's Gemfile:
|
9
9
|
|
10
10
|
gem 'activemerchant'
|
11
|
-
gem 'active_merchant_allpay'
|
11
|
+
gem 'active_merchant_allpay', '>=0.1.2'
|
12
12
|
|
13
13
|
And then execute:
|
14
14
|
|
@@ -74,7 +74,6 @@ Once you’ve configured ActiveMerchantAllpay, you need a checkout form; it look
|
|
74
74
|
@order.user.email,
|
75
75
|
:service => :allpay,
|
76
76
|
:html => { :id => 'allpay-atm-form', :method => :post } do |service| %>
|
77
|
-
|
78
77
|
<% service.merchant_trade_no @order.payments.last.identifier %>
|
79
78
|
<% service.merchant_trade_date @order.created_at %>
|
80
79
|
<% service.total_amount @order.total.to_i %>
|
@@ -19,4 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency 'activemerchant', '>= 1.9.4'
|
22
|
+
|
23
|
+
spec.add_development_dependency('rake')
|
24
|
+
spec.add_development_dependency('mocha', '~> 0.13.0')
|
25
|
+
spec.add_development_dependency('rails', '>= 2.3.14')
|
26
|
+
spec.add_development_dependency('thor')
|
22
27
|
end
|
@@ -57,22 +57,9 @@ module ActiveMerchant #:nodoc:
|
|
57
57
|
|
58
58
|
def encrypted_data
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
:ItemName => @fields['ItemName'],
|
64
|
-
:MerchantID => @fields['MerchantID'],
|
65
|
-
:MerchantTradeDate => @fields['MerchantTradeDate'],
|
66
|
-
:MerchantTradeNo => @fields['MerchantTradeNo'],
|
67
|
-
:PaymentType => @fields['PaymentType'],
|
68
|
-
:ReturnURL => @fields['ReturnURL'],
|
69
|
-
:TotalAmount => @fields['TotalAmount'],
|
70
|
-
:TradeDesc => @fields['TradeDesc']
|
71
|
-
}
|
72
|
-
|
73
|
-
raw_data = hash_data.map do |x, y|
|
74
|
-
"#{x}=#{y}"
|
75
|
-
end.join('&')
|
60
|
+
raw_data = @fields.sort.map{|field, value|
|
61
|
+
"#{field}=#{value}"
|
62
|
+
}.join('&')
|
76
63
|
|
77
64
|
hash_raw_data = "HashKey=#{ActiveMerchant::Billing::Integrations::Allpay.hash_key}&#{raw_data}&HashIV=#{ActiveMerchant::Billing::Integrations::Allpay.hash_iv}"
|
78
65
|
|
@@ -0,0 +1,261 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
require 'bundler'
|
7
|
+
Bundler.setup
|
8
|
+
rescue LoadError => e
|
9
|
+
puts "Error loading bundler (#{e.message}): \"gem install bundler\" for bundler support."
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'test/unit'
|
13
|
+
require 'money'
|
14
|
+
require 'mocha/version'
|
15
|
+
if(Mocha::VERSION.split(".")[1].to_i < 12)
|
16
|
+
require 'mocha'
|
17
|
+
else
|
18
|
+
require 'mocha/setup'
|
19
|
+
end
|
20
|
+
require 'yaml'
|
21
|
+
require 'json'
|
22
|
+
require 'active_merchant'
|
23
|
+
require 'comm_stub'
|
24
|
+
|
25
|
+
require 'active_support/core_ext/integer/time'
|
26
|
+
require 'active_support/core_ext/numeric/time'
|
27
|
+
|
28
|
+
begin
|
29
|
+
require 'active_support/core_ext/time/acts_like'
|
30
|
+
rescue LoadError
|
31
|
+
end
|
32
|
+
|
33
|
+
begin
|
34
|
+
gem 'actionpack'
|
35
|
+
rescue LoadError
|
36
|
+
raise StandardError, "The view tests need ActionPack installed as gem to run"
|
37
|
+
end
|
38
|
+
|
39
|
+
require 'action_controller'
|
40
|
+
require "action_view/template"
|
41
|
+
begin
|
42
|
+
require 'active_support/core_ext/module/deprecation'
|
43
|
+
require 'action_dispatch/testing/test_process'
|
44
|
+
rescue LoadError
|
45
|
+
require 'action_controller/test_process'
|
46
|
+
end
|
47
|
+
require 'active_merchant/billing/integrations/action_view_helper'
|
48
|
+
|
49
|
+
ActiveMerchant::Billing::Base.mode = :test
|
50
|
+
|
51
|
+
if ENV['DEBUG_ACTIVE_MERCHANT'] == 'true'
|
52
|
+
require 'logger'
|
53
|
+
ActiveMerchant::Billing::Gateway.logger = Logger.new(STDOUT)
|
54
|
+
ActiveMerchant::Billing::Gateway.wiredump_device = STDOUT
|
55
|
+
end
|
56
|
+
|
57
|
+
# Test gateways
|
58
|
+
class SimpleTestGateway < ActiveMerchant::Billing::Gateway
|
59
|
+
end
|
60
|
+
|
61
|
+
class SubclassGateway < SimpleTestGateway
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
module ActiveMerchant
|
66
|
+
module Assertions
|
67
|
+
AssertionClass = RUBY_VERSION > '1.9' ? MiniTest::Assertion : Test::Unit::AssertionFailedError
|
68
|
+
|
69
|
+
def assert_field(field, value)
|
70
|
+
clean_backtrace do
|
71
|
+
assert_equal value, @helper.fields[field]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Allows the testing of you to check for negative assertions:
|
76
|
+
#
|
77
|
+
# # Instead of
|
78
|
+
# assert !something_that_is_false
|
79
|
+
#
|
80
|
+
# # Do this
|
81
|
+
# assert_false something_that_should_be_false
|
82
|
+
#
|
83
|
+
# An optional +msg+ parameter is available to help you debug.
|
84
|
+
def assert_false(boolean, message = nil)
|
85
|
+
message = build_message message, '<?> is not false or nil.', boolean
|
86
|
+
|
87
|
+
clean_backtrace do
|
88
|
+
assert_block message do
|
89
|
+
not boolean
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# A handy little assertion to check for a successful response:
|
95
|
+
#
|
96
|
+
# # Instead of
|
97
|
+
# assert response.success?
|
98
|
+
#
|
99
|
+
# # DRY that up with
|
100
|
+
# assert_success response
|
101
|
+
#
|
102
|
+
# A message will automatically show the inspection of the response
|
103
|
+
# object if things go afoul.
|
104
|
+
def assert_success(response, message=nil)
|
105
|
+
clean_backtrace do
|
106
|
+
assert response.success?, build_message(nil, "#{message + "\n" if message}Response expected to succeed: <?>", response)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# The negative of +assert_success+
|
111
|
+
def assert_failure(response, message=nil)
|
112
|
+
clean_backtrace do
|
113
|
+
assert !response.success?, build_message(nil, "#{message + "\n" if message}Response expected to fail: <?>", response)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def assert_valid(validateable)
|
118
|
+
clean_backtrace do
|
119
|
+
assert validateable.valid?, "Expected to be valid"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def assert_not_valid(validateable)
|
124
|
+
clean_backtrace do
|
125
|
+
assert_false validateable.valid?, "Expected to not be valid"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def assert_deprecation_warning(message, target)
|
130
|
+
target.expects(:deprecated).with(message)
|
131
|
+
yield
|
132
|
+
end
|
133
|
+
|
134
|
+
def assert_no_deprecation_warning(target)
|
135
|
+
target.expects(:deprecated).never
|
136
|
+
yield
|
137
|
+
end
|
138
|
+
|
139
|
+
private
|
140
|
+
def clean_backtrace(&block)
|
141
|
+
yield
|
142
|
+
rescue AssertionClass => e
|
143
|
+
path = File.expand_path(__FILE__)
|
144
|
+
raise AssertionClass, e.message, e.backtrace.reject { |line| File.expand_path(line) =~ /#{path}/ }
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
module Fixtures
|
149
|
+
HOME_DIR = RUBY_PLATFORM =~ /mswin32/ ? ENV['HOMEPATH'] : ENV['HOME'] unless defined?(HOME_DIR)
|
150
|
+
LOCAL_CREDENTIALS = File.join(HOME_DIR.to_s, '.active_merchant/fixtures.yml') unless defined?(LOCAL_CREDENTIALS)
|
151
|
+
DEFAULT_CREDENTIALS = File.join(File.dirname(__FILE__), 'fixtures.yml') unless defined?(DEFAULT_CREDENTIALS)
|
152
|
+
|
153
|
+
private
|
154
|
+
def credit_card(number = '4242424242424242', options = {})
|
155
|
+
defaults = {
|
156
|
+
:number => number,
|
157
|
+
:month => 9,
|
158
|
+
:year => Time.now.year + 1,
|
159
|
+
:first_name => 'Longbob',
|
160
|
+
:last_name => 'Longsen',
|
161
|
+
:verification_value => '123',
|
162
|
+
:brand => 'visa'
|
163
|
+
}.update(options)
|
164
|
+
|
165
|
+
Billing::CreditCard.new(defaults)
|
166
|
+
end
|
167
|
+
|
168
|
+
def check(options = {})
|
169
|
+
defaults = {
|
170
|
+
:name => 'Jim Smith',
|
171
|
+
:bank_name => 'Bank of Elbonia',
|
172
|
+
:routing_number => '244183602',
|
173
|
+
:account_number => '15378535',
|
174
|
+
:account_holder_type => 'personal',
|
175
|
+
:account_type => 'checking',
|
176
|
+
:number => '1'
|
177
|
+
}.update(options)
|
178
|
+
|
179
|
+
Billing::Check.new(defaults)
|
180
|
+
end
|
181
|
+
|
182
|
+
def address(options = {})
|
183
|
+
{
|
184
|
+
:name => 'Jim Smith',
|
185
|
+
:address1 => '1234 My Street',
|
186
|
+
:address2 => 'Apt 1',
|
187
|
+
:company => 'Widgets Inc',
|
188
|
+
:city => 'Ottawa',
|
189
|
+
:state => 'ON',
|
190
|
+
:zip => 'K1C2N6',
|
191
|
+
:country => 'CA',
|
192
|
+
:phone => '(555)555-5555',
|
193
|
+
:fax => '(555)555-6666'
|
194
|
+
}.update(options)
|
195
|
+
end
|
196
|
+
|
197
|
+
def all_fixtures
|
198
|
+
@@fixtures ||= load_fixtures
|
199
|
+
end
|
200
|
+
|
201
|
+
def fixtures(key)
|
202
|
+
data = all_fixtures[key] || raise(StandardError, "No fixture data was found for '#{key}'")
|
203
|
+
|
204
|
+
data.dup
|
205
|
+
end
|
206
|
+
|
207
|
+
def load_fixtures
|
208
|
+
[DEFAULT_CREDENTIALS, LOCAL_CREDENTIALS].inject({}) do |credentials, file_name|
|
209
|
+
if File.exists?(file_name)
|
210
|
+
yaml_data = YAML.load(File.read(file_name))
|
211
|
+
credentials.merge!(symbolize_keys(yaml_data))
|
212
|
+
end
|
213
|
+
credentials
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
def symbolize_keys(hash)
|
218
|
+
return unless hash.is_a?(Hash)
|
219
|
+
|
220
|
+
hash.symbolize_keys!
|
221
|
+
hash.each{|k,v| symbolize_keys(v)}
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
Test::Unit::TestCase.class_eval do
|
227
|
+
include ActiveMerchant::Billing
|
228
|
+
include ActiveMerchant::Assertions
|
229
|
+
include ActiveMerchant::Utils
|
230
|
+
include ActiveMerchant::Fixtures
|
231
|
+
end
|
232
|
+
|
233
|
+
module ActionViewHelperTestHelper
|
234
|
+
|
235
|
+
def self.included(base)
|
236
|
+
base.send(:include, ActiveMerchant::Billing::Integrations::ActionViewHelper)
|
237
|
+
base.send(:include, ActionView::Helpers::FormHelper)
|
238
|
+
base.send(:include, ActionView::Helpers::FormTagHelper)
|
239
|
+
base.send(:include, ActionView::Helpers::UrlHelper)
|
240
|
+
base.send(:include, ActionView::Helpers::TagHelper)
|
241
|
+
base.send(:include, ActionView::Helpers::CaptureHelper)
|
242
|
+
base.send(:include, ActionView::Helpers::TextHelper)
|
243
|
+
base.send(:attr_accessor, :output_buffer)
|
244
|
+
end
|
245
|
+
|
246
|
+
def setup
|
247
|
+
@controller = Class.new do
|
248
|
+
attr_reader :url_for_options
|
249
|
+
def url_for(options, *parameters_for_method_reference)
|
250
|
+
@url_for_options = options
|
251
|
+
end
|
252
|
+
end
|
253
|
+
@controller = @controller.new
|
254
|
+
@output_buffer = ''
|
255
|
+
end
|
256
|
+
|
257
|
+
protected
|
258
|
+
def protect_against_forgery?
|
259
|
+
false
|
260
|
+
end
|
261
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_merchant_allpay
|
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
|
- xwaynec
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemerchant
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.9.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.9.4
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mocha
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.13.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.13.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.3.14
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.3.14
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: thor
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
27
83
|
description: A rails plugin to add active_merchant patch for Taiwan payment
|
28
84
|
email:
|
29
85
|
- xwaynec@gmail.com
|
@@ -31,7 +87,7 @@ executables: []
|
|
31
87
|
extensions: []
|
32
88
|
extra_rdoc_files: []
|
33
89
|
files:
|
34
|
-
- .gitignore
|
90
|
+
- ".gitignore"
|
35
91
|
- Gemfile
|
36
92
|
- LICENSE.txt
|
37
93
|
- README.md
|
@@ -42,6 +98,10 @@ files:
|
|
42
98
|
- lib/active_merchant/billing/integrations/allpay/notification.rb
|
43
99
|
- lib/active_merchant_allpay.rb
|
44
100
|
- lib/active_merchant_allpay/version.rb
|
101
|
+
- test/unit/integrations/allpay_module_test.rb
|
102
|
+
- test/unit/integrations/helpers/allpay_helper_test.rb
|
103
|
+
- test/unit/integrations/notifications/allpay_notification_test.rb
|
104
|
+
- test/unit/test_helper.rb
|
45
105
|
homepage: https://github.com/xwaynec/active_merchant_allpay
|
46
106
|
licenses:
|
47
107
|
- MIT
|
@@ -52,19 +112,22 @@ require_paths:
|
|
52
112
|
- lib
|
53
113
|
required_ruby_version: !ruby/object:Gem::Requirement
|
54
114
|
requirements:
|
55
|
-
- -
|
115
|
+
- - ">="
|
56
116
|
- !ruby/object:Gem::Version
|
57
117
|
version: '0'
|
58
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
119
|
requirements:
|
60
|
-
- -
|
120
|
+
- - ">="
|
61
121
|
- !ruby/object:Gem::Version
|
62
122
|
version: '0'
|
63
123
|
requirements: []
|
64
124
|
rubyforge_project:
|
65
|
-
rubygems_version: 2.
|
125
|
+
rubygems_version: 2.2.2
|
66
126
|
signing_key:
|
67
127
|
specification_version: 4
|
68
128
|
summary: A rails plugin to add active_merchant patch for Taiwan payment
|
69
|
-
test_files:
|
70
|
-
|
129
|
+
test_files:
|
130
|
+
- test/unit/integrations/allpay_module_test.rb
|
131
|
+
- test/unit/integrations/helpers/allpay_helper_test.rb
|
132
|
+
- test/unit/integrations/notifications/allpay_notification_test.rb
|
133
|
+
- test/unit/test_helper.rb
|