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('|')