【问题标题】:Is it possible to set up an IPN listener using client side scripting?是否可以使用客户端脚本设置 IPN 侦听器?
【发布时间】:2013-09-24 16:58:23
【问题描述】:

我正在使用 angularjs 集成网络支付。

我的主要目标是

  1. 让用户能够通过贝宝充值或支付
  2. 成功后将他重定向回我的网站
  3. 如果交易成功,我将更新我们的数据库记录。

很高兴地说,两天后我完成了前两个步骤。然后我阅读了有关使用 PDT(支付数据传输)的信息,并使用它来获取付款人的交易详细信息,但我读过很多帖子说使用 PDT 不够可靠,我还必须使用 IPN(即时付款通知) .所以我在谷歌上搜索了一下,几乎所有关于 IPN 的示例/教程都是使用服务器端脚本制作的。那么是否可以单独使用 javascript 执行 IPN 侦听器?

【问题讨论】:

  • 根据我的经验,PDT 没问题。随着时间的推移,我们不得不“手动”处理一些例外情况,因为出现了问题。哪个零售商不需要处理几个月的业务?你有什么来源声称它不够可靠?
  • (也就是说,我们也将 IPN 用于完全独立的东西,我们 90% 的交易是通过 API 进行的信用卡交易,而不是转发到 paypal)
  • 嗨,克里斯,我已经阅读了有关 ipn 与 pdt 的链接:stackoverflow.com/questions/2836779/ipn-vs-pdt-in-paypal。关于信用卡,我想我们正计划将其用作其他支付方式,您能给我一些说明或链接吗?
  • 我们有一个paypal商户账户,使用ExpressCheckout NVP API,每年处理几十万个,没有任何问题。至于链接……嗯。 Paypal 的严重缺点(IMO)是他们的文档和代码示例——质量非常低,很难筛选。好消息是,一旦您完成所有设置并开始工作,文档就不再那么重要了 :) 以下是我们使用的代码的要点:gist.github.com/anonymous/6c21f19dc4aaa123ebe1——我们不发送项目列表贝宝,只是总数和一般描述。
  • 最后一个问题,使用 javascript 对 ExpressCheckout 进行编码是否安全?风险我会暴露我的用户名和密码等。

标签: angularjs paypal paypal-ipn


【解决方案1】:

不,不在客户端。您可以使用服务器端 Javascript (nodejs) 来执行此操作。 IPN 的目的是让您的服务器知道付款已完成。 IPN 请求直接来自幕后的贝宝到您提供的 URL。客户端无法接收此信号,如果可以,则存在很大的安全漏洞,因为任何人都可以伪造它。

但是,您可以使用 IPN 更新您的后端,然后使用诸如 socket.io (websockets) 或长轮询(普通的旧 ajax)之类的东西让您的客户知道付款成功。使用长轮询,您基本上每隔一两秒就会询问您的后端是否付款成功。使用套接字,您可以进行更直接的通信。我喜欢 socket.io,因为如果真正的网络套接字不可用,它会退回到长轮询(或闪存)。

【讨论】:

  • 您好乔纳森,感谢您的回复。谢谢你把事情弄清楚。现在我可以继续了,实际上我没有使用 nodejs 也没有使用 socket io。不知道它们是如何工作的,Y__Y。自从我使用 Angularjs、:) 和集成 paypal 才过去一个月。但这就是开发人员的生活。哈哈。我将开始学习nodejs和socket io。
  • 许多服务器端语言也有自己的方式来处理 websocket 或传统的 ajax。
猜你喜欢
  • 2011-11-08
  • 2020-12-18
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多