Authorize.net SIM接收数据并更新数据库

时间:2012-06-29 10:52:16

标签: php mysql authorize.net

我已经注册了Authorize.net并成功:

  1. 将我的购物车转换为发送给TO Authorize.net并处理它的数据。
  2. 使用中继响应,将用户发送到我的感谢页面。
  3. 一旦事务通过,我无法理解如何实际更新我的数据库。我会搜索哪些条款来解决这个问题?几乎所有的文档都显示了解决方案的一部分,但实际上没有说明放在哪里以及如何接收它。

    在我的购物车页面上,我有一个Authorize.net提供的隐藏输入字段列表。我插入了我的金额,描述等。我假设我放了另一个名为“x_po_num”的隐藏字段,并将值设置为数据库中的动态PO#。

    是否有办法在Thank You页面上实际检索它,所以我交叉引用数据库并简单地添加“已确认”或其他值?

    如何检索发送给Authorize.net的值?

1 个答案:

答案 0 :(得分:2)

您获得的数据只是$_POST数组,您可以var_dump()查看其中包含的值。

以下是PHP中的示例中继响应脚本:

<?php

// Retrieving and defining Form Data from Post command body from Authorize.Net
$ResponseCode       = trim($_POST["x_response_code"]);
$ResponseReasonText = trim($_POST["x_response_reason_text"]);
$ResponseReasonCode = trim($_POST["x_response_reason_code"]);
$AVS                = trim($_POST["x_avs_code"]);
$TransID            = trim($_POST["x_trans_id"]);
$AuthCode           = trim($_POST["x_auth_code"]);
$Amount             = trim($_POST["x_amount"]);

?>

    <html>
    <head>
    <title>Transaction Receipt Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
    <body bgcolor="#FFFFFF">

<?php
    // Test to see if this is a test transaction.
    if ($TransID === 0 && $ResponseCode === 1)
    {
        // If so, print it to the screen, so we know that the transaction will not be processed.
?>

    <table align="center">
        <tr>
            <th><font size="5" color="red" face="arial">TEST MODE</font></th>
        <tr>
            <th valign="top"><font size="1" color="black" face="arial">This transaction will <u>NOT</u> be processed because your account is in Test Mode.</font></th>
      </tr>
    </table>

<?php
    }
?>

    <br>
    <br>

<?php
    // Test to see if the transaction resulted in Approvavl, Decline or Error
    if ($ResponseCode === 1)
    {
?>

    <table align="center">
        <tr>
            <th><font size="3" color="#000000" face="Verdana, Arial, Helvetica, sans-serif">This transaction has been approved.</font></th>
      </tr>
    </table>

<?php
    }
    else if ($ResponseCode === 2)
    {
?>

    <table align="center">
    <tr>
        <th width="312"><font size="3" color="#000000" face="Verdana, Arial, Helvetica, sans-serif">This transaction has been declined.</font></th>
    </tr>
    </table>

<?php
    }
    else if ($ResponseCode === 3)
    {
?>

    <table align="center">
    <tr>
        <th colspan="2"><font size="3" color="Red" face="Verdana, Arial, Helvetica, sans-serif">There was an error processing this transaction.</font></th>
    </tr>
    </table>

<?php
    }
?>

    <br>
    <br>
    <table align="center" width="60%">
    <tr>
        <td align="right" width=175 valign=top><font size="2" color="black" face="arial"><b>Amount:</b></font></td>
        <td align="left"><font size="2" color="black" face="arial">$<?php echo $Amount; ?></td>
    </tr>

    <tr>
        <td align="right" width=175 valign=top><font size="2" color="black" face="arial"><b>Transaction ID:</b></font></td><td align="left"><font size="2" color="black" face="arial">

<?php
    if ($TransID === 0)
    {
        echo 'Not Applicable.';
    }
    else
    {
        echo $TransID;
    }
?>

    </td></tr>

    <tr>
        <td align="right" width=175 valign=top><font size="2" color="black" face="arial"><b>Authorization Code:</b></font></td><td align="left"><font size="2" color="black" face="arial">

<?php
    if ($AuthCode === "000000")
    {
        echo 'Not Applicable.';
    }
    else
    {
        echo $AuthCode;
    }
?>

        </td></tr>
    <tr>
        <td align="right" width=175 valign=top><font size="2" color="black" face="arial"><b>Response Reason:</b></font></td><td align="left"><font size="2" color="black" face="arial">(<?php echo $ResponseReasonCode; ?>)&nbsp;<?php echo $ResponseReasonText; ?></font><font size="1" color="black" face="arial"></td></tr>
    <tr>

        <td align="right" width=175 valign=top><font size="2" color="black" face="arial"><b>Address Verification:</b></font></td><td align="left"><font size="2" color="black" face="arial">

<?php
    // Turn the AVS code into the corresponding text string.
    switch ($AVS)
    {
        case "A":
            echo "Address (Street) matches, ZIP does not.";
            break;
        case "B":
            echo "Address Information Not Provided for AVS Check.";
            break;
        case "C":
            echo "Street address and Postal Code not verified for international transaction due to incompatible formats. (Acquirer sent both street address and Postal Code.)";
            break;
        case "D":
            echo "International Transaction:  Street address and Postal Code match.";
            break;
        case "E":
            echo "AVS Error.";
            break;
        case "G":
            echo "Non U.S. Card Issuing Bank.";
            break;
        case "N":
            echo "No Match on Address (Street) or ZIP.";
            break;
        case "P":
            echo "AVS not applicable for this transaction.";
            break;
        case "R":
            echo "Retry. System unavailable or timed out.";
            break;
        case "S":
            echo "Service not supported by issuer.";
            break;
        case "U":
            echo "Address information is unavailable.";
            break;
        case "W":
            echo "9 digit ZIP matches, Address (Street) does not.";
            break;
        case "X":
            echo "Address (Street) and 9 digit ZIP match.";
            break;
        case "Y":
            echo "Address (Street) and 5 digit ZIP match.";
            break;
        case "Z":
            echo "5 digit ZIP matches, Address (Street) does not.";
            break;
        default:
            echo "The address verification system returned an unknown value.";
            break;
        }
?>

        </td>
    </tr>
    </table>
    </body>
</html>

您也可以使用Silent Post。这是一个PHP tutorial,展示了如何使用它。