active_merchant_pay2go 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2171a5bbc3b4804097f7d1a824fcd32dcbb748b
4
- data.tar.gz: ee36649441c2784b5550760cd076cad9106c901b
3
+ metadata.gz: 0d0ec805a54b559acacc028454d76d5af1188c1a
4
+ data.tar.gz: fea441eaafed8b3bbb849f6385240b65f4af972a
5
5
  SHA512:
6
- metadata.gz: 5b13613685a63d42879dda706fff8b291eab608d7e026fc1e4a2fbadbe8dc473c25b06d71e68988401124066d51e142db1380998181df14ae539e95fbd109073
7
- data.tar.gz: b95c85dd22d8badd27419f27a47fc18ca514c972d086e78d5d8d57e80f343e840f94e5e0edd31661129ac489fe8941bb637c2a785aca1213a62e0c70943b9b26
6
+ metadata.gz: d9d4501b11c1a90c316aaadd9b305a63920281c963be06420ab44bd4ff3ef02d05ba7c702af680bd40375eb476439d5745c34611bb447c2568db3b8b18345fc3
7
+ data.tar.gz: 766853f09055aba0ecb6ced5a22528db6b203640bceacd3cf8d0e4d979e30342eec15b74cff39a336854b84ef8f5b25f3705dfb871a3fb83004e8234a2070b8a
@@ -1,3 +1,3 @@
1
1
  module ActiveMerchantPay2go
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -8,7 +8,6 @@ require 'uri'
8
8
  module OffsitePayments
9
9
  module Integrations
10
10
  autoload :Pay2go, 'offsite_payments/integrations/pay2go'
11
- autoload :Pay2goPeriod, 'offsite_payments/integrations/pay2go_period'
12
11
  end
13
12
  end
14
13
 
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ require 'digest'
3
+
4
+ module OffsitePayments #:nodoc:
5
+ module Integrations #:nodoc:
6
+ module Pay2go
7
+ class Helper < OffsitePayments::Helper
8
+ FIELDS = %w(
9
+ MerchantID LangType MerchantOrderNo Amt ItemDesc TradeLimit ExpireDate ReturnURL NotifyURL CustomerURL ClientBackURL Email EmailModify LoginType OrderComment CREDIT CreditRed InstFlag UNIONPAY WEBATM VACC CVS BARCODE CUSTOM TokenTerm
10
+ )
11
+
12
+ FIELDS.each do |field|
13
+ mapping field.underscore.to_sym, field
14
+ end
15
+ mapping :account, 'MerchantID' # AM common
16
+ mapping :amount, 'Amt' # AM common
17
+
18
+ def initialize(order, account, options = {})
19
+ super
20
+ add_field 'Version', OffsitePayments::Integrations::Pay2go::VERSION
21
+ add_field 'RespondType', OffsitePayments::Integrations::Pay2go::RESPOND_TYPE
22
+ OffsitePayments::Integrations::Pay2go::CONFIG.each do |field|
23
+ add_field field, OffsitePayments::Integrations::Pay2go.send(field.underscore.to_sym)
24
+ end
25
+ end
26
+ def time_stamp(date)
27
+ add_field 'TimeStamp', date.to_time.to_i
28
+ end
29
+ def encrypted_data
30
+ raw_data = URI.encode_www_form OffsitePayments::Integrations::Pay2go::CHECK_VALUE_FIELDS.sort.map { |field|
31
+ [field, @fields[field]]
32
+ }
33
+
34
+ hash_raw_data = "HashKey=#{OffsitePayments::Integrations::Pay2go.hash_key}&#{raw_data}&HashIV=#{OffsitePayments::Integrations::Pay2go.hash_iv}"
35
+ add_field 'CheckValue', Digest::SHA256.hexdigest(hash_raw_data).upcase
36
+ end
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+ require 'digest'
3
+
4
+ module OffsitePayments #:nodoc:
5
+ module Integrations #:nodoc:
6
+ module Pay2go
7
+ class Notification < OffsitePayments::Notification
8
+ PARAMS_FIELDS = %w(
9
+ Status Message MerchantID Amt TradeNo MerchantOrderNo PaymentType RespondType CheckCode PayTime IP
10
+ EscrowBank TokenUseStatus RespondCode Auth Card6No Card4No Inst InstFirst InstEach ECI PayBankCode
11
+ PayerAccount5Code CodeNo BankCode Barcode_1 Barcode_2 Barcode_3 ExpireDate CheckCode
12
+ )
13
+
14
+ PARAMS_FIELDS.each do |field|
15
+ define_method field.underscore do
16
+ @params[field]
17
+ end
18
+ end
19
+
20
+ def success?
21
+ status == 'SUCCESS'
22
+ end
23
+
24
+ # TODO 使用查詢功能實作 acknowledge
25
+ # Pay2go 沒有遠端驗證功能,
26
+ # 而以 checksum_ok? 代替
27
+ def acknowledge
28
+ checksum_ok?
29
+ end
30
+
31
+ def complete?
32
+ %w(SUCCESS CUSTOM).include? status
33
+ end
34
+
35
+ def checksum_ok?
36
+ raw_data = URI.encode_www_form OffsitePayments::Integrations::Pay2go::CHECK_CODE_FIELDS.sort.map { |field|
37
+ [field, @params[field]]
38
+ }
39
+
40
+ hash_raw_data = "HashIV=#{OffsitePayments::Integrations::Pay2go.hash_iv}&#{raw_data}&HashKey=#{OffsitePayments::Integrations::Pay2go.hash_key}"
41
+ Digest::SHA256.hexdigest(hash_raw_data).upcase == check_code
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'digest'
3
+ require File.dirname(__FILE__) + '/pay2go/helper.rb'
4
+ require File.dirname(__FILE__) + '/pay2go/notification.rb'
3
5
 
