Closed
Description
When using an alternative Merchant Account ID on a vanilla Magento CE 2.1.0 payments are unsuccessful and Braintree responds with error id 91584 (Merchant account must match the 3D Secure authorization merchant account.).
Steps to reproduce
- Install Magento-CE-2.1.0_sample_data-2016-06-23-02-34-56
- Create a Braintree Sandbox account & configure in Magento BE (make sure to enable debug)
- Create an extra Braintree Merchant Account ID (Settings -> Processing -> New Sandbox Merchant Account), select the same currency as base currency for simplicity (problem also occurs with different currencies)
- Configure the new Braintree Merchant Account ID in Magento BE (under Advanced Braintree Settings -> Merchant Account ID)
- Purchase item in store & enter test credit card number 5200000000000007 (expiry date & card verification nr don't matter)
- When prompted for 3D Secure check enter code 1234
Expected result
- Payment successful, order complete
- debug.log has:
'client' => 'Magento\\Braintree\\Gateway\\Http\\Client\\TransactionSale',
'response' =>
array (
'success' => true,
'' . "\0" . 'Braintree\\Result\\Successful' . "\0" . '_returnObjectNames' =>
array (
0 => 'transaction',
),
Actual result
- Payment failed, message "Unable to place order. Please try again later.", see screenshot below:
- debug.log has:
'client' => 'Magento\\Braintree\\Gateway\\Http\\Client\\TransactionSale',
'response' =>
array (
'success' => false,
'' . "\0" . '*' . "\0" . '_attributes' =>
array (
'errors' =>
Braintree\Error\ErrorCollection::__set_state(array(
'_errors' =>
Braintree\Error\ValidationErrorCollection::__set_state(array(
'_errors' =>
array (
),
'_nested' =>
array (
'transaction' =>
Braintree\Error\ValidationErrorCollection::__set_state(array(
'_errors' =>
array (
0 =>
Braintree\Error\Validation::__set_state(array(
'_attribute' => 'merchantAccountId',
'_code' => '91584',
'_message' => 'Merchant account must match the 3D Secure authorization merchant account.',
)),
When the Merchant Account ID is either removed or changed to the default one (visible in Braintree under Settings -> Processing -> Merchant Accounts) then the transaction is successful.
Any chance that merchantaccount & merchantaccountid got mixed up somewhere (when displaying the 3D secure window)?