In authorizenet_aim.php if the $response_code = 4 the module sets an error message and denies the order even though the transaction has gone through successfully.
The fix is to replace line 428:
With:PHP Code:if ($response_code != '1') {
Additionally, the plugin adds some text to the transaction ID on line 414:PHP Code:if ($response_code != '1' && $response_code != '4') {
Unfortunately the column type is BINGINT(20) and will not accept this value causing a fatal error. Fixing the column type allows the logging function to work but the order will still fail due to the first bug described above.PHP Code:$this->transaction_id .= ' ***NOTE: Held for review by merchant.';
The solution to the second issue is to change the line to read:
Then replace line 444:PHP Code:$this->transaction_comment = ' ***NOTE: Held for review by merchant.';
$sql = $db->bindVars($sql, ':orderComments', 'Credit Card payment. AUTH: ' . $this->auth_code . '. TransID: ' . $this->transaction_id . '.', 'string');
With:
It might also be a good idea to change line 687 from:PHP Code:$sql = $db->bindVars($sql, ':orderComments', 'Credit Card payment. AUTH: ' . $this->auth_code . '. TransID: ' . $this->transaction_id . $this->transaction_comment . '.', 'string');
to:PHP Code:$sql = $db->bindVars($sql, ':transID', $this->transaction_id, 'string');
This would at least stop any fatal errors.PHP Code:$sql = $db->bindVars($sql, ':transID', $this->transaction_id, 'integer');


Reply With Quote
