我有一个基于订阅的网站,该网站与第三方系统交互来处理付款。处理新订户注册的步骤如下:
- 订阅者在订阅表单中输入他/她的详细信息,然后点击提交按钮。
- 假设指定的详细信息有效,则会在数据库中创建一条新记录来存储这些详细信息。
- 订阅者随后会被重定向到第三方系统(类似于 Paypal)的网站来处理付款。
- 付款成功后,第 3 方网站会将订阅者重定向回我们的网站。
- 此时我知道支付成功了,所以更新数据库中的记录,表明支付已成功。
我发现经常发生的一个问题是,如果订阅者付款但没有正确完成该过程(例如使用后退浏览器,关闭窗口),他/她在数据库中的记录不会更新这。因此,光看记录我并不知道他/她是否已经付款,需要等待第三方系统的报告才能知道。
如何解决这个问题?
PS。在付款流程完成之前将其详细信息存储到数据库的主要原因之一是,这样他们就可以回来完成付款,而无需再次重新输入其详细信息。例如,当他们的信用卡被第三方系统拒绝时,他们需要与金融机构解决这个问题,这可能需要一段时间。最佳答案
无论用户做什么,第三方支付系统都应该通知您交易成功。
例如,在 PayPal 中,IPN(即时付款通知)会以 POST 数据的形式发送到您指定的 URL。然后,您的服务器会通过 Paypal 验证交易是否真实,如果是,则更新数据库记录以表明订阅有效。在将来的某个时刻,PayPal 可能也可能不会将用户重定向回您的网站。 (“可能不会”可能会在用户关闭浏览器、点击“返回”或跳转到新 URL 等情况下发生)
请注意,Paypal 和您的服务器之间的这种“对话”独立于用户的 session - 这是您和 PayPal 之间关于该用户交易的“私有(private)对话”。
显然,可能会出现通信中断和服务器故障,因此如果 Paypal 没有立即从您的服务器收到验证请求,它会定期向您的服务器发送重试,以确保交易最终完成。
如果您的支付系统没有至少一些基 native 制来确保交易可靠性,那么请选择其他提供商。他们很可能会这样做,但您必须在服务器上正确实现一些操作,以确保系统正常工作。
附注要求用户在发起任何金融交易之前登录(并因此在数据库中注册)是很正常的。您需要在他们购买之前收集所有相关信息,因为购买后您无法保证他们会返回给您提供任何进一步的信息。
关于e-commerce - 如何解决我网站使用的第三方系统未告知支付成功的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613609/