【问题标题】:Authorize.net, charge credit card request gives error as A duplicate transaction has been submittedAuthorize.net,信用卡收费请求出错,因为已提交重复交易
【发布时间】:2023-03-25 11:48:01
【问题描述】:

我是 Authorize.Net 的新手,我正在实施 Authorize.Net PHP SDK 来实现它。我正在尝试向信用卡收费,但它给出的错误是:

“已提交重复交易”

看了几篇文章,参考:https://community.developer.authorize.net/t5/Integration-and-Testing/Prevent-Duplicate-Transactions/td-p/20417

解决方案提到在脚本中添加 x_duplicate_window =(您自己选择,最长 28800 秒)。 所以我添加如下:

<createTransactionRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
    <merchantAuthentication>
        <name>
            <![CDATA[API_LOGIN_ID]]>
        </name>
        <transactionKey>
            <![CDATA[API_TRANSACTION_KEY]]>
        </transactionKey>
    </merchantAuthentication>
    <refId>
        <![CDATA[ref1465541052]]>
    </refId>
    <transactionRequest>
        <transactionType>
            <![CDATA[authCaptureTransaction]]>
        </transactionType>
        <amount>1</amount>
        <payment>
            <creditCard>
                <cardNumber>
                    <![CDATA[4111111111111111]]>
                </cardNumber>
                <expirationDate>
                    <![CDATA[1233]]>
                </expirationDate>
            </creditCard>
        </payment>
        <order>
            <description>
                <![CDATA[DESCRIPTION]]>
            </description>
        </order>
    </transactionRequest>
    <extraOptions><![CDATA[x_duplicate_window=0]]></extraOptions>
</createTransactionRequest>

但它会抛出错误

E00003:命名空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中的元素“createTransactionRequest”在命名空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中具有无效的子元素“extraOptions”。

我无法在我的脚本中添加 x_duplicate_window。 这是防止重复交易错误的正确方法吗

注意:我在沙盒环境和实时模式下工作

请帮忙。

【问题讨论】:

    标签: xml authorize.net


    【解决方案1】:

    您需要使用&lt;transactionSettings&gt; 元素来添加此设置:

    <createTransactionRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
        <merchantAuthentication>
            <name>
                <![CDATA[API_LOGIN_ID]]>
            </name>
            <transactionKey>
                <![CDATA[API_TRANSACTION_KEY]]>
            </transactionKey>
        </merchantAuthentication>
        <refId>
            <![CDATA[ref1465541052]]>
        </refId>
        <transactionRequest>
            <transactionType>
                <![CDATA[authCaptureTransaction]]>
            </transactionType>
            <amount>1</amount>
            <payment>
                <creditCard>
                    <cardNumber>
                        <![CDATA[4111111111111111]]>
                    </cardNumber>
                    <expirationDate>
                        <![CDATA[1233]]>
                    </expirationDate>
                </creditCard>
            </payment>
            <order>
                <description>
                    <![CDATA[DESCRIPTION]]>
                </description>
            </order>
            <transactionSettings>
                <setting>
                    <settingName>duplicateWindow</settingName>
                    <settingValue>0</settingValue>
                </setting>
            </transactionSettings>
        </transactionRequest>
    </createTransactionRequest>
    

    【讨论】:

    • 只是想问一下,如果我们可以改变'duplicateWindow'的值,那么为什么它被设置为2分钟。如果我更改“duplicateWindow”的值,它会变成我的交易 ID 还是什么?
    • 默认为两分钟,但您可以在必要时取代它,因为每个企业都有不同的业务规则。更改它不会影响您必须等待多长时间才能运行重复事务。
    猜你喜欢
    • 2021-07-29
    • 2016-04-17
    • 2011-10-29
    • 2012-07-14
    • 1970-01-01
    • 2012-01-15
    • 2014-11-06
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多