lib/active_merchant/billing/gateways/blue_snap.rb in activemerchant-1.113.0 vs lib/active_merchant/billing/gateways/blue_snap.rb in activemerchant-1.114.0
- old
+ new
@@ -175,11 +175,11 @@
def add_auth_purchase(doc, money, payment_method, options)
doc.send('recurring-transaction', options[:recurring] ? 'RECURRING' : 'ECOMMERCE')
add_order(doc, options)
doc.send('store-card', options[:store_card] || false)
add_amount(doc, money, options)
- add_fraud_info(doc, options)
+ add_fraud_info(doc, payment_method, options)
if payment_method.is_a?(String)
doc.send('vaulted-shopper-id', payment_method)
else
doc.send('card-holder-info') do
@@ -198,10 +198,11 @@
def add_personal_info(doc, payment_method, options)
doc.send('first-name', payment_method.first_name)
doc.send('last-name', payment_method.last_name)
doc.send('personal-identification-number', options[:personal_identification_number]) if options[:personal_identification_number]
doc.email(options[:email]) if options[:email]
+ doc.phone(options[:phone_number]) if options[:phone_number]
add_address(doc, options)
end
def add_credit_card(doc, card)
doc.send('credit-card') do
@@ -211,11 +212,11 @@
doc.send('expiration-year', card.year)
end
end
def add_metadata(doc, options)
- transaction_meta_data = options.fetch(:transaction_meta_data, {})
+ transaction_meta_data = options[:transaction_meta_data] || []
return if transaction_meta_data.empty? && !options[:description]
doc.send('transaction-meta-data') do
# ensure backwards compatibility for calls expecting :description
# to become meta-data fields.
@@ -250,11 +251,12 @@
address = options[:billing_address]
return unless address
doc.country(address[:country]) if address[:country]
doc.state(address[:state]) if address[:state] && STATE_CODE_COUNTRIES.include?(address[:country])
- doc.address(address[:address]) if address[:address]
+ doc.address(address[:address1]) if address[:address1]
+ doc.address2(address[:address2]) if address[:address2]
doc.city(address[:city]) if address[:city]
doc.zip(address[:zip]) if address[:zip]
end
def add_3ds(doc, three_d_secure_options)
@@ -312,26 +314,45 @@
def add_authorization(doc, authorization)
doc.send('transaction-id', authorization)
end
- def add_fraud_info(doc, options)
+ def add_fraud_info(doc, payment_method, options)
doc.send('transaction-fraud-info') do
doc.send('shopper-ip-address', options[:ip]) if options[:ip]
+
+ unless payment_method.is_a? String
+ doc.send('shipping-contact-info') do
+ add_shipping_contact_info(doc, payment_method, options)
+ end
+ end
end
end
+ def add_shipping_contact_info(doc, payment_method, options)
+ # https://developers.bluesnap.com/v8976-XML/docs/shipping-contact-info
+ doc.send('first-name', payment_method.first_name)
+ doc.send('last-name', payment_method.last_name)
+
+ doc.country(options[:shipping_country]) if options[:shipping_country]
+ doc.state(options[:shipping_state]) if options[:shipping_state] && STATE_CODE_COUNTRIES.include?(options[:shipping_country])
+ doc.address1(options[:shipping_address1]) if options[:shipping_address1]
+ doc.address2(options[:shipping_address2]) if options[:shipping_address2]
+ doc.city(options[:shipping_city]) if options[:shipping_city]
+ doc.zip(options[:shipping_zip]) if options[:shipping_zip]
+ end
+
def add_alt_transaction_purchase(doc, money, payment_method_details, options)
doc.send('merchant-transaction-id', truncate(options[:order_id], 50)) if options[:order_id]
doc.send('soft-descriptor', options[:soft_descriptor]) if options[:soft_descriptor]
add_amount(doc, money, options)
vaulted_shopper_id = payment_method_details.vaulted_shopper_id
doc.send('vaulted-shopper-id', vaulted_shopper_id) if vaulted_shopper_id
add_echeck_transaction(doc, payment_method_details.payment_method, options, vaulted_shopper_id.present?) if payment_method_details.check?
- add_fraud_info(doc, options)
+ add_fraud_info(doc, payment_method_details.payment_method, options)
add_metadata(doc, options)
end
def add_echeck_transaction(doc, check, options, vaulted_shopper)
unless vaulted_shopper