Example #1
0
 private void OnTradeCompleted(TradeResult result)
 {
     if (result.Logs.Count > 0)
     {
         logger.Info($"trade:{result.ToJson()}");
     }
 }
Example #2
0
        /// <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);
        }