之前做一个报名系统
报名流程是 这样的 用户 填写信息后 提交表单后我会在数据库里面插入一条数据 里面有个状态值status我给的是0 然后 支付宝付款 成功 异步通知 成功了 我把这个0改成1
因为报名有人数控制,所以在每次用户提交数之前都判断报名成功的用户是否大于这个数量!
貌似一切都是没问题一样!
需要注意的是:
1 报名人数控制
我在判断人数的时候是按按照报名且缴费成功这样判断的!这是有很大的问题的,因为没有考虑到待支付的用户以及第三方支付平台异步通知时间的延迟!这样做的结果就是报名人数超出!解决方法是,在插入数据的时候必须要有个字段插入这条数据的时间!在判断用户数量的时候!(待支付的用户数量+已支付的用户数量)是否大于系统给定的控制人数!待支付的用户数量应该通过用户提交报名的时间和当前的时间差做判断!
另外,需要考虑到可能会有用户在报名后但是不支付,这样会产生一大批垃圾数据!所以用该写一个脚本!如果是WIN通过计划任务,如果是linux 使用crontab以一定时间去执行这个脚本!
还有,就是注意到数据库的原子操作已经事务!
支付宝中有
it_b_pay 字段是设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。
取值范围:1m~15d。
m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
该参数数值不接受小数点,如1.5h,可转换为90m。