e-commerce - 如何解决我网站使用的第三方系统未告知支付成功的问题?

标签 e-commerce web-applications payment-processing

我有一个基于订阅的网站,该网站与第三方系统交互来处理付款。处理新订户注册的步骤如下:

  1. 订阅者在订阅表单中输入他/她的详细信息,然后点击提交按钮。
  2. 假设指定的详细信息有效,则会在数据库中创建一条新记录来存储这些详细信息。
  3. 订阅者随后会被重定向到第三方系统(类似于 Paypal)的网站来处理付款。
  4. 付款成功后,第 3 方网站会将订阅者重定向回我们的网站。
  5. 此时我知道支付成功了,所以更新数据库中的记录,表明支付已成功。

我发现经常发生的一个问题是,如果订阅者付款但没有正确完成该过程(例如使用后退浏览器,关闭窗口),他/她在数据库中的记录不会更新这。因此,光看记录我并不知道他/她是否已经付款,需要等待第三方系统的报告才能知道。

如何解决这个问题?

PS。在付款流程完成之前将其详细信息存储到数据库的主要原因之一是,这样他们就可以回来完成付款,而无需再次重新输入其详细信息。例如,当他们的信用卡被第三方系统拒绝时,他们需要与金融机构解决这个问题,这可能需要一段时间。

最佳答案

无论用户做什么,第三方支付系统都应该通知您交易成功。

例如,在 PayPal 中,IPN(即时付款通知)会以 POST 数据的形式发送到您指定的 URL。然后,您的服务器会通过 Paypal 验证交易是否真实,如果是,则更新数据库记录以表明订阅有效。在将来的某个时刻,PayPal 可能也可能不会将用户重定向回您的网站。 (“可能不会”可能会在用户关闭浏览器、点击“返回”或跳转到新 URL 等情况下发生)

请注意,Paypal 和您的服务器之间的这种“对话”独立于用户的 session - 这是您和 PayPal 之间关于该用户交易的“私有(private)对话”。

显然,可能会出现通信中断和服务器故障,因此如果 Paypal 没有立即从您的服务器收到验证请求,它会定期向您的服务器发送重试,以确保交易最终完成。

如果您的支付系统没有至少一些基 native 制来确保交易可靠性,那么请选择其他提供商。他们很可能会这样做,但您必须在服务器上正确实现一些操作,以确保系统正常工作。

附注要求用户在发起任何金融交易之前登录(并因此在数据库中注册)是很正常的。您需要在他们购买之前收集所有相关信息,因为购买后您无法保证他们会返回给您提供任何进一步的信息。

关于e-commerce - 如何解决我网站使用的第三方系统未告知支付成功的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613609/

相关文章:

magento - 如何以及在何处修改 Magento 搜索查询?

e-commerce - 在 Google Analytics 中实现增强型电子商务

iphone - 将 CoreData 用于第一个 iPhone 应用程序?

google-apps-script - 在打开的表单上使用 Google App 脚本填充 Google 表单

php - opencart商店安装问题

google-analytics - 交易后谷歌分析是否会重置 UTM?

web-applications - 您对 "deploying"通过将 Web 应用程序包装在 google chrome 窗口中到桌面的想法?

payment-gateway - 如何在线上使用信用卡付款?

android - 对用户来说最好的支付模式是什么

ruby-on-rails-3 - 市场支付处理器