5

我正在使用带有 NVP API(使用 PHP)的 PayPal 进行快速结帐。在将用户重定向到 Paypal 之前,我正在数据库中创建发票记录。如果用户在处理后没有返回我的站点,我正在使用 IPN 确认购买,然后更新确认付款的发票记录。我仍处于沙盒模式,并试图弄清楚如何将 NVP 开始的交易与 IPN 得到的确认联系起来。

我需要验证 NVP 中发送的“PAYMENTREQUEST_n_INVNUM”是否会在 IPN 帖子中作为“发票”返回。

由于沙盒 IPN 在 NVP 发起的沙盒交易中似乎不活跃,因此在我上线之前我似乎无法实际测试它 - 这是正确的吗?

谢谢你的帮助。

4

2 回答 2

6

可以在 Sandbox 中对此进行测试。但是,如果您使用的是“PayPal NVP”,我假设您使用的是 PayPal Express Checkout 并调用SetExpressCheckoutDoExpressCheckoutPaymentAPI。
如果是这种情况,你就不需要 IPN,因为只有在你调用DoExpressCheckoutPayment.

换句话说,买家将始终被重定向到您在 中指定的 RETURNURL ,并且当您在此退货页面上 SetExpressCheckout调用时,交易已完成(或未完成) 。DoExpressCheckoutPayment

要获取发票号码,您可以调用GetExpressCheckoutDetails并提供您之前检索到的 TOKEN(它也附加到 RETURNURL 的 GET 中)。

最后,检查API 响应PAYMENTSTATUS=CompletedDoExpressCheckoutPayment查看事务是否已完成。

于 2011-12-19T21:48:21.333 回答
0

感谢 Robert 澄清了这个过程——尤其是 useraction=commit。

我终于意识到我可以在沙盒中为我的测试卖家打开 IPN,并与 IPN 一起测试 NVP。我能够验证 PAYMENTREQUEST_0_INVNUM 是否与 IPN POST 中的“INVOICE”参数匹配。

我将使用自定义字段从我的系统传递客户电子邮件,以防他们使用不同的电子邮件登录贝宝,因此允许我有电子邮件/发票号码对进行确认。

于 2011-12-20T20:55:36.000 回答