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