activemerchant 1.33.0 → 1.34.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +6 -0
- data/lib/active_merchant/billing/credit_card.rb +5 -0
- data/lib/active_merchant/billing/gateways/blue_pay.rb +0 -2
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +1 -1
- data/lib/active_merchant/billing/gateways/moneris.rb +1 -1
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +1 -2
- data/lib/active_merchant/billing/gateways/paypal_express.rb +17 -0
- data/lib/active_merchant/billing/gateways/stripe.rb +26 -12
- data/lib/active_merchant/billing/integrations/dwolla.rb +1 -1
- data/lib/active_merchant/billing/integrations/dwolla/common.rb +3 -1
- data/lib/active_merchant/billing/integrations/dwolla/helper.rb +6 -3
- data/lib/active_merchant/billing/integrations/dwolla/notification.rb +7 -3
- data/lib/active_merchant/billing/integrations/dwolla/return.rb +5 -2
- data/lib/active_merchant/version.rb +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
= ActiveMerchant CHANGELOG
|
2
2
|
|
3
|
+
* PayPal Express gateway: Add unstore support [duff]
|
4
|
+
* Stripe: Send application_fee with capture requests [melari]
|
5
|
+
* Make #unstore method signature consistent across gateways [duff]
|
6
|
+
* Dwolla: Major bug fixes. [capablemonkey, melari]
|
7
|
+
* Stripe: Add support for including track data [melari]
|
8
|
+
|
3
9
|
== Version 1.33.0 (May 30, 2013)
|
4
10
|
|
5
11
|
* Netaxept: Completely revamped to use the "M" service type [rbjordan3, ntalbott]
|
@@ -112,6 +112,11 @@ module ActiveMerchant #:nodoc:
|
|
112
112
|
# @return [String] the verification value
|
113
113
|
attr_accessor :verification_value
|
114
114
|
|
115
|
+
# Returns or sets the track data for the card
|
116
|
+
#
|
117
|
+
# @return [String]
|
118
|
+
attr_accessor :track_data
|
119
|
+
|
115
120
|
def type
|
116
121
|
self.class.deprecated "CreditCard#type is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#brand instead."
|
117
122
|
brand
|
@@ -422,8 +422,6 @@ module ActiveMerchant #:nodoc:
|
|
422
422
|
|
423
423
|
def add_address(post, options)
|
424
424
|
if address = (options[:shipping_address] || options[:billing_address] || options[:address])
|
425
|
-
post[:NAME1] = address[:first_name]
|
426
|
-
post[:NAME2] = address[:last_name]
|
427
425
|
post[:ADDR1] = address[:address1]
|
428
426
|
post[:ADDR2] = address[:address2]
|
429
427
|
post[:COMPANY_NAME] = address[:company]
|
@@ -122,8 +122,7 @@ module ActiveMerchant #:nodoc:
|
|
122
122
|
def add_address(xml, tag, address, options)
|
123
123
|
return if address.nil?
|
124
124
|
xml.tag! tag do
|
125
|
-
xml.tag! '
|
126
|
-
xml.tag! 'LastName', address[:last_name] unless address[:last_name].blank?
|
125
|
+
xml.tag! 'Name', address[:name] unless address[:name].blank?
|
127
126
|
xml.tag! 'EMail', options[:email] unless options[:email].blank?
|
128
127
|
xml.tag! 'Phone', address[:phone] unless address[:phone].blank?
|
129
128
|
xml.tag! 'CustCode', options[:customer] if !options[:customer].blank? && tag == 'BillTo'
|
@@ -63,6 +63,10 @@ module ActiveMerchant #:nodoc:
|
|
63
63
|
commit 'CreateBillingAgreement', build_create_billing_agreement_request(token, options)
|
64
64
|
end
|
65
65
|
|
66
|
+
def unstore(token, options = {})
|
67
|
+
commit 'BAUpdate', build_cancel_billing_agreement_request(token)
|
68
|
+
end
|
69
|
+
|
66
70
|
def authorize_reference_transaction(money, options = {})
|
67
71
|
requires!(options, :reference_id, :payment_type, :invoice_id, :description, :ip)
|
68
72
|
|
@@ -188,6 +192,19 @@ module ActiveMerchant #:nodoc:
|
|
188
192
|
xml.target!
|
189
193
|
end
|
190
194
|
|
195
|
+
def build_cancel_billing_agreement_request(token)
|
196
|
+
xml = Builder::XmlMarkup.new :indent => 2
|
197
|
+
xml.tag! 'BillAgreementUpdateReq', 'xmlns' => PAYPAL_NAMESPACE do
|
198
|
+
xml.tag! 'BAUpdateRequest', 'xmlns:n2' => EBAY_NAMESPACE do
|
199
|
+
xml.tag! 'n2:Version', API_VERSION
|
200
|
+
xml.tag! 'ReferenceID', token
|
201
|
+
xml.tag! 'BillingAgreementStatus', "Canceled"
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
xml.target!
|
206
|
+
end
|
207
|
+
|
191
208
|
def build_reference_transaction_request(action, money, options)
|
192
209
|
currency_code = options[:currency] || currency(money)
|
193
210
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
1
|
module ActiveMerchant #:nodoc:
|
4
2
|
module Billing #:nodoc:
|
5
3
|
class StripeGateway < Gateway
|
@@ -58,7 +56,11 @@ module ActiveMerchant #:nodoc:
|
|
58
56
|
end
|
59
57
|
|
60
58
|
def capture(money, authorization, options = {})
|
61
|
-
|
59
|
+
post = {}
|
60
|
+
post[:amount] = amount(money)
|
61
|
+
add_application_fee(post, options)
|
62
|
+
|
63
|
+
commit(:post, "charges/#{CGI.escape(authorization)}/capture", post)
|
62
64
|
end
|
63
65
|
|
64
66
|
def void(identification, options = {})
|
@@ -109,8 +111,8 @@ module ActiveMerchant #:nodoc:
|
|
109
111
|
add_customer(post, options)
|
110
112
|
add_customer_data(post,options)
|
111
113
|
post[:description] = options[:description] || options[:email]
|
112
|
-
post[:application_fee] = options[:application_fee] if options[:application_fee]
|
113
114
|
add_flags(post, options)
|
115
|
+
add_application_fee(post, options)
|
114
116
|
post
|
115
117
|
end
|
116
118
|
|
@@ -119,6 +121,10 @@ module ActiveMerchant #:nodoc:
|
|
119
121
|
post[:currency] = (options[:currency] || currency(money)).downcase
|
120
122
|
end
|
121
123
|
|
124
|
+
def add_application_fee(post, options)
|
125
|
+
post[:application_fee] = options[:application_fee] if options[:application_fee]
|
126
|
+
end
|
127
|
+
|
122
128
|
def add_customer_data(post, options)
|
123
129
|
metadata_options = [:description,:browser_ip,:user_agent,:referrer]
|
124
130
|
post.update(options.slice(*metadata_options))
|
@@ -140,19 +146,27 @@ module ActiveMerchant #:nodoc:
|
|
140
146
|
end
|
141
147
|
|
142
148
|
def add_creditcard(post, creditcard, options)
|
149
|
+
card = {}
|
143
150
|
if creditcard.respond_to?(:number)
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
+
if creditcard.respond_to?(:track_data) && creditcard.track_data.present?
|
152
|
+
card[:swipe_data] = creditcard.track_data
|
153
|
+
else
|
154
|
+
card[:number] = creditcard.number
|
155
|
+
card[:exp_month] = creditcard.month
|
156
|
+
card[:exp_year] = creditcard.year
|
157
|
+
card[:cvc] = creditcard.verification_value if creditcard.verification_value?
|
158
|
+
card[:name] = creditcard.name if creditcard.name
|
159
|
+
end
|
151
160
|
|
152
161
|
add_address(post, options)
|
153
162
|
elsif creditcard.kind_of?(String)
|
154
|
-
|
163
|
+
if options[:track_data]
|
164
|
+
card[:swipe_data] = options[:track_data]
|
165
|
+
else
|
166
|
+
card[:number] = creditcard
|
167
|
+
end
|
155
168
|
end
|
169
|
+
post[:card] = card
|
156
170
|
end
|
157
171
|
|
158
172
|
def add_customer(post, options)
|
@@ -6,7 +6,7 @@ module ActiveMerchant #:nodoc:
|
|
6
6
|
autoload :Helper, 'active_merchant/billing/integrations/dwolla/helper.rb'
|
7
7
|
autoload :Notification, 'active_merchant/billing/integrations/dwolla/notification.rb'
|
8
8
|
autoload :Common, 'active_merchant/billing/integrations/dwolla/common.rb'
|
9
|
-
|
9
|
+
|
10
10
|
mattr_accessor :service_url
|
11
11
|
self.service_url = 'https://www.dwolla.com/payment/pay'
|
12
12
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "openssl"
|
2
|
+
|
1
3
|
module ActiveMerchant #:nodoc:
|
2
4
|
module Billing #:nodoc:
|
3
5
|
module Integrations #:nodoc:
|
@@ -8,7 +10,7 @@ module ActiveMerchant #:nodoc:
|
|
8
10
|
raise ArgumentError, "You need to provide the Application secret as the option :credential3 to verify that the notification originated from Dwolla"
|
9
11
|
end
|
10
12
|
|
11
|
-
expected_signature = Digest::SHA1.
|
13
|
+
expected_signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA1.new, secret, "%s&%.2f" % [checkoutId, amount])
|
12
14
|
|
13
15
|
if notification_signature != expected_signature
|
14
16
|
raise StandardError, "Dwolla signature verification failed."
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "openssl"
|
2
2
|
|
3
3
|
module ActiveMerchant #:nodoc:
|
4
4
|
module Billing #:nodoc:
|
@@ -9,18 +9,21 @@ module ActiveMerchant #:nodoc:
|
|
9
9
|
super
|
10
10
|
add_field('name', 'Store Purchase')
|
11
11
|
|
12
|
+
timestamp = Time.now.to_i.to_s
|
13
|
+
|
12
14
|
if ActiveMerchant::Billing::Base.integration_mode == :test || options[:test]
|
13
15
|
add_field('test', 'true')
|
16
|
+
# timestamp used for test signature generation:
|
17
|
+
timestamp = "1370726016"
|
14
18
|
end
|
15
19
|
|
16
|
-
timestamp = Time.now.to_i.to_s
|
17
20
|
add_field('timestamp', timestamp)
|
18
21
|
add_field('allowFundingSources', 'true')
|
19
22
|
|
20
23
|
key = options[:credential2].to_s
|
21
24
|
secret = options[:credential3].to_s
|
22
25
|
orderid = order.to_s
|
23
|
-
signature = Digest::SHA1.
|
26
|
+
signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA1.new, secret, "#{key}&#{timestamp}&#{orderid}")
|
24
27
|
add_field('signature', signature)
|
25
28
|
end
|
26
29
|
|
@@ -8,6 +8,10 @@ module ActiveMerchant #:nodoc:
|
|
8
8
|
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
9
9
|
include Common
|
10
10
|
|
11
|
+
def initialize(data, options)
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
11
15
|
def complete?
|
12
16
|
(status == "Completed")
|
13
17
|
end
|
@@ -37,14 +41,14 @@ module ActiveMerchant #:nodoc:
|
|
37
41
|
end
|
38
42
|
|
39
43
|
def test?
|
40
|
-
params['TestMode']
|
44
|
+
params['TestMode'] != "false"
|
41
45
|
end
|
42
46
|
|
43
47
|
def acknowledge
|
44
48
|
true
|
45
49
|
end
|
46
|
-
|
47
|
-
|
50
|
+
|
51
|
+
private
|
48
52
|
|
49
53
|
def parse(post)
|
50
54
|
@raw = post.to_s
|
@@ -7,7 +7,10 @@ module ActiveMerchant #:nodoc:
|
|
7
7
|
|
8
8
|
def initialize(data, options)
|
9
9
|
params = parse(data)
|
10
|
-
|
10
|
+
|
11
|
+
if params['error'] != 'failure'
|
12
|
+
verify_signature(params['checkoutId'], params['amount'], params['signature'], options[:credential3])
|
13
|
+
end
|
11
14
|
|
12
15
|
super
|
13
16
|
end
|
@@ -33,7 +36,7 @@ module ActiveMerchant #:nodoc:
|
|
33
36
|
end
|
34
37
|
|
35
38
|
def test?
|
36
|
-
params['test']
|
39
|
+
params['test'] != nil
|
37
40
|
end
|
38
41
|
|
39
42
|
def callback_success?
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: activemerchant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.
|
5
|
+
version: 1.34.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Tobias Luetke
|
@@ -37,7 +37,7 @@ cert_chain:
|
|
37
37
|
Z1BvU1BxN25rK3MyRlFVQko5VVpGSzFsZ016aG8vNGZaZ3pKd2J1K2NPOFNO
|
38
38
|
dWFMUy9iagpoUGFTVHlWVTB5Q1Nudz09Ci0tLS0tRU5EIENFUlRJRklDQVRF
|
39
39
|
LS0tLS0K
|
40
|
-
date: 2013-
|
40
|
+
date: 2013-06-20 00:00:00.000000000 Z
|
41
41
|
dependencies:
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|