lib/active_merchant/billing/gateways/ogone.rb in activemerchant-1.126.0 vs lib/active_merchant/billing/gateways/ogone.rb in activemerchant-1.129.0
- old
+ new
@@ -134,11 +134,11 @@
self.live_url = 'https://secure.ogone.com/ncol/prod/'
self.supported_countries = %w[BE DE FR NL AT CH]
# also supports Airplus and UATP
self.supported_cardtypes = %i[visa master american_express diners_club discover jcb maestro]
- self.homepage_url = 'http://www.ogone.com/'
+ self.homepage_url = 'https://www.ingenico.com/login/ogone/'
self.display_name = 'Ogone'
self.default_currency = 'EUR'
self.money_format = :cents
def initialize(options = {})
@@ -262,11 +262,10 @@
commit('RFD', post)
end
def add_payment_source(post, payment_source, options)
add_d3d(post, options) if options[:d3d]
-
if payment_source.is_a?(String)
add_alias(post, payment_source, options[:alias_operation])
add_eci(post, options[:eci] || '9')
else
if options.has_key?(:store)
@@ -283,21 +282,50 @@
add_pair post, 'FLAG3D', 'Y'
win_3ds = THREE_D_SECURE_DISPLAY_WAYS.key?(options[:win_3ds]) ?
THREE_D_SECURE_DISPLAY_WAYS[options[:win_3ds]] :
THREE_D_SECURE_DISPLAY_WAYS[:main_window]
add_pair post, 'WIN3DS', win_3ds
-
- add_pair post, 'HTTP_ACCEPT', options[:http_accept] || '*/*'
add_pair post, 'HTTP_USER_AGENT', options[:http_user_agent] if options[:http_user_agent]
add_pair post, 'ACCEPTURL', options[:accept_url] if options[:accept_url]
add_pair post, 'DECLINEURL', options[:decline_url] if options[:decline_url]
add_pair post, 'EXCEPTIONURL', options[:exception_url] if options[:exception_url]
add_pair post, 'CANCELURL', options[:cancel_url] if options[:cancel_url]
add_pair post, 'PARAMVAR', options[:paramvar] if options[:paramvar]
add_pair post, 'PARAMPLUS', options[:paramplus] if options[:paramplus]
add_pair post, 'COMPLUS', options[:complus] if options[:complus]
add_pair post, 'LANGUAGE', options[:language] if options[:language]
+ if options[:three_ds_2]
+ browser_info = options[:three_ds_2][:browser_info]
+ ecom_postal = options[:billing_address]
+ if browser_info
+ add_pair post, 'BROWSERACCEPTHEADER', browser_info[:accept_header]
+ add_pair post, 'BROWSERCOLORDEPTH', browser_info[:depth]
+
+ # for 3ds v2.1 to v2.2 add BROWSERJAVASCRIPTENABLED: This boolean indicates whether your customers have enabled JavaScript in their browsers when making a purchase.
+ # the following BROWSER<tag> parameters will remain mandatory unless browser_info[:javascript] = false
+ # her documentation https://epayments-support.ingenico.com/en/integration-solutions/integrations/directlink#directlink_integration_guides_secure_payment_with_3_d_secure
+ add_pair post, 'BROWSERJAVASCRIPTENABLED', browser_info[:javascript]
+ add_pair post, 'BROWSERJAVAENABLED', browser_info[:java]
+ add_pair post, 'BROWSERLANGUAGE', browser_info[:language]
+ add_pair post, 'BROWSERSCREENHEIGHT', browser_info[:height]
+ add_pair post, 'BROWSERSCREENWIDTH', browser_info[:width]
+ add_pair post, 'BROWSERTIMEZONE', browser_info[:timezone]
+ add_pair post, 'BROWSERUSERAGENT', browser_info[:user_agent]
+ end
+ # recommended
+ if ecom_postal
+ add_pair post, 'ECOM_BILLTO_POSTAL_CITY', ecom_postal[:city]
+ add_pair post, 'ECOM_BILLTO_POSTAL_COUNTRYCODE', ecom_postal[:country]
+ add_pair post, 'ECOM_BILLTO_POSTAL_STREET_LINE1', ecom_postal[:address1]
+ add_pair post, 'ECOM_BILLTO_POSTAL_STREET_LINE2', ecom_postal[:address2]
+ add_pair post, 'ECOM_BILLTO_POSTAL_POSTALCODE', ecom_postal[:zip]
+ end
+ # optional
+ add_pair post, 'Mpi.threeDSRequestorChallengeIndicator', options[:three_ds_reqchallengeind]
+ else
+ add_pair post, 'HTTP_ACCEPT', options[:http_accept] || '*/*'
+ end
end
def add_eci(post, eci)
add_pair post, 'ECI', eci.to_s
end
@@ -412,11 +440,11 @@
if @options[:signature].blank?
ActiveMerchant.deprecated(OGONE_NO_SIGNATURE_DEPRECATION_MESSAGE) unless @options[:signature_encryptor] == 'none'
return
end
- add_pair parameters, 'SHASign', calculate_signature(parameters, @options[:signature_encryptor], @options[:signature])
+ add_pair parameters, 'SHASIGN', calculate_signature(parameters, @options[:signature_encryptor], @options[:signature])
end
def calculate_signature(signed_parameters, algorithm, secret)
return legacy_calculate_signature(signed_parameters, secret) unless algorithm
@@ -430,11 +458,11 @@
Digest::SHA1
else
raise "Unknown signature algorithm #{algorithm}"
end
- filtered_params = signed_parameters.select { |_k, v| !v.blank? }
+ filtered_params = signed_parameters.compact
sha_encryptor.hexdigest(
filtered_params.sort_by { |k, _v| k.upcase }.map { |k, v| "#{k.upcase}=#{v}#{secret}" }.join('')
).upcase
end
@@ -454,10 +482,10 @@
).join('')
).upcase
end
def add_pair(post, key, value)
- post[key] = value if !value.blank?
+ post[key] = value unless value.nil?
end
def convert_attributes_to_hash(rexml_attributes)
response_hash = {}
rexml_attributes.each do |key, value|