PayPal 难以捉摸的 IPN 历史在哪里?

Posted

技术标签:

【中文标题】PayPal 难以捉摸的 IPN 历史在哪里?【英文标题】:Where is PayPal's elusive IPN History? 【发布时间】:2014-05-22 12:01:06 【问题描述】:

我的服务器上的 IPN 接收器成功接收 IPN 并将其重新发布回 PayPal 的服务器 (https://www.paypal.com/cgi-bin/webscr) 以进行验证。我正在使用 IPN 模拟器对其进行测试,它总是收到INVALID。所以我已经完成了大部分工作并让服务器说话。只需要一点精细的抛光,我无法调试它,因为我没有反馈。我在哪里可以获得这些反馈?

PayPal 的文档声明如下:

"在 paypal.com 上检查您的 IPN 历史记录。 您的 IPN 历史记录告诉您 PayPal 是否发送了给定的 IPN 消息以及您的听众是否响应了它。此页面还可能提供有关运行侦听器的服务器状态的信息。如有必要,您可以通过 IPN 历史页面请求 PayPal 重新发送给定的 IPN 消息。” -- https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNTesting/

所以我需要找到这个 IPN 历史记录,对吗?但是这些 IPN 日志记录在什么帐户上呢?它们肯定包括使用模拟器生成的 IPN 吗?如果不是,那有什么意义?任何开发人员如何调试?我查看了真实商家账户、沙盒商家账户、沙盒付款人账户。但他们都说没有发送任何 IPN 的历史记录。

顺便说一句:PayPal 的沙盒是一场噩梦,因为如果您退出一个沙盒帐户,您会发现自己回到了实时站点的登录页面。同样,您无法使用沙盒商家帐户登录 IPN 模拟器,只能使用实时商家帐户登录,因此您永远必须以实时商家身份登录才能发送请求,注销,以沙盒身份登录,检查 IPN 历史记录,什么也没找到,登录退出,现场登录并重复,直到你疯了。然后为了进一步混淆事情,模拟器从地址buyer@paypalsandbox.com发送IPN,所以请记住PAYPAL!!!! IPN 模拟器是沙箱的一部分吗?一旦您提交了一个模拟 IPN,如果您确实需要输入有效沙盒付款人帐户的地址,它会将所有表单值重置为默认值(文档没有说明您是否这样做,但我在这里抓住了稻草)您还必须根据请求多次复制并粘贴到框中。请使用 PayPal,以一种非同事可以理解的方式编写文档。说明在测试 IPN 的每个阶段您需要处于什么环境。

我感到非常沮丧,因为这不是开发的方式。我是凭直觉盲目地尝试事情,非常不科学,非常低效。

谁能澄清(或指出我澄清的文档部分)究竟如何调试INVALID 响应?

【问题讨论】:

@PayPal_Martin 你能帮忙吗? 【参考方案1】:

好的。经过一段时间后,我得出以下结论:

IPN 模拟器不是真正的沙盒的一部分。它对于进行快速轻量级测试以检查 PayPal 的服务器是否可以与您的服务器通信很有用,但仅此而已。它远非真正的支付流程模拟器!调试 IPN 验证过程的解决方案是从购物篮提交阶段开始支付模拟过程,并将一些非常重要的值设置为沙盒环境。

1) 首先,使用您的 LIVE 企业帐户用户名和密码登录https://developer.paypal.com/。点击Applications > Sandbox Accounts https://developer.paypal.com/webapps/developer/applications/accounts 并创建2个沙盒账户:

创建一个Merchant/Business沙盒帐户,这将是我们的假商店。例如 alansugar@yourdomain.example.com

然后,创建一个个人沙盒帐户,这将是我们的假客户。例如 ladygaga@yourdomain.example.com

我们打算用这个假店和这个假顾客来玩沙盒……

2) 在您的服务器(提交给 PayPal 的那个)上设置购物篮页面,在 business 字段中使用您的商户/企业沙盒帐户地址,在 @987654327 中使用 PayPal 沙盒域@FORM 元素的属性。就这样……

<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
    <input type="hidden" value="_xclick" name="cmd">
    <input type="hidden" value="alansugar@yourdomain.example.com" name="business">
    <input type="hidden" value="1" name="no_note">
    <input type="hidden" value="GBP" name="currency_code">
    <input type="hidden" value="GB" name="lc">
    <input type="hidden" value="PP-BuyNowBF" name="bn">
    <input type="hidden" value="bo14-9097200" name="invoice">
    <input type="hidden" value="monkey" name="custom">
    <input type="hidden" value="A nice pair of trousers" name="item_name">
    <input type="hidden" value="1" name="Some socks to match">
    <input type="hidden" value="25.0" name="amount">
    <input type="hidden" value="2" name="no_shipping">
    <input class="buyButton" type="image" border="0"  name="submit" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif">
    <img  border="0"  src="https://www.paypal.com/en_GB/i/scr/pixel.gif" >
</form>

3) 提交购物篮,当您看到 PayPal 支付页面(您的浏览器地址栏将访问 www.sandbox.paypal.com 域)时,使用您的假客户帐户进行支付。

4) 使用您的 LIVE 帐户登录 https://developer.paypal.com/。单击Applications > Sandbox Accounts 并单击Enter Sandbox site 链接。现在,虽然您的浏览器仍然登录到您的主真实账户,但您可以使用沙盒账户的用户名和密码(非常混乱)二次登录到更深层。当然只是为了让您感到困惑,右上角的UsernamePassword 框将预先填充您的真实账户的详细信息。擦除这些并使用沙盒商家/企业帐户的用户名和密码。现在单击History > IPN History,您可以看到发布到您的服务器的请求。您应该能够很好地使用此信息进行调试。如果您的商家/企业沙盒帐户上未启用 IPN,它会向您提供前往设置页面并启用它的说明。去做。显然,在此之前的任何付款都不会触发 IPN。

我希望这个描述可以帮助像我一样发现官方 PayPal 文档读起来就像一本缺少一半页面的书的人!

【讨论】:

同意。在我看来,在您获得第一次 IPN 验证成功的阶段之后,IPN 模拟器基本上是无用的。如果它能够处理所有的交易类型,并且能记住前一个交易的值,那么它会更加有用。【参考方案2】:

要在 PayPal 沙盒中访问 IPN 通知历史记录,请使用您的测试商家帐户登录 https://www.sandbox.paypal.com。 导航到“我的帐户/个人资料” 在“销售偏好”部分它有一个链接“即时付款通知偏好” 在该页面上有一个指向“IPN 历史记录页面”的链接。

我不确定他们最近是否将其添加到沙盒中,但我同意这很麻烦。

【讨论】:

以上是关于PayPal 难以捉摸的 IPN 历史在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

在哪里使用新的 Paypal UI 为 Paypal 定期付款设置 IPN URL?

当我收到 PayPal IPN 时,我应该在哪里执行 UPDATE 查询?

Paypal IPN,在哪里将我的订单 ID 放在 paypal sdk (android) 中以通过我的服务器验证付款?

PayPal IPN 有时不更新数据库

Paypal 支付按钮和 IPN:如何唯一地链接用户?

您如何将 Paypal IPN 确认连接到用户?