Authorize.net,信用卡付款请求出错,因为已提交重复交易

Authorize.net, charge credit card request gives error as A duplicate transaction has been submitted

我是 Authorize.Net 的新手,我正在实施 Authorize.Net PHP SDK 来实施它。我正在尝试从信用卡中扣款,但出现以下错误:

"A duplicate transaction has been submitted"

看了好几篇文章,参考: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 : The element 'createTransactionRequest' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd' has invalid child element 'extraOptions' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'.

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

NOTE: I'm working in sandbox environment and at LIVE mode

请帮忙。

您需要使用 <transactionSettings> 元素来添加此设置:

<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>