/// <summary> /// 发送同步支付模板信息 /// </summary> /// <param name="order"></param> /// <returns></returns> private static bool SendSyncResultMessage(OnlineOrder order) { try { if (order.PaymentChannel != PaymentChannel.WeiXinPay) { return(true); } switch (order.OrderType) { case OnlineOrderType.MonthCardRecharge: { return(TemplateMessageServices.SendMonthCardRechargeSuccess(order.CompanyID, order.PlateNo, order.PKName, order.Amount, order.ExitTime, order.PayAccount)); } case OnlineOrderType.ParkFee: { return(TemplateMessageServices.SendParkCarPaymentSuccess(order.CompanyID, order.PlateNo, order.PKName, order.Amount, order.EntranceTime, order.OrderTime, order.RealPayTime, order.ExitTime, order.PayAccount)); } case OnlineOrderType.PkBitBooking: { return(true); } case OnlineOrderType.SellerRecharge: { IParkSeller factory = ParkSellerFactory.GetFactory(); ParkSeller model = factory.QueryBySellerId(order.InOutID); if (model == null) { throw new MyException("商家不存在"); } return(TemplateMessageServices.SendSellerRechargeSuccess(order.CompanyID, order.Amount, model.Balance, order.RealPayTime, order.PayAccount)); } default: throw new MyException("同步支付结果时找不到订单类型"); } } catch (Exception ex) { ExceptionsServices.AddExceptionToDbAndTxt("OnlineOrderServices", "发送模板信息失败:订单编号:" + order.OrderID + "", ex, LogFrom.WeiXin); return(false); } }
private static bool Refund(OnlineOrder model, string certpath) { IOnlineOrder factory = OnlineOrderFactory.GetFactory(); bool refundResult = false; string refundOrderId = IdGenerator.Instance.GetId().ToString(); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); refundResult = factory.RefundSuccess(model.OrderID, refundOrderId, dbOperator); if (!refundResult) { throw new MyException("更改订单为退款成功时失败"); } switch (model.PaymentChannel) { case PaymentChannel.WeiXinPay: { string refundAmount = ((int)(model.Amount * 100)).ToString(); refundResult = PaymentServices.Refund(model.CompanyID, model.SerialNumber, model.OrderID.ToString(), refundAmount, refundAmount, refundOrderId, certpath); TxtLogServices.WriteTxtLogEx("OnlineOrderServices", string.Format("方法名:{0},操作类型:{1},订单编号:{2},备注:{3} {4}", "Refund", "订单退款处理", model.OrderID, model.SerialNumber.ToString(), (model.Amount / 100).ToString("F2"), refundOrderId)); if (!refundResult) { throw new MyException("微信退款失败"); } break; } case PaymentChannel.AliPay: { refundResult = AliPayApiServices.RefundRequest(model.CompanyID, model.OrderID.ToString(), model.SerialNumber.ToString(), model.Amount.ToString("F2"), "车场网络异常", refundOrderId); TxtLogServices.WriteTxtLogEx("OnlineOrderServices", string.Format("方法名:{0},操作类型:{1},订单编号:{2},备注:{3} {4}", "Refund", "订单退款处理", model.OrderID, model.SerialNumber.ToString(), (model.Amount / 100).ToString("F2"), refundOrderId)); if (!refundResult) { throw new MyException("支付宝退款失败"); } break; } default: throw new MyException("退款渠道不正确"); } dbOperator.CommitTransaction(); TxtLogServices.WriteTxtLogEx("OnlineOrderServices", "方法名:{0},操作类型:{1},订单编号:{2},备注:{3}", "Refund", "订单退款处理", model.OrderID, "退款成功"); } catch (Exception ex) { refundResult = false; dbOperator.RollbackTransaction(); ExceptionsServices.AddExceptionToDbAndTxt("OnlineOrderServices", string.Format("订单退款失败,订单编号{0},描述:{1}", model.OrderID, ex.Message), ex, LogFrom.WeiXin); } if (!refundResult) { factory.RefundFail(model.OrderID); } if (model.PaymentChannel == PaymentChannel.WeiXinPay) { if (!refundResult) { switch (model.OrderType) { case OnlineOrderType.PkBitBooking: { TemplateMessageServices.SendBookingBitNoRefundFail(model.CompanyID, model.OrderID.ToString(), "车场网络异常", model.Amount, model.PayAccount); break; } case OnlineOrderType.SellerRecharge: { TemplateMessageServices.SendSellerRechargeRefundFail(model.CompanyID, model.OrderID.ToString(), "车场网络异常", model.Amount, model.PayAccount); break; } default: { TemplateMessageServices.SendParkingRefundFail(model.CompanyID, model.OrderID.ToString(), "车场网络异常", model.Amount, model.PayAccount); break; } } } else { string message = string.IsNullOrWhiteSpace(model.Remark) ? "车场网络异常" : model.Remark; switch (model.OrderType) { case OnlineOrderType.PkBitBooking: { TemplateMessageServices.SendBookingBitNoRefundSuccess(model.CompanyID, model.OrderID.ToString(), message, model.Amount, model.PayAccount); break; } case OnlineOrderType.SellerRecharge: { TemplateMessageServices.SendSellerRechargeRefundSuccess(model.CompanyID, model.OrderID.ToString(), message, model.Amount, model.PayAccount); break; } default: { TemplateMessageServices.SendParkingRefundSuccess(model.CompanyID, model.OrderID.ToString(), message, model.Amount, model.PayAccount); break; } } } } } return(refundResult); }