public APIResult ToAmount([FromBody] ToAmountArgsModel args) { ShopOrder shopOrder = db.Set <ShopOrder>().Find(args.id); if (shopOrder == null) { throw new Exception("订单不存在"); } CheckShopActor(shopOrder.ShopId, ShopActorType.超级管理员); shopOrder.Status = ShopOrderStatus.已退款; DecreaseCommodity(shopOrder); RefundToAmonut(shopOrder); db.SaveChanges(); return(Success()); }
//[Authorize] public async Task <APIResult> ManagerRefund([FromBody] ToAmountArgsModel args) { string exmsg = string.Empty; try { var shoporder = db.Set <ShopOrder>().FirstOrDefault(r => r.Id == args.id); //if (shoporder == null) throw new Exception("未找到此订单"); //CheckShopActor(shoporder.ShopId, ShopActorType.超级管理员);//检测用户权限 var shopMemberConsume = db.GetSingle <ShopMemberConsume>(shoporder.ShopMemberConsumeId ?? 0); if (shopMemberConsume != null) { var shopMemberRufund = db.Query <ShopMemberRufund>() .Where(m => !m.IsDel && m.ShopOrderId == shoporder.Id) .FirstOrDefault(); if (shopMemberRufund != null) { throw new Exception("该订单已退款"); } ShopMemberServer shopMemberServer = new ShopMemberServer(db, shoporder.ShopId, shoporder.MemberId); shopMemberServer.RefundToBalance(shoporder); shoporder.Status = ShopOrderStatus.已退款; db.SaveChanges(); var orderType = await ShopIntegralRechargeServer.GetOrderSourceType(db, args.id, false, _logger); //积分回滚 await ShopIntegralRechargeServer.IntegralReturn(db, args.id, orderType, _logger); return(Success("退款成功")); } else { var shoppayinfo = db.Set <ShopPayInfo>().FirstOrDefault(r => r.ShopId == shoporder.ShopId && r.IsEnable == true); if (shoppayinfo == null) { throw new Exception("未找到商户退款配置"); } var membertradeforrechange = financeDb.Set <MemberTradeForRechange>().Where(r => r.OrderId == shoporder.Id && r.OrderType == OrderType.普通订单 && r.Status == MemberTradeForRechangeStatus.成功); if (membertradeforrechange != null && membertradeforrechange.Count() > 0) //代表有支付成功的数据 { Refunds refunds = new Refunds(proxyFactory); var refundresult = refunds.RefundAction(new RefundArgsModel() { ShopFlag = shoppayinfo.ShopFlag, TradeNo = membertradeforrechange.First().TradeNo, OrderType = OrderType.普通订单, OrderId = shoporder.Id }); if (refundresult.Status == MemberTradeForRefundStatus.成功) { shoporder.Status = ShopOrderStatus.已退款; DecreaseCommodity(shoporder); db.SaveChanges(); return(Success()); } else if (refundresult.Status == MemberTradeForRefundStatus.退款中) { shoporder.Status = ShopOrderStatus.退款中; db.SaveChanges(); } else { shoporder.Status = ShopOrderStatus.退款中; db.SaveChanges(); } var orderType = await ShopIntegralRechargeServer.GetOrderSourceType(db, args.id, false, _logger); //积分回滚 await ShopIntegralRechargeServer.IntegralReturn(db, args.id, orderType, _logger); return(Success("您的退款申请已经提交,银行处理退款中")); } else { throw new Exception($"找不到订单{shoporder.OrderNumber}支付成功的记录"); } } } catch (Exception ex) { exmsg = ex.Message; throw new Exception(ex.Message); } }