function testSale_returnsErrorIf3dsLookupDataDoesNotMatchTransactionData() { $threeDSecureToken = Braintree_TestHelper::create3DSVerification(Braintree_TestHelper::threeDSecureMerchantAccountId(), array('number' => '4111111111111111', 'expirationMonth' => '05', 'expirationYear' => '2009')); $result = Braintree_Transaction::sale(array('merchantAccountId' => Braintree_TestHelper::threeDSecureMerchantAccountId(), 'amount' => '100.00', 'creditCard' => array('number' => '5105105105105100', 'expirationDate' => '05/09'), 'threeDSecureToken' => $threeDSecureToken)); $this->assertFalse($result->success); $errors = $result->errors->forKey('transaction')->onAttribute('threeDSecureToken'); $this->assertEquals(Braintree_Error_Codes::TRANSACTION_THREE_D_SECURE_TRANSACTION_DATA_DOESNT_MATCH_VERIFY, $errors[0]->code); }