diff --git a/lib/active_merchant/billing/gateways/moneris.rb b/lib/active_merchant/billing/gateways/moneris.rb index 2df428bb68c..2123115ccf7 100644 --- a/lib/active_merchant/billing/gateways/moneris.rb +++ b/lib/active_merchant/billing/gateways/moneris.rb @@ -218,7 +218,7 @@ def add_external_mpi_fields(post, options) three_d_secure_options = options[:three_d_secure] post[:threeds_version] = three_d_secure_options[:version] - post[:crypt_type] = three_d_secure_options[:eci] + post[:crypt_type] = three_d_secure_options.dig(:eci)&.to_s&.sub!(/^0/, '') post[:cavv] = three_d_secure_options[:cavv] post[:threeds_server_trans_id] = three_d_secure_options[:three_ds_server_trans_id] post[:ds_trans_id] = three_d_secure_options[:ds_transaction_id] diff --git a/test/unit/gateways/moneris_test.rb b/test/unit/gateways/moneris_test.rb index feefeace8c6..cd8e3da72ba 100644 --- a/test/unit/gateways/moneris_test.rb +++ b/test/unit/gateways/moneris_test.rb @@ -15,7 +15,7 @@ def setup @credit_card = credit_card('4242424242424242') # https://developer.moneris.com/livedemo/3ds2/reference/guide/php - @fully_authenticated_eci = 5 + @fully_authenticated_eci = '02' @no_liability_shift_eci = 7 @options = { order_id: '1', customer: '1', billing_address: address } @@ -86,6 +86,7 @@ def test_failed_mpi_cavv_purchase assert_match(/12345<\/ds_trans_id>/, data) assert_match(/d0f461f8-960f-40c9-a323-4e43a4e16aaa<\/threeds_server_trans_id>/, data) assert_match(/2<\/threeds_version>/, data) + assert_match(/2<\/crypt_type>/, data) end.respond_with(failed_cavv_purchase_response) assert_failure response