在Paypal Sandbox中模拟失败的IPN交易

时间:2013-03-08 13:02:19

标签: paypal sandbox paypal-ipn

我有一个使用Paypal的IPN界面的应用程序,在开发过程中指向沙盒网站。

我已经正确地处理了成功案例,以及我在帐户设置期间意外生成的失败案例;-)但我找不到的是如何模拟被拒绝,退款或撤销的交易(除了通过测试工具生成一个完全假的IPN,但这不会影响我的交易,所以这不是一个很好的测试)。我已尝试启用否定测试,但似乎没有做任何不同的事情。

这些结果是否可以使用沙箱进行测试?如果是,我需要设置什么才能创建它们?谢谢: - )

编辑:这是为测试交易提交的表单代码。

<form id="payForm" method="post" 
      action="https://www.sandbox.paypal.com/cgi-bin/webscr">
    <input type="hidden" name="cmd" value="_xclick" />
    <input type="hidden" name="business" 
                         value="greg_1362574680_biz@gregwebb.co.uk" />
    <input type="hidden" name="item_number" value="1_25_2013-03-2221:02:02.063" />
    <input type="hidden" name="item_name"
                         value="ISM Print Subscription - One Year" />
    <input type="hidden" name="amount" value="20.00" />
    <input type="hidden" name="no_shipping" value="1" />
    <input type="hidden" name="return" 
                         value="http://ism.gregwebb.co.uk/?p=PaymentReceived" />
    <input type="hidden" name="rm" value="" />

    <input type="hidden" name="notify_url" 
                         value="http://ism.gregwebb.co.uk/Payment/Paypal/IPNRecv.aspx" />
    <input type="hidden" name="cancel_return" 
                         value="http://ism.gregwebb.co.uk/?p=PaymentCancelled" />
    <input type="hidden" name="currency_code" value="GBP" />
    <input type="hidden" name="custom" value="1_25_2013-03-2221:02:02.063" />   
</form>

1 个答案:

答案 0 :(得分:0)

您可以在测试帐户上启用付款审核,以便对此进行测试。您还可以使用特定值在处理事务时触发特定条件。您需要使用否定测试。您可以在沙盒和负面测试here上找到更多信息。

默认情况下,Sandbox会尽可能地模拟实时的PayPal网站。这意味着只能通过创建确切的条件和事件序列来复制错误条件以引发错误。 Sandbox是一个积极的测试环境,因为它非常适合测试程序逻辑,因为它遵循无错误的路径。但是,您也可以使用Sandbox进行负面测试,这意味着您可以强制流程通过您期望遇到的不同错误条件。

使用否定测试来测试以下类型的错误:

Errors that result from calling a PayPal API.
Address verification and credit card validation errors that occur through Virtual Terminal, or by calling DoDirectPayment.

注意:否定测试仅适用于版本2.4及更高版本的Classic PayPal API。

通过在传递给API操作的字段中设置错误值来引发错误条件。通过将不同的输入值设置为错误状态,您可以触发API以响应特定的错误条件。负面测试仅适用于沙盒;您无法强制或模拟现场PayPal网站上的错误情况。

启用否定测试:

Navigate to the Profile > Settings page of your test merchant's Business account.
Set Negative Testing to On.

这会将Sandbox设置为包含商家的交易的负面测试状态。如果没有此配置,Sandbox不会引发错误条件,除非在默认的正测试环境中引发错误。