/// <summary> /// 获取订单状态 /// </summary> /// <param name="dingdan"></param> private void GetOrderStatusMsg(wx_hotel_dingdan dingdan) { orderStatus = dingdan.orderStatus.Value; //支付状态下默认退款金额为订单总额 if (orderStatus == HotelStatusManager.OrderStatus.Payed.StatusId) { var result = GetPrice(dingdan); txtAmount.Text = result.ToString(); if (isAdmin) { hidConfirmStr.Value = "确定执行【退款】操作吗?"; if (listCode != null && listCode.Any(c => c.Status == "已使用"))//订单中有验证码已使用 { hidConfirmStr.Value = string.Format("{0},{1}", "订单中有验证码已使用", hidConfirmStr.Value); } } } else if (orderStatus == HotelStatusManager.OrderStatus.Refunding.StatusId || orderStatus == HotelStatusManager.OrderStatus.Refunded.StatusId) { var hotelService = new HotelService(); tuidan = hotelService.GetModel(dingdan.id, dingdan.hotelid.Value); if (tuidan != null && tuidan.operateUser > 0) { var manager = new BLL.manager().GetModel(tuidan.operateUser); uName = manager.real_name; roleName = new WeiXinPF.BLL.manager_role().GetTitle(manager.role_id); } } }
public void SaveTuidan_ReturnNull_WithID() { var hotelService = new HotelService(); int wid = 1; TuidanDto tuidanDto = new TuidanDto() { dingdanid = 1, hotelid = 1, openid = "test", wid = wid, roomid = 1, refundTime = DateTime.Now, refundAmount = 123.12, operateUser = wid, remarks = "什么原因也一样" }; hotelService.AddTuidan(tuidanDto); Assert.IsTrue(tuidanDto.id > 0); var model = hotelService.GetModel(tuidanDto.id); Assert.IsNotNull(model); Assert.AreEqual(model.dingdanid, tuidanDto.dingdanid); }
/// <summary> /// 修改退单模型 /// </summary> /// <param name="dto"></param> public void ModifyTuidan(TuidanDto dto) { if (dto != null) { var info = Mapper.Map <TuidanDto, TuidanInfo>(dto); info.Modify(); } }
protected void btnSaveRefund_OnClick(object sender, EventArgs e) { var wxUserweixin = GetAdminInfo(); if (wxUserweixin == null) { throw new Exception("用户不能为空!"); } if (chkIsRefund.Checked) { double money = MyCommFun.Str2Float(txtAmount.Text); var hotelService = new HotelService(); dingdan = dingdanbll.GetModel(dingdanid); var hotel = new BLL.wx_hotels_info().GetModel(dingdan.hotelid.Value); using (var scope = new TransactionScope()) { var dto = new TuidanDto() { dingdanid = dingdan.id, hotelid = dingdan.hotelid.Value, roomid = dingdan.roomid.Value, openid = dingdan.openid, wid = hotel.wid.Value, operateUser = wxUserweixin.id, refundAmount = money, refundTime = DateTime.Now, remarks = this.remarks.InnerText, refundCode = "HT" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + Utils.Number(5) }; hotelService.AddTuidan(dto); string return_msg = String.Empty; if (WeChatRefund(dingdan, dto, hotel.wid.Value, out return_msg))// { new BLL.wx_hotel_dingdan().RefundComplete(dingdan.OrderNumber); AddAdminLog(MXEnums.ActionEnum.Edit.ToString(), "修改酒店状态为" + HotelStatusManager.OrderStatus.Refunding.StatusName + HotelStatusManager.OrderStatus.Refunding.StatusId + ",主键为" + dingdanid); //记录日志 JscriptMsg("退款成功!", "hotel_dingdan_manage.aspx?hotelid=" + hotelid + "", "Success"); } else { Response.Write(return_msg); GetData(dingdanid); } // dingdanbll.Update(dingdan.id, HotelStatusManager.OrderStatus.Refunding.StatusId.ToString()); scope.Complete(); } } }
/// <summary> /// 添加退单实体 /// </summary> /// <param name="dto"></param> public void AddTuidan(TuidanDto dto) { if (dto != null) { var info = Mapper.Map <TuidanDto, TuidanInfo>(dto); info.Add(); dto.id = info.id; } }
/// <summary> /// 获取退单信息 /// </summary> /// <param name="id"></param> /// <returns></returns> public TuidanDto GetModel(int id) { TuidanDto result = null; var info = TuidanInfo.GetModel(id); if (info != null) { result = Mapper.Map <TuidanDto>(info); } return(result); }
/// <summary> /// 微信退单 /// </summary> /// <param name="dingdan"></param> /// <param name="dto"></param> /// <param name="returnMsg"></param> /// <returns></returns> private bool WeChatRefund(wx_hotel_dingdan dingdan, TuidanDto dto, int wid, out string returnMsg) { bool result = false; returnMsg = null; var refundResult = dingdanbll.GetWeChatRefundParams(wid, dingdan.hotelid.Value, dingdan.id, dto.refundCode); //使用系统订单号退单 if (refundResult != null && refundResult.Tables.Count > 0 && refundResult.Tables[0].Rows.Count > 0) { var orderNumber = refundResult.Tables[0].Rows[0]["orderNumber"].ToString(); var transaction_id = refundResult.Tables[0].Rows[0]["transaction_id"].ToString(); var refundAmount = Convert.ToInt32(refundResult.Tables[0].Rows[0]["refundAmount"]); var payAmount = Convert.ToInt32(refundResult.Tables[0].Rows[0]["payAmount"]); var wxModel = new BLL.wx_userweixin().GetModel(wid); var payInfo = new BLL.wx_payment_wxpay().GetModelByWid(wid); var requestHandler = new RequestHandler(null); requestHandler.SetParameter("out_trade_no", orderNumber); //requestHandler.SetParameter("transaction_id", transaction_id); requestHandler.SetParameter("out_refund_no", dto.refundCode); requestHandler.SetParameter("appid", wxModel.AppId); requestHandler.SetParameter("mch_id", payInfo.mch_id);//商户号 requestHandler.SetParameter("nonce_str", Guid.NewGuid().ToString().Replace("-", "")); //退款金额 if (PayHelper.IsDebug) { requestHandler.SetParameter("total_fee", (payAmount).ToString()); requestHandler.SetParameter("refund_fee", (refundAmount).ToString()); } else { requestHandler.SetParameter("total_fee", (payAmount * 100).ToString()); requestHandler.SetParameter("refund_fee", (refundAmount * 100).ToString()); } requestHandler.SetParameter("op_user_id", wxModel.AppId); requestHandler.SetParameter("sign", requestHandler.CreateMd5Sign("key", payInfo.paykey)); var refundInfo = TenPayV3Helper.Refund(requestHandler.ParseXML(), string.Format(@"{0}{1}", AppDomain.CurrentDomain.BaseDirectory, payInfo.certInfoPath), payInfo.cerInfoPwd); var refundOrderResponse = new RefundOrderResponse(refundInfo); result = refundOrderResponse.IsSuccess; returnMsg = refundOrderResponse.return_msg; } return(result); }
/// <summary> /// 获取退单信息 /// </summary> /// <param name="id"></param> /// <returns></returns> public TuidanDto GetModel(int dingdanid, int hotelid) { TuidanDto result = null; var info = TuidanInfo.GetList(t => t.dingdanid == dingdanid && t.hotelid == hotelid) .FirstOrDefault(); if (info != null) { result = Mapper.Map <TuidanDto>(info); } return(result); }
/// <summary> /// 获取订单状态 /// </summary> /// <param name="order"></param> private void GetOrderStatusMsg(GetHotelOrderResponse order) { orderStatus = order.OrderStatus; //支付状态下默认退款金额为订单总额 if (orderStatus == HotelStatusManager.OrderStatus.Payed.StatusId) { var result = GetPrice(order); txtAmount.Text = result.ToString(); if (isAdmin) { hidConfirmStr.Value = "确定执行【退款】操作吗?"; // WHEN 0 THEN ''未支付'' // WHEN 1 THEN ''已支付'' // WHEN 2 THEN ''已使用'' // WHEN 3 THEN ''申请退款'' // WHEN 4 THEN ''已退款'' if (_listCode != null && _listCode.Any(c => c.Status == 2))//订单中有验证码已使用 { hidConfirmStr.Value = string.Format("{0},{1}", "订单中有验证码已使用", hidConfirmStr.Value); } } } else if (orderStatus == HotelStatusManager.OrderStatus.Refunding.StatusId || orderStatus == HotelStatusManager.OrderStatus.Refunded.StatusId) { tuidan = hotelService.GetModel(order.id, order.hotelid.Value); if (tuidan != null && tuidan.operateUser > 0) { var manager = new BLL.manager().GetModel(tuidan.operateUser); uName = manager.real_name; roleName = new WeiXinPF.BLL.manager_role().GetTitle(manager.role_id); } } }
/// <summary> /// 微信退单 /// </summary> /// <param name="dingdan"></param> /// <param name="dto"></param> /// <param name="returnMsg"></param> /// <returns></returns> private bool WeChatRefund(wx_hotel_dingdan dingdan, TuidanDto dto, int wid, out string returnMsg) { bool result = false; returnMsg = null; var refundResult = _hotelOrderService.GetWeChatRefundParams(wid, dingdan.hotelid.Value, dingdan.id, dto.refundCode); //使用系统订单号退单 if (refundResult != null && refundResult.Tables.Count > 0 && refundResult.Tables[0].Rows.Count > 0) { var orderNumber = refundResult.Tables[0].Rows[0]["orderNumber"].ToString(); var transaction_id = refundResult.Tables[0].Rows[0]["transaction_id"].ToString(); var refundAmount = Convert.ToInt32(refundResult.Tables[0].Rows[0]["refundAmount"]); var payAmount = Convert.ToInt32(refundResult.Tables[0].Rows[0]["payAmount"]); var wxModel = new BLL.wx_userweixin().GetModel(wid); var payInfo = new BLL.wx_payment_wxpay().GetModelByWid(wid); var requestHandler = new RequestHandler(null); requestHandler.SetParameter("out_trade_no", orderNumber); //requestHandler.SetParameter("transaction_id", transaction_id); requestHandler.SetParameter("out_refund_no", dto.refundCode); requestHandler.SetParameter("appid", wxModel.AppId); requestHandler.SetParameter("mch_id", payInfo.mch_id);//商户号 requestHandler.SetParameter("nonce_str", Guid.NewGuid().ToString().Replace("-", "")); //退款金额 if (PayHelper.IsDebug) { requestHandler.SetParameter("total_fee", (payAmount).ToString()); requestHandler.SetParameter("refund_fee", (refundAmount).ToString()); } else { requestHandler.SetParameter("total_fee", (payAmount * 100).ToString()); requestHandler.SetParameter("refund_fee", (refundAmount * 100).ToString()); } requestHandler.SetParameter("op_user_id", wxModel.AppId); requestHandler.SetParameter("sign", requestHandler.CreateMd5Sign("key", payInfo.paykey)); var refundInfo = TenPayV3Helper.Refund(requestHandler.ParseXML(), string.Format(@"{0}{1}", AppDomain.CurrentDomain.BaseDirectory, payInfo.certInfoPath), payInfo.cerInfoPwd); var refundOrderResponse = new RefundOrderResponse(refundInfo); result = refundOrderResponse.IsSuccess; returnMsg = refundOrderResponse.return_msg; } return result; }
protected void btnSaveRefund_OnClick(object sender, EventArgs e) { var wxUserweixin = GetAdminInfo(); if (wxUserweixin == null) { throw new Exception("用户不能为空!"); } if (chkIsRefund.Checked) { double money = MyCommFun.Str2Float(txtAmount.Text); var hotelService = new HotelService(); var orderRequest = new GetHotelOrderByOrderIdRequest() { OrderId = OrderId }; Order = BusHelper.Send<GetHotelOrderResponse>(orderRequest); var hotelRequest = new GetHotelRequest() { HotelId = Order.HotelId }; var hotel = BusHelper.Send<GetHotelResponse>(hotelRequest); using (var scope = new TransactionScope()) { var dto = new TuidanDto() { OrderId = Order.id, hotelid = Order.hotelid.Value, roomid = Order.roomid.Value, openid = Order.openid, wid = hotel.wid.Value, operateUser = wxUserweixin.id, refundAmount = money, refundTime = DateTime.Now, remarks = this.remarks.InnerText, refundCode = "HT" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + Utils.Number(5) }; hotelService.AddTuidan(dto); string return_msg = String.Empty; if (WeChatRefund(Order, dto, hotel.wid.Value, out return_msg))// { new BLL.wx_hotel_dingdan().RefundComplete(Order.OrderNumber); AddAdminLog(MXEnums.ActionEnum.Edit.ToString(), "修改酒店状态为" + HotelStatusManager.OrderStatus.Refunding.StatusName + HotelStatusManager.OrderStatus.Refunding.StatusId + ",主键为" + OrderId); //记录日志 JscriptMsg("退款成功!", "hotel_dingdan_manage.aspx?hotelid=" + hotelid + "", "Success"); } else { Response.Write(return_msg); GetData(OrderId); } // _hotelOrderService.Update(Order.id, HotelStatusManager.OrderStatus.Refunding.StatusId.ToString()); scope.Complete(); } } }
/// <summary> /// 获取订单状态 /// </summary> /// <param name="order"></param> private void GetOrderStatusMsg(GetHotelOrderResponse order) { orderStatus = order.OrderStatus; //支付状态下默认退款金额为订单总额 if (orderStatus == HotelStatusManager.OrderStatus.Payed.StatusId) { var result = GetPrice(order); txtAmount.Text = result.ToString(); if (isAdmin) { hidConfirmStr.Value = "确定执行【退款】操作吗?"; // WHEN 0 THEN ''未支付'' // WHEN 1 THEN ''已支付'' // WHEN 2 THEN ''已使用'' // WHEN 3 THEN ''申请退款'' // WHEN 4 THEN ''已退款'' if (_listCode != null && _listCode.Any(c => c.Status == 2))//订单中有验证码已使用 { hidConfirmStr.Value = string.Format("{0},{1}", "订单中有验证码已使用", hidConfirmStr.Value); } } } else if (orderStatus == HotelStatusManager.OrderStatus.Refunding.StatusId || orderStatus == HotelStatusManager.OrderStatus.Refunded.StatusId) { tuidan = hotelService.GetModel(order.id, order.hotelid.Value); if (tuidan != null && tuidan.operateUser > 0) { var manager = new BLL.manager().GetModel(tuidan.operateUser); uName = manager.real_name; roleName = new WeiXinPF.BLL.manager_role().GetTitle(manager.role_id); } } }