我有一个订阅为基础的网站,与第三方系统互动,以处理付款。处理新用户注册的步骤如下:
订阅者在订阅表单中输入他/她的详细信息,然后单击submit button.
。
我发现经常出现的一个问题是,如果订阅者付费,但没有正确完成处理(例如使用后台浏览器,关闭窗口),那么他/她在数据库中的记录就不会被更新。因此,我不知道s/他是否已经通过查看记录来支付费用,需要等待第三方系统的报告才能发现这一点。
你怎么解决这个问题?
PS。在完成支付过程之前,将他们的详细信息存储到数据库中的一个主要原因是,他们可以回来完成支付,而无需再次输入他们的详细信息。例如,当他们的信用卡被第三方系统拒绝时,他们需要与他们的金融机构解决这个问题,这可能需要一段时间。
发布于 2010-04-10 14:25:24
无论用户做什么,第三方支付系统都应该通知您成功的交易。
例如,在PayPal中,IPN (即时支付通知)以POST数据的形式发送给您指定的URL。然后,您的服务器将使用Paypal验证事务是否是真实的,如果是的话,更新数据库记录以指示订阅是有效的。在将来的某个时刻,PayPal可能会也可能不会将用户重定向回您的网站。(在用户关闭浏览器、回击或跳转到新URL等情况下,“可能不会”发生)
请注意,Paypal和您的服务器之间的“会话”独立于用户的会话--它是您和PayPal之间关于用户事务的“私人会话”。
显然,可能会出现通信中断和服务器故障,因此如果Paypal没有立即从您的服务器获得验证请求,它将定期向您的服务器发送重试,以确保事务最终完成。
如果您的支付系统至少没有一些基本的机制来确保交易的可靠性,那么选择一个不同的提供商。它们很有可能实现,但您必须在服务器上正确地实现这些功能,以确保系统正常工作。
在启动任何金融交易之前,要求用户登录(从而在数据库中注册)是非常正常的。你需要收集所有的相关信息,然后他们去购买,因为在购买之后,你没有办法保证他们将返回给你提供任何进一步的信息。
https://stackoverflow.com/questions/2613609
复制相似问题