lib/active_merchant/billing/gateways/realex.rb in activemerchant-1.123.0 vs lib/active_merchant/billing/gateways/realex.rb in activemerchant-1.124.0
- old
+ new
@@ -149,10 +149,11 @@
if credit_card.is_a?(NetworkTokenizationCreditCard)
add_network_tokenization_card(xml, credit_card)
else
add_three_d_secure(xml, options)
end
+ add_stored_credential(xml, options)
add_comments(xml, options)
add_address_and_customer_info(xml, options)
end
xml.target!
end
@@ -319,9 +320,26 @@
version = '1'
end
xml.tag! 'eci', three_d_secure[:eci]
xml.tag! 'message_version', version
end
+ end
+
+ def add_stored_credential(xml, options)
+ return unless stored_credential = options[:stored_credential]
+
+ xml.tag! 'storedcredential' do
+ xml.tag! 'type', stored_credential_type(stored_credential[:reason_type])
+ xml.tag! 'initiator', stored_credential[:initiator]
+ xml.tag! 'sequence', stored_credential[:initial_transaction] ? 'first' : 'subsequent'
+ xml.tag! 'srd', stored_credential[:network_transaction_id]
+ end
+ end
+
+ def stored_credential_type(reason)
+ return 'oneoff' if reason == 'unscheduled'
+
+ reason
end
def format_address_code(address)
code = [address[:zip].to_s, address[:address1].to_s + address[:address2].to_s]
code.collect { |e| e.gsub(/\D/, '') }.reject(&:empty?).join('|')