2
我正在开发一个项目,要求我的应用程序在用户付费时向他的PayPal帐户付款。这个流程支付给用户,可靠和安全吗?
以下是我做到了到目前为止:
- 的(记录)用户转到支付页面会列出他的所有付款(接受或不)
- 他进入他的PayPal电子邮件和他的应用(我的)密码(用于安全)
- POST页面获取该用户的status =“UNPAID”的所有付款列表,并将状态更新为“WORKING”(以避免用户刷新页面整个过程完成并重新发送相同数量的钱)
- 我们计算的总吨数升量在该列表中付出(一个简单的
for
) - 量通过Paypal自适应支付API(请求:PAY)发送到贝宝
- 的响应被检查,如果已完成,则列表状态被设置为“已完成“,如果不是,列表将恢复为”UNPAID“(如果在此期间发生了第二次付款请求,则通过
WHERE id IN(x, y, z)
进行SQL更新。然后 - 的消息被显示给用户
但我需要你们的帮助,我是一个有风险的问题前,我想避免的,我就知道你会怎么做:
- 如果用户在进程页面上点击刷新,我不想给他发送两次(或更多)金额(“工作”锁在这里,但是如果用户在我之前点击刷新会发生什么设置锁?)
- 很少可能:如果用户在锁定“WORKING”之后点击f5,但在请求paypal之前发生了什么,以及收到新的付款。通过遵循我所做的,只有一个项目(新)将被设置为WORKING,但其他所有其他付款将会丢失
你会怎么做?使其100%可靠的最佳方法是什么?
感谢您的帮助
注:
4间6的步骤通过PlayFramework jobs制成,具有now()
和awaiting()
结果