activemerchant 1.9.0 → 1.9.1
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.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +11 -0
- data/lib/active_merchant/billing/credit_card.rb +2 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +3 -3
- data/lib/active_merchant/billing/gateway.rb +7 -1
- data/lib/active_merchant/billing/gateways/first_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/garanti.rb +1 -1
- data/lib/active_merchant/billing/gateways/iridium.rb +1 -1
- data/lib/active_merchant/billing/gateways/netaxept.rb +4 -3
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +0 -2
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal.rb +5 -5
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_express.rb +9 -7
- data/lib/active_merchant/billing/gateways/sage_pay.rb +0 -2
- data/lib/active_merchant/billing/integrations/direc_pay.rb +6 -2
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +1 -1
- data/lib/active_merchant/common/country.rb +1 -1
- data/lib/active_merchant/version.rb +1 -1
- data/lib/support/gateway_support.rb +1 -1
- metadata +4 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
= ActiveMerchant CHANGELOG
|
2
2
|
|
3
|
+
== Version 1.9.1 (November 24, 2010)
|
4
|
+
|
5
|
+
* PayPal Express and PayPal Pro: Send JPY currency correctly without decimals [Soleone]
|
6
|
+
* Netaxept: Make sure password (token) is URL escaped and update remote tests for updated server behavior [Soleone]
|
7
|
+
* DirecPay: Add support for additional options in Return class and add convenience method to get transaction status update [Soleone]
|
8
|
+
* Add new alias credit_card.brand for credit_card.type and handle the brand correctly in Netaxept [Soleone]
|
9
|
+
* Iridium: Do not depend on ExpiryDate class for credit_card [Soleone]
|
10
|
+
* PayFlow: Use same timeout of 60 seconds in HTTP header and XML for all requests [Soleone]
|
11
|
+
* PayPal Website Payments Pro CA no longer supports American Express cards [Soleone]
|
12
|
+
* Updated BIN ranges for Discover to match recent documents [kaunartist]
|
13
|
+
|
3
14
|
== Version 1.9.0 (October 14, 2010)
|
4
15
|
|
5
16
|
* Add support for DirecPay gateway [Soleone]
|
@@ -53,6 +53,8 @@ module ActiveMerchant #:nodoc:
|
|
53
53
|
# run validation on the passed in value if it is supplied
|
54
54
|
attr_accessor :verification_value
|
55
55
|
|
56
|
+
alias_method :brand, :type
|
57
|
+
|
56
58
|
# Provides proxy access to an expiry date object
|
57
59
|
def expiry_date
|
58
60
|
ExpiryDate.new(@month, @year)
|
@@ -5,11 +5,11 @@ module ActiveMerchant #:nodoc:
|
|
5
5
|
CARD_COMPANIES = {
|
6
6
|
'visa' => /^4\d{12}(\d{3})?$/,
|
7
7
|
'master' => /^(5[1-5]\d{4}|677189)\d{10}$/,
|
8
|
-
'discover' => /^(6011|65\d{2})\d{12}$/,
|
8
|
+
'discover' => /^(6011|65\d{2}|64[4-9]\d)\d{12}|(62\d{14})$/,
|
9
9
|
'american_express' => /^3[47]\d{13}$/,
|
10
10
|
'diners_club' => /^3(0[0-5]|[68]\d)\d{11}$/,
|
11
11
|
'jcb' => /^35(28|29|[3-8]\d)\d{12}$/,
|
12
|
-
'switch' => /^6759\d{12}(\d{2,3})?$/,
|
12
|
+
'switch' => /^6759\d{12}(\d{2,3})?$/,
|
13
13
|
'solo' => /^6767\d{12}(\d{2,3})?$/,
|
14
14
|
'dankort' => /^5019\d{12}$/,
|
15
15
|
'maestro' => /^(5[06-8]|6\d)\d{10,17}$/,
|
@@ -122,4 +122,4 @@ module ActiveMerchant #:nodoc:
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
end
|
125
|
-
end
|
125
|
+
end
|
@@ -62,7 +62,8 @@ module ActiveMerchant #:nodoc:
|
|
62
62
|
include Utils
|
63
63
|
|
64
64
|
DEBIT_CARDS = [ :switch, :solo ]
|
65
|
-
|
65
|
+
CURRENCIES_WITHOUT_FRACTIONS = [ 'JPY' ]
|
66
|
+
|
66
67
|
cattr_reader :implementations
|
67
68
|
@@implementations = []
|
68
69
|
|
@@ -149,6 +150,11 @@ module ActiveMerchant #:nodoc:
|
|
149
150
|
sprintf("%.2f", cents.to_f / 100)
|
150
151
|
end
|
151
152
|
end
|
153
|
+
|
154
|
+
def localized_amount(money, currency)
|
155
|
+
amount = amount(money)
|
156
|
+
CURRENCIES_WITHOUT_FRACTIONS.include?(currency.to_s) ? amount.split('.').first : amount
|
157
|
+
end
|
152
158
|
|
153
159
|
def currency(money)
|
154
160
|
money.respond_to?(:currency) ? money.currency : self.default_currency
|
@@ -10,7 +10,7 @@ module ActiveMerchant #:nodoc:
|
|
10
10
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover]
|
11
11
|
|
12
12
|
# The homepage URL of the gateway
|
13
|
-
self.homepage_url = 'https://
|
13
|
+
self.homepage_url = 'https://sanalposweb.garanti.com.tr/gvpsui/login/LoginStart.jsp'
|
14
14
|
|
15
15
|
# The name of the gateway
|
16
16
|
self.display_name = 'Garanti Sanal POS'
|
@@ -157,7 +157,7 @@ module ActiveMerchant #:nodoc:
|
|
157
157
|
xml.tag! 'CardName', creditcard.name
|
158
158
|
xml.tag! 'CV2', creditcard.verification_value if creditcard.verification_value
|
159
159
|
xml.tag! 'CardNumber', creditcard.number
|
160
|
-
xml.tag! 'ExpiryDate', { 'Month' => creditcard.
|
160
|
+
xml.tag! 'ExpiryDate', { 'Month' => creditcard.month.to_s.rjust(2, "0"), 'Year' => creditcard.year.to_s[/\d\d$/] }
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
@@ -106,9 +106,10 @@ module ActiveMerchant #:nodoc:
|
|
106
106
|
'american_express' => 'a',
|
107
107
|
}
|
108
108
|
def add_creditcard(post, creditcard)
|
109
|
-
|
109
|
+
brand = Gateway.card_brand(creditcard)
|
110
|
+
prefix = CARD_TYPE_PREFIXES[brand]
|
110
111
|
unless prefix
|
111
|
-
raise ArgumentError.new("Card type #{
|
112
|
+
raise ArgumentError.new("Card type #{brand} not supported.")
|
112
113
|
end
|
113
114
|
|
114
115
|
post[:creditcard] = {}
|
@@ -215,7 +216,7 @@ module ActiveMerchant #:nodoc:
|
|
215
216
|
end
|
216
217
|
|
217
218
|
def encode(hash)
|
218
|
-
hash.collect{|(k,v)| "#{
|
219
|
+
hash.collect{|(k,v)| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"}.join('&')
|
219
220
|
end
|
220
221
|
|
221
222
|
class Response < Billing::Response
|
@@ -147,8 +147,6 @@ module ActiveMerchant #:nodoc:
|
|
147
147
|
:timestamp => parameters[:dateq]),
|
148
148
|
:test => test?,
|
149
149
|
:authorization => response[:numappel].to_s + response[:numtrans].to_s,
|
150
|
-
:cvv_result => '',
|
151
|
-
:avs_result => '',
|
152
150
|
:fraud_review => fraud_review?(response),
|
153
151
|
:sent_params => parameters.delete_if{|key,value| ['porteur','dateval','cvv'].include?(key.to_s)}
|
154
152
|
)
|
@@ -79,7 +79,7 @@ module ActiveMerchant #:nodoc:
|
|
79
79
|
def build_request(body, request_type = nil)
|
80
80
|
xml = Builder::XmlMarkup.new
|
81
81
|
xml.instruct!
|
82
|
-
xml.tag! 'XMLPayRequest', 'Timeout' =>
|
82
|
+
xml.tag! 'XMLPayRequest', 'Timeout' => timeout.to_s, 'version' => "2.1", "xmlns" => XMLNS do
|
83
83
|
xml.tag! 'RequestData' do
|
84
84
|
xml.tag! 'Vendor', @options[:login]
|
85
85
|
xml.tag! 'Partner', @options[:partner]
|
@@ -50,14 +50,14 @@ module ActiveMerchant #:nodoc:
|
|
50
50
|
xml.tag! 'n2:ReferenceID', reference_id if transaction_type == 'DoReferenceTransaction'
|
51
51
|
xml.tag! 'n2:PaymentAction', action
|
52
52
|
xml.tag! 'n2:PaymentDetails' do
|
53
|
-
xml.tag! 'n2:OrderTotal',
|
53
|
+
xml.tag! 'n2:OrderTotal', localized_amount(money, currency_code), 'currencyID' => currency_code
|
54
54
|
|
55
55
|
# All of the values must be included together and add up to the order total
|
56
56
|
if [:subtotal, :shipping, :handling, :tax].all?{ |o| options.has_key?(o) }
|
57
|
-
xml.tag! 'n2:ItemTotal',
|
58
|
-
xml.tag! 'n2:ShippingTotal',
|
59
|
-
xml.tag! 'n2:HandlingTotal',
|
60
|
-
xml.tag! 'n2:TaxTotal',
|
57
|
+
xml.tag! 'n2:ItemTotal', localized_amount(options[:subtotal], currency_code), 'currencyID' => currency_code
|
58
|
+
xml.tag! 'n2:ShippingTotal', localized_amount(options[:shipping], currency_code),'currencyID' => currency_code
|
59
|
+
xml.tag! 'n2:HandlingTotal', localized_amount(options[:handling], currency_code),'currencyID' => currency_code
|
60
|
+
xml.tag! 'n2:TaxTotal', localized_amount(options[:tax], currency_code), 'currencyID' => currency_code
|
61
61
|
end
|
62
62
|
|
63
63
|
xml.tag! 'n2:NotifyURL', options[:notify_url]
|
@@ -4,7 +4,7 @@ module ActiveMerchant #:nodoc:
|
|
4
4
|
module Billing #:nodoc:
|
5
5
|
# The PayPal gateway for PayPal Website Payments Pro Canada only supports Visa and MasterCard
|
6
6
|
class PaypalCaGateway < PaypalGateway
|
7
|
-
self.supported_cardtypes = [:visa, :master
|
7
|
+
self.supported_cardtypes = [:visa, :master]
|
8
8
|
self.supported_countries = ['CA']
|
9
9
|
self.homepage_url = 'https://www.paypal.com/cgi-bin/webscr?cmd=_wp-pro-overview-outside'
|
10
10
|
self.display_name = 'PayPal Website Payments Pro (CA)'
|
@@ -66,14 +66,14 @@ module ActiveMerchant #:nodoc:
|
|
66
66
|
xml.tag! 'n2:Token', options[:token]
|
67
67
|
xml.tag! 'n2:PayerID', options[:payer_id]
|
68
68
|
xml.tag! 'n2:PaymentDetails' do
|
69
|
-
xml.tag! 'n2:OrderTotal',
|
69
|
+
xml.tag! 'n2:OrderTotal', localized_amount(money, currency_code), 'currencyID' => currency_code
|
70
70
|
|
71
71
|
# All of the values must be included together and add up to the order total
|
72
72
|
if [:subtotal, :shipping, :handling, :tax].all?{ |o| options.has_key?(o) }
|
73
|
-
xml.tag! 'n2:ItemTotal',
|
74
|
-
xml.tag! 'n2:ShippingTotal',
|
75
|
-
xml.tag! 'n2:HandlingTotal',
|
76
|
-
xml.tag! 'n2:TaxTotal',
|
73
|
+
xml.tag! 'n2:ItemTotal', localized_amount(options[:subtotal], currency_code), 'currencyID' => currency_code
|
74
|
+
xml.tag! 'n2:ShippingTotal', localized_amount(options[:shipping], currency_code),'currencyID' => currency_code
|
75
|
+
xml.tag! 'n2:HandlingTotal', localized_amount(options[:handling], currency_code),'currencyID' => currency_code
|
76
|
+
xml.tag! 'n2:TaxTotal', localized_amount(options[:tax], currency_code), 'currencyID' => currency_code
|
77
77
|
end
|
78
78
|
|
79
79
|
xml.tag! 'n2:NotifyURL', options[:notify_url]
|
@@ -87,15 +87,17 @@ module ActiveMerchant #:nodoc:
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def build_setup_request(action, money, options)
|
90
|
+
currency_code = options[:currency] || currency(money)
|
91
|
+
|
90
92
|
xml = Builder::XmlMarkup.new :indent => 2
|
91
93
|
xml.tag! 'SetExpressCheckoutReq', 'xmlns' => PAYPAL_NAMESPACE do
|
92
94
|
xml.tag! 'SetExpressCheckoutRequest', 'xmlns:n2' => EBAY_NAMESPACE do
|
93
95
|
xml.tag! 'n2:Version', API_VERSION
|
94
96
|
xml.tag! 'n2:SetExpressCheckoutRequestDetails' do
|
95
97
|
xml.tag! 'n2:PaymentAction', action
|
96
|
-
xml.tag! 'n2:OrderTotal', amount(money).to_f.zero? ?
|
98
|
+
xml.tag! 'n2:OrderTotal', amount(money).to_f.zero? ? localized_amount(100, currency_code) : localized_amount(money, currency_code), 'currencyID' => currency_code
|
97
99
|
if options[:max_amount]
|
98
|
-
xml.tag! 'n2:MaxAmount',
|
100
|
+
xml.tag! 'n2:MaxAmount', localized_amount(options[:max_amount], currency_code), 'currencyID' => currency_code
|
99
101
|
end
|
100
102
|
add_address(xml, 'n2:Address', options[:shipping_address] || options[:address])
|
101
103
|
xml.tag! 'n2:AddressOverride', options[:address_override] ? '1' : '0'
|
@@ -28,8 +28,12 @@ module ActiveMerchant #:nodoc:
|
|
28
28
|
Notification.new(post)
|
29
29
|
end
|
30
30
|
|
31
|
-
def self.return(query_string)
|
32
|
-
Return.new(query_string)
|
31
|
+
def self.return(query_string, options = {})
|
32
|
+
Return.new(query_string, options)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.request_status_update(mid, transaction_id, notification_url)
|
36
|
+
Status.new(mid).update(transaction_id, notification_url)
|
33
37
|
end
|
34
38
|
end
|
35
39
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activemerchant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 49
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 1.9.
|
9
|
+
- 1
|
10
|
+
version: 1.9.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Luetke
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
hPaSTyVU0yCSnw==
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2010-
|
39
|
+
date: 2010-11-24 00:00:00 -05:00
|
40
40
|
default_executable:
|
41
41
|
dependencies:
|
42
42
|
- !ruby/object:Gem::Dependency
|
metadata.gz.sig
CHANGED
Binary file
|