【问题标题】:authorize.net integration using phpauthorize.net 使用 php 集成
【发布时间】:2013-05-05 10:10:38
【问题描述】:

我们使用 authorize.net 实现了 ARB 订阅。已成功完成订阅创建。但是如何使用 php 使用 authorize.net 的订阅 ID 获取订阅状态。因为每天我们都会在我们的网站上更新过期用户详细信息的状态。让我知道还有其他方法吗?

【问题讨论】:

    标签: php authorize.net recurring-billing authorize.net-arb


    【解决方案1】:

    您可以使用 ARB API 中的ARBGetSubscriptionStatusRequest 来获取订阅状态。如果你使用AuthnetXML PHP class*,它看起来像这样:

    <?php
    /*************************************************************************************************
    
    Use the ARB XML API to create get a subscription's status
    
    SAMPLE XML FOR API CALL
    --------------------------------------------------------------------------------------------------
    <?xml version="1.0"?>
    <ARBGetSubscriptionStatusRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
      <merchantAuthentication>
        <name>yourloginid</name>
        <transactionKey>yourtransactionkey</transactionKey>
      </merchantAuthentication>
      <refId>Sample</refId>
      <subscriptionId>1207505</subscriptionId>
    </ARBGetSubscriptionStatusRequest>
    
    SAMPLE XML RESPONSE
    --------------------------------------------------------------------------------------------------
    <?xml version="1.0" encoding="utf-8"?>
    <ARBGetSubscriptionStatusResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
      <refId>Sample</refId>
      <messages>
        <resultCode>Ok</resultCode>
        <message>
          <code>I00001</code>
          <text>Successful.</text>
        </message>
      </messages>
      <status>active</status>
    </ARBGetSubscriptionStatusResponse>
    
    *************************************************************************************************/
    
        require('../../config.inc.php');
        require('../../AuthnetXML.class.php');
    
        $xml = new AuthnetXML(AUTHNET_LOGIN, AUTHNET_TRANSKEY, AuthnetXML::USE_DEVELOPMENT_SERVER);
        $xml->ARBGetSubscriptionStatusRequest(array(
            'refId' => 'Sample',
            'subscriptionId' => '1207505'
        ));
    ?>
    
    <!DOCTYPE html>
    <html>
    <html lang="en">
        <head>
            <title></title>
            <style type="text/css">
                table
                {
                    border: 1px solid #cccccc;
                    margin: auto;
                    border-collapse: collapse;
                    max-width: 90%;
                }
    
                table td
                {
                    padding: 3px 5px;
                    vertical-align: top;
                    border-top: 1px solid #cccccc;
                }
    
                pre
                {
                    overflow-x: auto; /* Use horizontal scroller if needed; for Firefox 2, not needed in Firefox 3 */
                    white-space: pre-wrap; /* css-3 */
                    white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
                    white-space: -pre-wrap; /* Opera 4-6 */
                    white-space: -o-pre-wrap; /* Opera 7 */ /*
                    width: 99%; */
                    word-wrap: break-word; /* Internet Explorer 5.5+ */
                }
    
                table th
                {
                    background: #e5e5e5;
                    color: #666666;
                }
    
                h1, h2
                {
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>
                ARB :: Get Subscription Status
            </h1>
            <h2>
                Results
            </h2>
            <table>
                <tr>
                    <th>Response</th>
                    <td><?php echo $xml->messages->resultCode; ?></td>
                </tr>
                <tr>
                    <th>code</th>
                    <td><?php echo $xml->messages->message->code; ?></td>
                </tr>
                <tr>
                    <th>Successful?</th>
                    <td><?php echo ($xml->isSuccessful()) ? 'yes' : 'no'; ?></td>
                </tr>
                <tr>
                    <th>Error?</th>
                    <td><?php echo ($xml->isError()) ? 'yes' : 'no'; ?></td>
                </tr>
                <tr>
                    <th>status</th>
                    <td><?php echo $xml->status; ?></td>
                </tr>
            </table>
            <h2>
                Raw Input/Output
            </h2>
    <?php
        echo $xml;
    ?>
        </body>
    </html>
    

    *我是该代码的作者

    【讨论】:

    • 好的,感谢您的回复。使用此文件,我将使用 cron 每天检查每个用户状态,并在我的网站上更新订阅。
    猜你喜欢
    • 2011-01-12
    • 2017-07-20
    • 2011-12-27
    • 2016-09-21
    • 2012-08-02
    • 2014-12-02
    • 2019-11-25
    • 2011-09-01
    相关资源
    最近更新 更多