微信支付,异步通知受网络等未知因素,可能会通知的比较慢,所以这个时候我们会去主动查询交易结果。因为两个接口都用到事务回滚,问题来了,第一次成功操作修改数据库,第二次就出问题了,方法中有三个sql,第一个新增sql没有插入成功,其他两个update语句却成功了。
public void tradeQuery(){
            DefaultTransactionDefinition def = new DefaultTransactionDefinition(); 
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); 
    TransactionStatus status = this.transactionManager.getTransaction(def);         try{
               //保存回调数据
               kppPayRecordService.addKppPayRecord(param);
//修改订单状态 为支付成功
   userPayRecordService.updateIsPay(outTradeNo);
   //修改钱包记录
      userWalletService.updateWallet(totalFee,outTradeNo, Consts.USER_PAY_TYPE_KFT,
      DateTime.getDateTime(new Date()),userPayRecord, response);
               transactionManager.commit(status) ;
         }catch(){
               transactionManager.rollback(status);
           }
}
回调接口和查询接口处理的方式都一样。
请问下啥原因?