zoukankan      html  css  js  c++  java
  • 支付系统的一些陷阱

    与钱相关的操作都需要很谨慎,不论是支付还是退款。

    ——Mr.yang.localhost

    现在的消费者越来越多地进行在线交易,包括付款或退款。支付系统是不能马虎的,如果有漏洞被恶意利用,平台越大造成的损失就越大。

    现总结了一些支付系统需要注意避免的一些坑:

    1、购买数量问题

    购买数量没有做非负限制或没有做最大限制。

    如果没有做非负限制,用户手动改写了购买订单的数量为负数,计算出来的金额就会是负数,如果是支付宝、微信、银行卡扣款系统是不会扣款成功,如果是站内付款方式可能就会给用户账户加金额,还会显示用户买到了一个负数数量的商品。

    如果没有做最大数限制,用户可能一次就将库存全部锁定,造成商品缺货,或者是购买数量太大造成溢出报错,或计算金额溢出报错,对系统造成不利的影响。

    2、支付金额被篡改

    提交订单的时候,不要利用前段传过来的商品金额、优惠金额及任何金额,前端展示只是为了用户知道订单多少钱,优惠减免多少,需要付款多少钱。提交订单后,金额通过后台获取计算。

    如果用户使用优惠券,需要校验付款金额,优惠券使用条件等信息。可以避免恶意使用优惠券,一券多单使用,优惠券系统设置问题等情况。

    3、用户操作了不是自己的订单

    登陆系统的用户,根据自己的订单信息可能会猜到系统的订单号,这时候要防止用户拉取到别人的订单信息,包括支付别人订单、取消别人订单、修改别人订单信息。

    支付后的订单要防止用户再进行修改,比如修改了支付订单的购买数量。

    4、不可重复提交和支付

    下单系统注意避免用户重复提交订单,客户端网络不好情况下,用户可能会重复点击提交按钮。

    支付时要注意重复支付问题。一般支付系统会有短暂延迟,除非支付方明确规定了同步结果可以作为支付成功的依据,否则一般是同步作为支付请求成功跳转的依据,不作为付款成功的凭证,需要以支付方的异步通知或主动发起查询的结果作为是否付款成功的凭证。(此时注意保留相关的交易流水信息)

    5、向外提供开放接口

    如果是作为支付方,向第三方提供接口,需要注意以上问题外,还需要注意接口安全性。加密处理(加密处理做好时效性、签名安全算法、密钥保护等)和身份验证,配合白名单机制。

     6、异常情况处理

    对于用户错误操作或恶意操作造成的异常信息处理,需要保证流程不会继续走下去,或已经执行的流程是否需要进行作废或回滚操作。

  • 相关阅读:
    collections queue、os、datetime,序列化(json和pickle)模块
    re模块和正则
    模块介绍
    迭代器,生成器,生成器表达式,常用内置方法
    交互式shell和非交互式shell的区别
    /usr 的由来及/usr目录结
    Hadoop
    联通、联在中文机器上乱码问题
    正斜杠与反斜杠
    java中static关键字解析
  • 原文地址:https://www.cnblogs.com/mr-yang-localhost/p/8013125.html
Copyright © 2011-2022 走看看