4
6
  module OffsitePayments #:nodoc:
5
7
  module Integrations #:nodoc:
@@ -45,77 +47,6 @@ module OffsitePayments #:nodoc:
45
47
  yield(self)
46
48
  end
47
49
 
48
- class Helper < OffsitePayments::Helper
49
- FIELDS = %w(
50
- MerchantID LangType MerchantOrderNo Amt ItemDesc TradeLimit ExpireDate ReturnURL NotifyURL CustomerURL ClientBackURL Email EmailModify LoginType OrderComment CREDIT CreditRed InstFlag UNIONPAY WEBATM VACC CVS BARCODE CUSTOM TokenTerm
51
- )
52
-
53
- FIELDS.each do |field|
54
- mapping field.underscore.to_sym, field
55
- end
56
- mapping :account, 'MerchantID' # AM common
57
- mapping :amount, 'Amt' # AM common
58
-
59
- def initialize(order, account, options = {})
60
- super
61
- add_field 'Version', OffsitePayments::Integrations::Pay2go::VERSION
62
- add_field 'RespondType', OffsitePayments::Integrations::Pay2go::RESPOND_TYPE
63
- OffsitePayments::Integrations::Pay2go::CONFIG.each do |field|
64
- add_field field, OffsitePayments::Integrations::Pay2go.send(field.underscore.to_sym)
65
- end
66
- end
67
-
68
- def time_stamp(date)
69
- add_field 'TimeStamp', date.to_time.to_i
70
- end
71
-
72
- def encrypted_data
73
- raw_data = URI.encode_www_form OffsitePayments::Integrations::Pay2go::CHECK_VALUE_FIELDS.sort.map { |field|
74
- [field, @fields[field]]
75
- }
76
-
77
- hash_raw_data = "HashKey=#{OffsitePayments::Integrations::Pay2go.hash_key}&#{raw_data}&HashIV=#{OffsitePayments::Integrations::Pay2go.hash_iv}"
78
- add_field 'CheckValue', Digest::SHA256.hexdigest(hash_raw_data).upcase
79
- end
80
- end
81
-
82
- class Notification < OffsitePayments::Notification
83
- PARAMS_FIELDS = %w(
84
- Status Message MerchantID Amt TradeNo MerchantOrderNo PaymentType RespondType CheckCode PayTime IP
85
- EscrowBank TokenUseStatus RespondCode Auth Card6No Card4No Inst InstFirst InstEach ECI PayBankCode
86
- PayerAccount5Code CodeNo BankCode Barcode_1 Barcode_2 Barcode_3 ExpireDate CheckCode
87
- )
88
-
89
- PARAMS_FIELDS.each do |field|
90
- define_method field.underscore do
91
- @params[field]
92
- end
93
- end
94
-
95
- def success?
96
- status == 'SUCCESS'
97
- end
98
-
99
- # TODO 使用查詢功能實作 acknowledge
100
- # Pay2go 沒有遠端驗證功能,
101
- # 而以 checksum_ok? 代替
102
- def acknowledge
103
- checksum_ok?
104
- end
105
-
106
- def complete?
107
- %w(SUCCESS CUSTOM).include? status
108
- end
109
-
110
- def checksum_ok?
111
- raw_data = URI.encode_www_form OffsitePayments::Integrations::Pay2go::CHECK_CODE_FIELDS.sort.map { |field|
112
- [field, @params[field]]
113
- }
114
-
115
- hash_raw_data = "HashIV=#{OffsitePayments::Integrations::Pay2go.hash_iv}&#{raw_data}&HashKey=#{OffsitePayments::Integrations::Pay2go.hash_key}"
116
- Digest::SHA256.hexdigest(hash_raw_data).upcase == check_code
117
- end
118
- end
119
50
  end
120
51
  end
121
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_merchant_pay2go
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary
@@ -109,7 +109,8 @@ files:
109
109
  - lib/generators/pay2go/templates/README
110
110
  - lib/generators/pay2go/templates/pay2go.rb
111
111
  - lib/offsite_payments/integrations/pay2go.rb
