首页 文章

Paypal中的IPN与PDT

提问于
浏览
92

我在PayPal的即时付款通知(IPN)和付款数据传输(PDT)之间选择时遇到了一些麻烦 .

基本上,用户在我的网站上购买一次性产品,使用PayPal付款,然后返回我的网站 . 我理解IPN是如何工作的,但我现在看到我可以通过PDT更轻松地触发成功购买后发生的各种操作,因为数据会在那里返回然后(而不是需要单独的监听器) .

但是,PayPal的PDT文档包含了这条神秘的内容:“PDT并不适用于信用卡或快速结账交易 . ” ......但我在这个主题上找不到任何进一步的内容 .

  • 信用卡真的不适合与PDT一起使用吗?我想要的不只是一句话 .

  • 这是否意味着用户必须拥有/创建PayPal帐户才能付款?

  • 这是否意味着如果我想让用户直接用PayPal账户和/或信用卡付款,我必须实施IPN?

任何经历过这种情况的人都可以解决这些问题吗?

3 回答

  • 0

    PDT和IPN的API类似 . 主要区别在于您收到通知 . 出于这个原因,我建议实施两者 .

    • 使用PDT,您可以立即收到通知,并可以进行任何其他处理,并向用户显示确认页面 .

    • 使用IPN,即使用户的计算机在向您发送PDT之前爆炸,也可以保证收到付款通知 .

    实施两者并充分利用这两个方面 . 但如果你只做一个,IPN是可靠的 .

    一个问题是:如果你实施两者,那么你的付款可能会被处理两次 . 注意确保不会发生这种情况 . 我编写的应用程序几乎完全相同地处理PDT和IPN(后端部分是相同的),并且该代码获取数据库中的每个网络用户锁,以便如果同一用户尝试多次提交完全相同的付款只能处理一次 . 处理完成后,该进程的结果将重新用于后续处理它的任何尝试 .

    Edit 还有一件事:IPN比PDT携带更多信息 . 您可以从IPN收到许多不同的消息,例如退款通知等,因此您确实应该实施它 .


    PayPal的PDT系统向使用PayPal支付标准的商家网站发送订单确认,并允许他们对此信息进行身份验证 . 然后,这些站点可以在“订单确认”页面中本地显示该数据 .

    何时使用PDT?

    IPN提供与上述相同的功能 . 那么,什么时候应该选择PDT而不是IPN?

    使用PDT,当客户完成付款时,您的网站会立即得到通知 . 但是,使用IPN,客户完成付款的时间与您的网站收到此事件通知的时间之间存在实质性差异 .

    因此,如果您的网站包含需要立即付款通知的功能,请使用PDT .

    例如,考虑一个数字音乐商店 . 通过PDT,该商店可以让客户立即下载他们的购买,因为PDT立即发送订单确认 . 使用IPN,这种即时订单履行是不可能的 .

    IPN的优势

    PDT有一个主要缺点:它只发送一次订单确认 . 因此,当PDT发送确认时,您的站点必须正在运行;否则,它永远不会收到消息 .

    相比之下,与IPN相比,由于IPN重新发送确认信息直到您的网站确认收到,因此几乎可以保证订单确认的交付 . 因此,PayPal建议您实施IPN而不是PDT .

    IPN的另一个优点是它发送了许多类型的通知,而PDT只发送订单确认 . 因此,使用IPN,您的网站可以接收退款通知以及订单确认 . 注意:如果必须立即通知您的网站付款,您可以同时实施IPN和PDT . 但是,如果您这样做,您的网站将为每次销售收到两个订单确认 . 因此,您必须小心谨慎地对给定确认消息的一个副本采取行动(例如,运送产品) .

    Documentation Here

  • 0

    Re 1. PDT旨在与网站付款的自动退货功能一起使用 . 自动退货在向卖家付款后重定向到PDT网站 . 不幸的是's not possible to use that feature along with PayPal Account Optional - used to enable Credit Card payment. Here is note from PayPal: '如果您已打开Auto Return并已选择为新用户启用PayPal帐户可选,则新用户将不会自动定向回您的网站,但会获得返回选项 . '. User will have an option to go back to your site(PDT step) or stay on PayPal site. To sum it up when paying by Credit Card user can skip PDT step if user will not click '返回商店链接' .

    Re 2.您希望允许哪些付费选项取决于您 . 如果您想允许在没有PayPal帐户的情况下付款,您可以启用Account Optional . 如果您只允许使用PayPal帐户的用户禁用该功能 . 可能有更多选择 .

    Re 3.在您的情况下,您需要在成功购买后触发操作 . 推荐的方式是实施IPN . PDT不保证邮件传递 . 这是指向该主题PDT vs IPN的doc的链接 .

  • 108

    这是一个老问题,但我的简单答案是 - 为什么不同时使用PDT和IPN?它们适用于卡交易 .

    PDT可以为您的网站提供即时交易状态,您可以在其中快速检查付款成功或失败状态,并向用户提供相应的消息 .

    同时,您可以在后台等待IPN的完整验证 . 收到后,您可以使用它来进一步更新数据库并处理订单 .

    您可以按照我发现的非常明确和有用的分步指南进行操作 - 它在2018年仍然有效 .

    https://www.codexworld.com/paypal-standard-payment-gateway-integration-php/

相关问题