private void OnTradeCompleted(TradeResult result) { if (result.Logs.Count > 0) { logger.Info($"trade:{result.ToJson()}"); } }
/// <summary> /// 保存购买者付款扫码返回结果 /// </summary> /// <param name="tradeResult"></param> /// <param name="tradeOrder"></param> /// <returns></returns> public bool SaveMchTradeResult(TradeResult tradeResult, out TradeOrder tradeOrder) { tradeOrder = null; var result = false; var tradeResultObj = _tradeResultRepost.GetQuery(o => o.OutTradeNo == tradeResult.OutTradeNo && o.MchId3 == tradeResult.MchId3 && o.StoreId3 == tradeResult.StoreId3).FirstOrDefault(); using (var trans = new EFDbContext().Database.BeginTransaction()) { try { if (tradeResultObj != null) { tradeResult.ToCopyProperty(tradeResultObj, new List <string>() { "CreateDT", "OutTradeNo", "Id", "MchId3", "StoreId3" }); } else { _tradeResultRepost.Add(tradeResult); } //变更TradeOrder数据状态 tradeOrder = _tradeOrderRepost.GetQuery(o => o.OutTradeNo == tradeResult.OutTradeNo && o.MchId3 == tradeResult.MchId3 && o.StoreId3 == tradeResult.StoreId3).FirstOrDefault(); tradeOrder.ReceiptAmount = tradeResult.ReceiptAmount; tradeOrder.TradeNo3 = tradeResult.TradeNo3; tradeOrder.State = tradeResult.TradeState; tradeOrder.TradeDate = tradeResult.TradeDate; tradeOrder.TradeTime = tradeResult.TradeTime; tradeOrder.UpdateDT = DateTime.Now; tradeOrder.PayChannel = tradeResult.PayChannel; result = _tradeResultRepost.SaveChanges(); var result1 = _tradeOrderRepost.SaveChanges(); } catch (Exception ex) { trans.Rollback();//回滚事务 _logEngine.WriteError(string.Format("保存后台结果通知并更新状态异常执行回滚操作:{0},参数:{1},异常信息:{2}", tradeResult.OutTradeNo, tradeResult.ToJson(), ex.Message), ex, LogModule.支付交易); result = false; } } return(result); }