112
- - lib/offsite_payments/integrations/pay2go_period.rb
112
+ - lib/offsite_payments/integrations/pay2go/helper.rb
113
+ - lib/offsite_payments/integrations/pay2go/notification.rb
113
114
  homepage: https://github.com/imgarylai/active_merchant_pay2go
114
115
  licenses:
115
116
  - MIT
@@ -1,112 +0,0 @@
1
- # encoding: utf-8
2
- require 'digest'
3
-
4
- module OffsitePayments #:nodoc:
5
- module Integrations #:nodoc:
6
- module Pay2goPeriod
7
-
8
- VERSION = '1.0'
9
- RESPOND_TYPE = 'String'
10
- CHECK_VALUE_FIELDS = %w(PeriodAmt MerchantID MerchantOrderNo TimeStamp PeriodType)
11
- CHECK_CODE_FIELDS = %w(PeriodType MerchantID MerchantOrderNo)
12
-
13
- mattr_accessor :service_url
14
- mattr_accessor :merchant_id
15
- mattr_accessor :hash_key
16
- mattr_accessor :hash_iv
17
- mattr_accessor :debug
18
-
19
- def self.service_url
20
- mode = ActiveMerchant::Billing::Base.mode
21
- case mode
22
- when :production
23
- 'https://api.pay2go.com/API/PeriodAPI'
24
- when :development
25
- 'https://capi.pay2go.com/API/PeriodAPI'
26
- when :test
27
- 'https://capi.pay2go.com/API/PeriodAPI'
28
- else
29
- raise StandardError, "Integration mode set to an invalid value: #{mode}"
30
- end
31
- end
32
-
33
- def self.notification(post)
34
- Notification.new(post)
35
- end
36
-
37
- def self.setup
38
- yield(self)
39
- end
40
-
41
- class Helper < OffsitePayments::Helper
42
- FIELDS = %w(
43
- MerchantID MerchantOrderNo PeriodAmt ProdDesc PeriodAmtMode PeriodType PeriodPoint PeriodStartType
44
- PeriodTimes ReturnURL ProDetail PeriodMemo PaymentInfo OrderInfo InvoiceInfo NotifyURL
45
- )
46
-
47
- FIELDS.each do |field|
48
- mapping field.underscore.to_sym, field
49
- end
50
- mapping :account, 'MerchantID' # AM common
51
-
52
- def initialize(order, account, options = {})
53
- super
54
- add_field 'MerchantID', OffsitePayments::Integrations::Pay2go.merchant_id
55
- add_field 'Version', OffsitePayments::Integrations::Pay2goPeriod::VERSION
56
- add_field 'RespondType', OffsitePayments::Integrations::Pay2goPeriod::RESPOND_TYPE
57
- end
58
-
59
- def time_stamp(date)
60
- add_field 'TimeStamp', date.to_time.to_i
61
- end
62
-
63
- def encrypted_data
64
- raw_data = URI.encode_www_form OffsitePayments::Integrations::Pay2goPeriod::CHECK_VALUE_FIELDS.sort.map { |field|
65
- [field, @fields[field]]
66
- }
67
-
68
- hash_raw_data = "HashKey=#{OffsitePayments::Integrations::Pay2go.hash_key}&#{raw_data}&HashIV=#{OffsitePayments::Integrations::Pay2go.hash_iv}"
69
- add_field 'CheckValue', Digest::SHA256.hexdigest(hash_raw_data).upcase
70
- end
71
-
72
- end
73
-
74
- class Notification < OffsitePayments::Notification
75
- PARAMS_FIELDS = %w(
76
- Status Message MerchantID MerchantOrderNo PeriodType authDate authTime dateArray PeriodTotalAmt
77
- PeriodFirstAmt PeriodAmt CheckCode
78
- )
79
-
80
- PARAMS_FIELDS.each do |field|
81
- define_method field.underscore do
82
- @params[field]
83
- end
84
- end
85
-
86
- def success?
87
- status == 'SUCCESS'
88
- end
89
-
90
- # TODO 使用查詢功能實作 acknowledge
91
- # Pay2go 沒有遠端驗證功能,
92
- # 而以 checksum_ok? 代替
93
- def acknowledge
94
- checksum_ok?
95
- end
96
-
97
- def complete?
98
- %w(SUCCESS CUSTOM).include? status
99
- end
100
-
101
- def checksum_ok?
102
- raw_data = URI.encode_www_form OffsitePayments::Integrations::Pay2goPeriod::CHECK_CODE_FIELDS.sort.map { |field|
103
- [field, @params[field]]
104
- }
105
-
106
- hash_raw_data = "HashIV=#{OffsitePayments::Integrations::Pay2go.hash_iv}&#{raw_data}&HashKey=#{OffsitePayments::Integrations::Pay2go.hash_key}"
107
- Digest::SHA256.hexdigest(hash_raw_data).upcase == check_code
108
- end
109
- end
110
- end
111
- end
112
- end