activemerchant 1.42.2 → 1.42.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG +32 -0
- data/CONTRIBUTORS +12 -0
- data/README.md +3 -0
- data/lib/active_merchant/billing/base.rb +9 -2
- data/lib/active_merchant/billing/credit_card_methods.rb +1 -1
- data/lib/active_merchant/billing/gateway.rb +1 -1
- data/lib/active_merchant/billing/gateways/authorize_net.rb +3 -2
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +8 -8
- data/lib/active_merchant/billing/gateways/balanced.rb +7 -2
- data/lib/active_merchant/billing/gateways/beanstream.rb +1 -1
- data/lib/active_merchant/billing/gateways/bogus.rb +32 -22
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +124 -39
- data/lib/active_merchant/billing/gateways/cyber_source.rb +2 -2
- data/lib/active_merchant/billing/gateways/litle.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +2 -2
- data/lib/active_merchant/billing/gateways/moneris.rb +1 -1
- data/lib/active_merchant/billing/gateways/moneris_us.rb +1 -1
- data/lib/active_merchant/billing/gateways/nab_transact.rb +3 -1
- data/lib/active_merchant/billing/gateways/netpay.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_junction.rb +7 -7
- data/lib/active_merchant/billing/gateways/payex.rb +402 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +41 -11
- data/lib/active_merchant/billing/gateways/payment_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/paymill.rb +55 -3
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
- data/lib/active_merchant/billing/gateways/payscout.rb +171 -0
- data/lib/active_merchant/billing/gateways/pin.rb +1 -1
- data/lib/active_merchant/billing/gateways/realex.rb +1 -1
- data/lib/active_merchant/billing/gateways/redsys.rb +1 -1
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +194 -0
- data/lib/active_merchant/billing/gateways/stripe.rb +23 -25
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +26 -15
- data/lib/active_merchant/billing/gateways/webpay.rb +27 -11
- data/lib/active_merchant/billing/gateways/wirecard.rb +1 -1
- data/lib/active_merchant/billing/integrations/bit_pay/helper.rb +1 -1
- data/lib/active_merchant/billing/integrations/ipay88.rb +4 -0
- data/lib/active_merchant/billing/integrations/ipay88/helper.rb +1 -1
- data/lib/active_merchant/billing/integrations/ipay88/notification.rb +103 -0
- data/lib/active_merchant/billing/integrations/ipay88/return.rb +8 -74
- data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +1 -1
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +1 -1
- data/lib/active_merchant/billing/integrations/payu_in.rb +2 -9
- data/lib/active_merchant/billing/integrations/payu_in/helper.rb +15 -13
- data/lib/active_merchant/billing/integrations/payu_in/notification.rb +9 -20
- data/lib/active_merchant/billing/integrations/payu_in_paisa/helper.rb +1 -1
- data/lib/active_merchant/billing/integrations/payu_in_paisa/notification.rb +0 -10
- data/lib/active_merchant/billing/integrations/payu_in_paisa/return.rb +1 -1
- data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +1 -1
- data/lib/active_merchant/billing/integrations/valitor/helper.rb +3 -3
- data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +2 -2
- data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +1 -1
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page.rb +1 -1
- data/lib/active_merchant/billing/integrations/world_pay/helper.rb +2 -2
- data/lib/active_merchant/version.rb +1 -1
- metadata +7 -3
- metadata.gz.sig +0 -0
@@ -5,88 +5,22 @@ module ActiveMerchant #:nodoc:
|
|
5
5
|
module Integrations #:nodoc:
|
6
6
|
module Ipay88
|
7
7
|
class Return < ActiveMerchant::Billing::Integrations::Return
|
8
|
-
include ActiveMerchant::PostsData
|
9
8
|
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def payment
|
15
|
-
params["PaymentId"].to_i
|
16
|
-
end
|
17
|
-
|
18
|
-
def order
|
19
|
-
params["RefNo"]
|
20
|
-
end
|
21
|
-
|
22
|
-
def amount
|
23
|
-
params["Amount"]
|
24
|
-
end
|
25
|
-
|
26
|
-
def currency
|
27
|
-
params["Currency"]
|
28
|
-
end
|
29
|
-
|
30
|
-
def remark
|
31
|
-
params["Remark"]
|
32
|
-
end
|
33
|
-
|
34
|
-
def transaction
|
35
|
-
params["TransId"]
|
36
|
-
end
|
37
|
-
|
38
|
-
def auth_code
|
39
|
-
params["AuthCode"]
|
40
|
-
end
|
41
|
-
|
42
|
-
def status
|
43
|
-
params["Status"]
|
44
|
-
end
|
45
|
-
|
46
|
-
def error
|
47
|
-
params["ErrDesc"]
|
48
|
-
end
|
49
|
-
|
50
|
-
def signature
|
51
|
-
params["Signature"]
|
52
|
-
end
|
53
|
-
|
54
|
-
def secure?
|
55
|
-
self.generated_signature == self.signature
|
9
|
+
def initialize(query_string, options = {})
|
10
|
+
super
|
11
|
+
@notification = Notification.new(query_string, options)
|
56
12
|
end
|
57
13
|
|
58
14
|
def success?
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
protected
|
63
|
-
|
64
|
-
def generated_signature
|
65
|
-
Helper.sign(self.sig_components)
|
66
|
-
end
|
67
|
-
|
68
|
-
def sig_components
|
69
|
-
components = [@options[:credential2]]
|
70
|
-
[:account, :payment, :order, :amount_in_cents, :currency, :status].each do |i|
|
71
|
-
components << self.send(i)
|
72
|
-
end
|
73
|
-
components.join
|
15
|
+
params["Status"] == "1"
|
74
16
|
end
|
75
17
|
|
76
|
-
def
|
77
|
-
|
78
|
-
params = parameterize(data)
|
79
|
-
ssl_post Ipay88.service_url, params, { "Content-Length" => params.size.to_s, "User-Agent" => "Active Merchant -- http://activemerchant.org" }
|
18
|
+
def cancelled?
|
19
|
+
params["ErrDesc"] == 'Customer Cancel Transaction'
|
80
20
|
end
|
81
21
|
|
82
|
-
|
83
|
-
|
84
|
-
def parameterize(params)
|
85
|
-
params.reject { |k, v| v.blank? }.keys.sort.collect { |key| "#{key}=#{CGI.escape(params[key].to_s)}" }.join("&")
|
86
|
-
end
|
87
|
-
|
88
|
-
def amount_in_cents
|
89
|
-
@amount_in_cents ||= (self.amount || "").gsub(/[.,]/, "")
|
22
|
+
def message
|
23
|
+
params["ErrDesc"]
|
90
24
|
end
|
91
25
|
end
|
92
26
|
end
|
@@ -69,7 +69,7 @@ module ActiveMerchant #:nodoc:
|
|
69
69
|
if params.has_key?(:phone)
|
70
70
|
phone = params.delete(:phone).to_s
|
71
71
|
|
72
|
-
#
|
72
|
+
# Wipe all non digits
|
73
73
|
phone.gsub!(/\D+/, '')
|
74
74
|
|
75
75
|
if ['US', 'CA'].include?(country_code) && phone =~ /(\d{3})(\d{3})(\d{4})$/
|
@@ -27,15 +27,8 @@ module ActiveMerchant #:nodoc:
|
|
27
27
|
Return.new(post, options)
|
28
28
|
end
|
29
29
|
|
30
|
-
def self.checksum(merchant_id, secret_key,
|
31
|
-
|
32
|
-
options ||= {}
|
33
|
-
payload = if options[:reverse] then
|
34
|
-
payload_items.dup.push( merchant_id || "" ).unshift( secret_key || "" ).collect{ |x| x.to_s }.join("|")
|
35
|
-
else
|
36
|
-
payload_items.dup.unshift( merchant_id || "" ).push( secret_key || "" ).collect{ |x| x.to_s }.join("|")
|
37
|
-
end
|
38
|
-
Digest::SHA512.hexdigest( payload )
|
30
|
+
def self.checksum(merchant_id, secret_key, payload_items )
|
31
|
+
Digest::SHA512.hexdigest([merchant_id, *payload_items, secret_key].join("|"))
|
39
32
|
end
|
40
33
|
end
|
41
34
|
end
|
@@ -4,10 +4,13 @@ module ActiveMerchant #:nodoc:
|
|
4
4
|
module PayuIn
|
5
5
|
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
6
6
|
|
7
|
+
CHECKSUM_FIELDS = [ 'txnid', 'amount', 'productinfo', 'firstname', 'email', 'udf1', 'udf2', 'udf3', 'udf4',
|
8
|
+
'udf5', 'udf6', 'udf7', 'udf8', 'udf9', 'udf10']
|
9
|
+
|
7
10
|
mapping :amount, 'amount'
|
8
11
|
mapping :account, 'key'
|
9
12
|
mapping :order, 'txnid'
|
10
|
-
mapping :
|
13
|
+
mapping :description, 'productinfo'
|
11
14
|
|
12
15
|
mapping :customer, :first_name => 'firstname',
|
13
16
|
:last_name => 'lastname',
|
@@ -44,26 +47,25 @@ module ActiveMerchant #:nodoc:
|
|
44
47
|
|
45
48
|
def initialize(order, account, options = {})
|
46
49
|
super
|
50
|
+
@options = options
|
47
51
|
self.pg = 'CC'
|
48
52
|
end
|
49
53
|
|
50
54
|
def form_fields
|
55
|
+
sanitize_fields
|
51
56
|
@fields.merge(mappings[:checksum] => generate_checksum)
|
52
57
|
end
|
53
58
|
|
54
|
-
def generate_checksum
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
end
|
59
|
+
def generate_checksum
|
60
|
+
checksum_payload_items = CHECKSUM_FIELDS.map { |field| @fields[field] }
|
61
|
+
|
62
|
+
PayuIn.checksum(@fields["key"], @options[:credential2], checksum_payload_items )
|
63
|
+
end
|
64
|
+
|
65
|
+
def sanitize_fields
|
66
|
+
['address1', 'address2', 'city', 'state', 'country', 'productinfo', 'email', 'phone'].each do |field|
|
67
|
+
@fields[field].gsub!(/[^a-zA-Z0-9\-_@\/\s.]/, '') if @fields[field]
|
64
68
|
end
|
65
|
-
checksum_payload_items.push( options )
|
66
|
-
PayuIn.checksum(@fields["key"], @fields["productinfo"], *checksum_payload_items )
|
67
69
|
end
|
68
70
|
|
69
71
|
end
|
@@ -15,18 +15,10 @@ module ActiveMerchant #:nodoc:
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def status
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
case transaction_status.downcase
|
23
|
-
when 'success' then 'Completed'
|
24
|
-
when 'failure' then 'Failed'
|
25
|
-
when 'pending' then 'Pending'
|
26
|
-
end
|
27
|
-
end
|
28
|
-
else
|
29
|
-
'Tampered'
|
18
|
+
case transaction_status.downcase
|
19
|
+
when 'success' then 'Completed'
|
20
|
+
when 'failure' then 'Failed'
|
21
|
+
when 'pending' then 'Pending'
|
30
22
|
end
|
31
23
|
end
|
32
24
|
|
@@ -36,7 +28,7 @@ module ActiveMerchant #:nodoc:
|
|
36
28
|
|
37
29
|
# Order amount should be equal to gross - discount
|
38
30
|
def amount_ok?( order_amount, order_discount = BigDecimal.new( '0.0' ) )
|
39
|
-
BigDecimal.new( gross ) == order_amount && BigDecimal.new( discount ) == order_discount
|
31
|
+
BigDecimal.new( gross ) == order_amount && BigDecimal.new( discount.to_s ) == order_discount
|
40
32
|
end
|
41
33
|
|
42
34
|
# Status of transaction return from the PayU. List of possible values:
|
@@ -129,10 +121,7 @@ module ActiveMerchant #:nodoc:
|
|
129
121
|
end
|
130
122
|
|
131
123
|
def user_defined
|
132
|
-
|
133
|
-
@user_defined = []
|
134
|
-
10.times{ |i| @user_defined.push( params[ "udf#{i+1}" ] ) }
|
135
|
-
@user_defined
|
124
|
+
@user_defined ||= 10.times.map { |i| params["udf#{i + 1}"] }
|
136
125
|
end
|
137
126
|
|
138
127
|
def checksum
|
@@ -148,9 +137,9 @@ module ActiveMerchant #:nodoc:
|
|
148
137
|
end
|
149
138
|
|
150
139
|
def checksum_ok?
|
151
|
-
|
152
|
-
|
153
|
-
unless
|
140
|
+
checksum_fields = [transaction_status, *user_defined.reverse, customer_email, customer_first_name, product_info, gross, invoice]
|
141
|
+
|
142
|
+
unless Digest::SHA512.hexdigest([@secret_key, *checksum_fields, @merchant_id].join("|")) == checksum
|
154
143
|
@message = 'Return checksum not matching the data provided'
|
155
144
|
return false
|
156
145
|
end
|
@@ -6,16 +6,6 @@ module ActiveMerchant
|
|
6
6
|
def item_id
|
7
7
|
params['udf2']
|
8
8
|
end
|
9
|
-
|
10
|
-
def checksum_ok?
|
11
|
-
fields = user_defined.reverse.push( customer_email, customer_first_name, product_info, gross, invoice, :reverse => true )
|
12
|
-
fields.unshift( transaction_status )
|
13
|
-
unless PayuIn.checksum(@merchant_id, @secret_key, *fields ) == checksum
|
14
|
-
@message = 'Return checksum not matching the data provided'
|
15
|
-
return false
|
16
|
-
end
|
17
|
-
true
|
18
|
-
end
|
19
9
|
end
|
20
10
|
end
|
21
11
|
end
|
@@ -56,7 +56,7 @@ module ActiveMerchant #:nodoc:
|
|
56
56
|
end
|
57
57
|
|
58
58
|
# Uses Pass Through Product Parameters to pass in lineitems.
|
59
|
-
# (must mark
|
59
|
+
# (must mark tangible sales as shipped to settle the transaction)
|
60
60
|
def line_item(params = {})
|
61
61
|
add_field('mode', '2CO')
|
62
62
|
(max_existing_line_item_id = form_fields.keys.map do |key|
|
@@ -50,7 +50,7 @@ module ActiveMerchant #:nodoc:
|
|
50
50
|
requires!(options, :amount, :description)
|
51
51
|
options.assert_valid_keys([:description, :quantity, :amount, :discount])
|
52
52
|
|
53
|
-
add_field("Vara_#{id}_Verd", format_amount(options[:amount]))
|
53
|
+
add_field("Vara_#{id}_Verd", format_amount(options[:amount], @fields[mappings[:currency]]))
|
54
54
|
add_field("Vara_#{id}_Fjoldi", options[:quantity] || "1")
|
55
55
|
|
56
56
|
add_field("Vara_#{id}_Lysing", options[:description]) if options[:description]
|
@@ -76,8 +76,8 @@ module ActiveMerchant #:nodoc:
|
|
76
76
|
@fields.merge('RafraenUndirskrift' => signature)
|
77
77
|
end
|
78
78
|
|
79
|
-
def format_amount(amount)
|
80
|
-
amount.to_f.round
|
79
|
+
def format_amount(amount, currency)
|
80
|
+
Gateway::CURRENCIES_WITHOUT_FRACTIONS.include?(currency) ? amount.to_f.round : sprintf("%.2f", amount)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
@@ -36,7 +36,7 @@ module ActiveMerchant #:nodoc:
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def gross
|
39
|
-
"%0.2f" % params['Upphaed'].to_s
|
39
|
+
"%0.2f" % params['Upphaed'].to_s.sub(',', '.')
|
40
40
|
end
|
41
41
|
|
42
42
|
def card_type
|
@@ -94,4 +94,4 @@ module ActiveMerchant #:nodoc:
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
97
|
-
end
|
97
|
+
end
|
@@ -40,7 +40,7 @@ module ActiveMerchant #:nodoc:
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
#
|
43
|
+
# Acknowledges the payment. If the authcodes match, returns true.
|
44
44
|
def acknowledge(authcode = nil)
|
45
45
|
return_authcode = [params["ORDER_NUMBER"], params["TIMESTAMP"], params["PAID"], params["METHOD"], authcode].join("|")
|
46
46
|
Digest::MD5.hexdigest(return_authcode).upcase == params["RETURN_AUTHCODE"]
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* The Plugin is provided by WDCEE free of charge for it's customers and must be used for the purpose of WDCEE's payment platform
|
8
8
|
* integration only. It explicitly is not part of the general contract between WDCEE and it's customer. The plugin has successfully been tested
|
9
9
|
* under specific circumstances which are defined as the shopsystem's standard configuration (vendor's delivery state). The Customer is
|
10
|
-
* responsible for testing the plugin's functionality before putting it into production
|
10
|
+
* responsible for testing the plugin's functionality before putting it into production environment.
|
11
11
|
* The customer uses the plugin at own risk. WDCEE does not guarantee it's full functionality neither does WDCEE assume liability for any
|
12
12
|
* disadvantage related to the use of this plugin. By installing the plugin into the shopsystem the customer agrees to the terms of use.
|
13
13
|
* Please do not use this plugin if you do not agree to the terms of use!
|
@@ -58,7 +58,7 @@ module ActiveMerchant #:nodoc:
|
|
58
58
|
end
|
59
59
|
|
60
60
|
# Support for a MD5 hash of selected fields to prevent tampering
|
61
|
-
# For
|
61
|
+
# For further information read the tech note at the address below:
|
62
62
|
# http://support.worldpay.com/kb/integration_guides/junior/integration/help/tech_notes/sjig_tn_009.html
|
63
63
|
def encrypt(secret, fields = [:amount, :currency, :account, :order])
|
64
64
|
signature_fields = fields.collect{ |field| mappings[field] }
|
@@ -98,4 +98,4 @@ module ActiveMerchant #:nodoc:
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
101
|
-
end
|
101
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activemerchant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.42.
|
4
|
+
version: 1.42.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Luetke
|
@@ -38,7 +38,7 @@ cert_chain:
|
|
38
38
|
U1BPVm5oYkZKM3ZTWFkxdWxQL1I2WFc5dm53CjZra1FpMmZIaFUyMHVnTXpw
|
39
39
|
ODgxRWl4citUakMwUnZVZXJMRzdnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUt
|
40
40
|
LS0tLQo=
|
41
|
-
date: 2013-
|
41
|
+
date: 2013-12-18 00:00:00.000000000 Z
|
42
42
|
dependencies:
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: activesupport
|
@@ -318,6 +318,7 @@ files:
|
|
318
318
|
- lib/active_merchant/billing/gateways/pay_junction.rb
|
319
319
|
- lib/active_merchant/billing/gateways/pay_secure.rb
|
320
320
|
- lib/active_merchant/billing/gateways/paybox_direct.rb
|
321
|
+
- lib/active_merchant/billing/gateways/payex.rb
|
321
322
|
- lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb
|
322
323
|
- lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb
|
323
324
|
- lib/active_merchant/billing/gateways/payflow/payflow_response.rb
|
@@ -335,6 +336,7 @@ files:
|
|
335
336
|
- lib/active_merchant/billing/gateways/paypal_digital_goods.rb
|
336
337
|
- lib/active_merchant/billing/gateways/paypal_express.rb
|
337
338
|
- lib/active_merchant/billing/gateways/paypal_express_common.rb
|
339
|
+
- lib/active_merchant/billing/gateways/payscout.rb
|
338
340
|
- lib/active_merchant/billing/gateways/paystation.rb
|
339
341
|
- lib/active_merchant/billing/gateways/payway.rb
|
340
342
|
- lib/active_merchant/billing/gateways/pin.rb
|
@@ -359,6 +361,7 @@ files:
|
|
359
361
|
- lib/active_merchant/billing/gateways/secure_pay_tech.rb
|
360
362
|
- lib/active_merchant/billing/gateways/skip_jack.rb
|
361
363
|
- lib/active_merchant/billing/gateways/smart_ps.rb
|
364
|
+
- lib/active_merchant/billing/gateways/so_easy_pay.rb
|
362
365
|
- lib/active_merchant/billing/gateways/spreedly_core.rb
|
363
366
|
- lib/active_merchant/billing/gateways/stripe.rb
|
364
367
|
- lib/active_merchant/billing/gateways/swipe_checkout.rb
|
@@ -442,6 +445,7 @@ files:
|
|
442
445
|
- lib/active_merchant/billing/integrations/hi_trust/return.rb
|
443
446
|
- lib/active_merchant/billing/integrations/hi_trust.rb
|
444
447
|
- lib/active_merchant/billing/integrations/ipay88/helper.rb
|
448
|
+
- lib/active_merchant/billing/integrations/ipay88/notification.rb
|
445
449
|
- lib/active_merchant/billing/integrations/ipay88/return.rb
|
446
450
|
- lib/active_merchant/billing/integrations/ipay88.rb
|
447
451
|
- lib/active_merchant/billing/integrations/liqpay/helper.rb
|
@@ -569,7 +573,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
569
573
|
version: '0'
|
570
574
|
requirements: []
|
571
575
|
rubyforge_project: activemerchant
|
572
|
-
rubygems_version: 2.1.
|
576
|
+
rubygems_version: 2.1.11
|
573
577
|
signing_key:
|
574
578
|
specification_version: 4
|
575
579
|
summary: Framework and tools for dealing with credit card transactions.
|
metadata.gz.sig
CHANGED
Binary file
|