超哥分析 支付宝 校园一卡通业务流程

背景描述:支付宝开通了校园一卡通接口,每次我们充钱的时候,第一次使用都会需要等待一到两秒的时间才能在食堂刷卡成功,以后就不需要了
 
问题描述:为什么第一次会有一到两秒的延迟时间
 
我的猜想:在这一到两秒的时间内,发生了资金从支付宝账户到校园卡账户的转移。当然也可能是先从支付宝到银行那边再到校园卡账户。因此发生一系列的数据库事务的增删改的动作,像我们淘宝上用支付宝付款一样大概也需要类似的延迟时间
 
我猜想具体实现:校园卡账户和支付宝账户通过数据库关联起来,并且在校园卡的代码中一定有一个标志值,记作为flag,flag为true时代表该校园卡关联的支付宝临时账户中balance>num,为false时balance<num,num为我们设定的一个阈值,大于该阈值才会发生转账动作,小于则不会。
注:1 balance为我们使用支付宝为校园一卡通充值金额 
      2设置num避免出现无限多次的小额转账攻击系统
 
故有了支付宝可冲校园卡功能之后 流程为
 
当我们刷卡的时候,首先验证身份
 
验证身份通过后,检测标志值true or false
超哥写一段java伪代码
 
 if(身份验证成功){
 if(flag)
    执行转账程序; //有了充值后第一次使用发生的延迟现象
 if(校园卡余金额>需要刷卡金额)
    校园卡账户系统扣费;
    log.info("一次成功的扣费记录");
 else
    System.out.println("滴滴滴 您的余额不足 请及时充值以免自动下机);
    log.info("因为一次余额不足,扣费不成功");
}
  else{
    log.error("发生一次身份验证错误"); 
    throw 身份验证错误Exception;
}

超哥知道博客园高手如云,说不定就有蚂蚁金服的大神,大家觉得超哥分析的哪些还需要改进或者有错误  谢谢大家

原文地址:https://www.cnblogs.com/winAlaugh/p/5471370.html