防止用户进行重复信用卡交易的最佳方式是什么?通过多次点击提交按钮,或从收据页面导航并再次单击提交按钮即可。信用卡重复交易
信用卡重复交易
回答
添加某种同步机制,以您的后端系统,以便只有一个线程可以处理在任何一个时间点“来收费的记录到您的底层数据源。在此同步区域内,添加一个检查以确保即将处理的费用在数据源中不存在。如果发生这样的错误,请确保向客户输出某种优雅的信息 - 至少它不会在后端致命。
正如CodeToGlory所建议的那样,它还有助于在UI级别添加第二层保护。这将最大限度地减少这种情况发生的次数。
几种方法:
立即禁用按钮点击之后。
有一个批处理过程可以在当天晚些时候清除重复结算,所以他们不会收取费用。
使用某种模式窗口停止用户导航直到处理信用卡交易。 Jquery has block.UI plugin that can work for you.
2已关闭,因为它会阻止用户收取两次费用,但不是我们,因为我们根据每笔交易收取费用,无论是否已完成。 1和3防止用户点击提交两次,但如果他们使用后退按钮? – NYSystemsAnalyst 2009-04-20 19:13:46
块UI不会让你回去 http://malsup.com/jquery/block/ – 2009-04-20 19:16:23
您可以生成一个唯一的值,并将其置于隐藏形式。在收取信用卡之前,请确保此唯一值尚未处理完毕。这与CodeToGlory关于禁用按钮的建议相结合可以解决您的两个用例。
大多数银行都要求您提供唯一订单ID,因此无法为同一订单进行两次收费。
现在,如果您要求预防重复提交,标准方式是Post/Redirect/Get pattern。您也可以将它与停用JavaScript提交按钮结合使用。
你必须:
- order_form.aspx,产生唯一订单ID和提交POST到
- proces_order.aspx做实际工作,排空篮,然后重定向至
- thankyou.html
现在,如果用户单击重新加载,只重新加载静态thankyou.html
。如果他选择点击回来,回到order_form.aspx
,但他的篮子已经空了。如果它以某种方式被缓存,它将被缓存相同的订单ID,所以没有两次充电的风险。
订购时立即取下篮子物品,并禁用提交按钮。
在这种情况下,即使用户回来,刷新等也不能购买两次,因为篮子里没有东西可以购买。
当客户进入第一个检出页面,然后按下提交按钮时,您可以创建一个会话,强制会话超时。这样客户必须重新开始结帐过程。
- 1. Yodlee - 信用卡交易 - 交易地点
- 2. 积分信用卡/借记卡交易
- 3. Authorize.net,收费信用卡请求给出错误重复交易已提交
- 4. Yii中的信用卡交易
- 5. 商户信用卡交易历史
- 6. Clojure交易卡
- 7. Authorize.net CIM API重复交易
- 8. 实时借记卡/信用卡交易提示系统
- 9. 信用卡交易预计会因测试交易而下降吗?
- 10. 交易信息
- 11. 动画卡交易
- 12. MySQL的重复读“交易异常行为MySQL的交易
- 13. 信用卡交易平均使用多少数据?
- 14. 应用程序中的安全信用卡交易
- 15. 信用卡交易中批次的用途是什么
- 16. 有没有用于信用卡交易的任何iOS API?
- 17. 如何在Braintree销售交易之前在Vault中重新验证信用卡
- 18. 建议在PHP上回滚信用卡交易
- 19. geezeo api intergation跟踪信用卡交易数据
- 20. PHP cURL - 处理信用卡交易时的安全
- 21. 追踪来自信用卡,任何API的交易数据?
- 22. 是什么力量信用卡交易吗?
- 23. PayPal IPN [只有信用卡交易失败]
- 24. Yodlee交易源自联合银行/信用卡账户
- 25. 如何获取信用卡交易的一定比例?
- 26. 通过商家服务确认测试信用卡交易
- 27. Authorize.Net中的随机重复交易
- 28. 黄瓜和activemerchant重复交易问题
- 29. Authorize.net CIM重复交易窗口
- 30. 在InnoDB死锁后重复交易
我用了下面的答案的组合,所以我upvoted每一个我用。我接受了tehblanx答案,因为我相信它在后端提供了最佳的交易风格完整性。但使用其他建议可以为用户提供更清洁的体验。 – NYSystemsAnalyst 2009-04-22 18:03:47