示例#1
0
        /// <summary>
        /// 查询支付情况
        /// </summary>
        /// <param name="quickPayment_Object"></param>
        /// <returns></returns>
        public TVMResult <TVMPayInfo> QueryPay(QuickPayment_Object quickPayment_Object)
        {
            var result = new TVMResult <TVMPayInfo>
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Message    = "查询失败"
            };
            TVMPayInfo payInfo = quickPayment_Object.PayData;

            if (quickPayment_Object.PayData == null)
            {
                result.Message = "查询失败,信息丢失";
                return(result);
            }

            var tbl_Order = _orderService.Get(payInfo.m_PayPassOrderID);

            if (tbl_Order == null)
            {
                result.Message = "订单不存在";
                return(result);
            }
            result.ResultCode = 0;
            result.Message    = "成功";
            result.Data       = payInfo;
            return(result);
        }
示例#2
0
        /// <summary>
        /// 订单项核销
        /// </summary>
        /// <param name="qRcodes"></param>
        public TVMResult <bool> VerifyTicket(List <TVMTicketInfo> list)
        {
            TVMResult <bool> result = new TVMResult <bool>
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Data       = false,
                Message    = "失败"
            };

            try
            {
                _orderService.BeginTran();
                foreach (var row in list)
                {
                    var tbl_OrderDetail = _orderDetailService.UpdatePrintTicketStatus(Convert.ToInt32(row.Remarks));
                    _noticeOrderConsumedService.Update(tbl_OrderDetail);
                }
                //提交事物
                _orderService.CommitTran();

                result.ResultCode = 0;
                result.Message    = "成功";
                result.Data       = true;
                return(result);
            }
            catch
            {
                _orderService.RollbackTran();
                return(result);
            }
        }
示例#3
0
        /// <summary>
        /// 订单提取
        /// </summary>
        /// <param name="number">取票号码:身份证或凭证码</param>
        /// <param name="CheckType">取票类型 1、凭证码。2、身份证。3、扫码</param>
        /// <returns></returns>
        public TVMResult <TVMTicketInfo[]> GetTicketOrder(string number, int CheckType)
        {
            TVMResult <TVMTicketInfo[]> result = new TVMResult <TVMTicketInfo[]>
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Message    = "失败"
            };
            var ticketInfos = new List <TVMTicketInfo>();
            List <Tbl_OrderDetail> orderDetails = new List <Tbl_OrderDetail>();

            if (CheckType == 2)
            {
                //身份证
                var list = _orderDetailService.GetOtaByIdCard(UserKey.ScenicId, number);
                if (list.Count <= 0)
                {
                    return(result);
                }
                orderDetails.AddRange(list);
            }
            else
            {
                //凭证码
                var orderDetail = _orderDetailService.GetOtaByCertificateNo(UserKey.ScenicId, number);
                if (orderDetail == null)
                {
                    return(result);
                }
                orderDetails.Add(orderDetail);
            }
            foreach (var orderDetail in orderDetails)
            {
                string code = SecurityExtension.DesEncrypt(orderDetail.QRcode, AppSettingsConfig.QrCodeKey);
                ticketInfos.Add(new TVMTicketInfo
                {
                    OrderID       = orderDetail.OrderNo,                  //订单详情id
                    TicketName    = orderDetail.TicketName,               //门票名称
                    GeneralPrice  = (double)orderDetail.SettlementPrice,  //门票票面价格
                    DiscountPrice = (double)orderDetail.Price,            //门票销售价格
                    StartDate     = orderDetail.ValidityDateStart,        //开始日期
                    EndDate       = orderDetail.ValidityDateEnd,          //结束日期
                    ChannelType   = "",                                   //
                    ENSBARCODE    = code,                                 //加密二维码
                    sbarcode      = orderDetail.CertificateNO,            //凭证号
                    PeopleCount   = orderDetail.Quantity,                 //人数
                    Remarks       = orderDetail.OrderDetailId.ToString(), //订单详情id
                    StartTime     = orderDetail.ValidityDateStart,
                    EndTime       = orderDetail.ValidityDateEnd,
                    SellPlan      = "",//
                });
            }
            result.Data       = ticketInfos.ToArray();
            result.ResultCode = 0;
            result.Message    = "成功";
            return(result);
        }
示例#4
0
        public TVMResult <TVMExtendData> TransparentTVM(TVMExtendData obj)
        {
            _log.Info("透传接口TransparentTVM:" + JsonHelper.ObjectToJsonStr(obj));
            TVMResult <TVMExtendData> result = new TVMResult <TVMExtendData>();

            result.ResultCode = 0;
            result.SysDate    = DateTime.Now;
            result.Data       = _TVMFacadeService.GetScanTicketList(obj);
            return(result);
        }
示例#5
0
        public TVMResult <TVM_Heartbeat_Object> Heartbeat(TVM_Heartbeat_Object obj)
        {
            //_log.Info("心跳Heartbeat:" + JsonHelper.ObjectToJsonStr(obj));
            TVMResult <TVM_Heartbeat_Object> result = new TVMResult <TVM_Heartbeat_Object>();

            result.ResultCode = 0;
            result.SysDate    = DateTime.Now;
            result.Data       = new TVM_Heartbeat_Object()
            {
                Device  = obj.Device,
                SysTime = DateTime.Now
            };
            //_log.Debug(obj);
            return(result);
        }
        /// <summary>
        /// 查询支付情况
        /// </summary>
        /// <param name="quickPayment_Object"></param>
        /// <returns></returns>
        public TVMResult <TVMPayInfo> QueryPay(QuickPayment_Object quickPayment_Object)
        {
            var result = new TVMResult <TVMPayInfo>
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Message    = "查询失败"
            };
            TVMPayInfo payInfo = quickPayment_Object.PayData;

            if (quickPayment_Object.PayData == null)
            {
                result.Message = "查询失败,信息丢失";
                return(result);
            }

            //确认支付是否成功,每隔一段时间查询一次订单,共查询5次--订单有效时间10秒
            int queryTimes = 5;//查询次数计数器

            while (queryTimes-- > 0)
            {
                var tbl_Order = _orderService.GetByAuthCode(payInfo.ScannerPayCode);
                if (tbl_Order == null)
                {
                    Thread.Sleep(2000);
                    continue;
                }
                result.ResultCode = 0;
                result.Message    = "成功";
                result.Data       = new TVMPayInfo()
                {
                    payResult        = true,
                    payType          = tbl_Order.PayType.ToString(),
                    PayMsg           = "支付成功",
                    return_trade_no  = tbl_Order.PayTradeNo,
                    m_PayPassOrderID = tbl_Order.OrderNo,
                    merchantCode     = quickPayment_Object.PayData.merchantCode,   //商户id
                    terminalNo       = quickPayment_Object.PayData.terminalNo,     //终端编号
                    TerminalType     = quickPayment_Object.PayData.TerminalType,   //终端类型
                    strPaymoney      = tbl_Order.TotalAmount.ToString(),           //支付金额
                    ScannerPayCode   = quickPayment_Object.PayData.ScannerPayCode, //支付码
                    postOrder        = quickPayment_Object.PayData.postOrder
                };
                return(result);
            }
            result.Message = "订单不存在";
            return(result);
        }
示例#7
0
        /// <summary>
        /// 获取产品信息
        /// </summary>
        /// <returns></returns>
        public TVMResult <GUITikcetConfig> GetTicketList()
        {
            TVMResult <GUITikcetConfig> result = new TVMResult <GUITikcetConfig>
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Message    = "查询失败"
            };

            var scenic = _scenicService.Get(UserKey.ScenicId);

            if (scenic == null)
            {
                return(result);
            }
            var ticketList = _ticketService.GetScanTicketList(UserKey.ScenicId, DateTime.Now.Date);

            if (ticketList.Count <= 0)
            {
                return(result);
            }
            List <TVMParkInfo> ParkInfos = new List <TVMParkInfo>();
            TVMParkInfo        ParkInfo  = new TVMParkInfo();

            ParkInfo.TicketList  = new List <TVMTicketType>();
            ParkInfo.ParkName    = scenic.ScenicName; //景区名称
            ParkInfo.ParkName_En = "";
            ParkInfo.ParkType    = 1;                 //景区类型
            ParkInfo.TicketIndex = 0;                 //景区序号
            foreach (var row in ticketList)
            {
                TVMTicketType TicketType = new TVMTicketType();
                TicketType.TicketID      = row.TicketId;
                TicketType.TicketName    = row.TicketName;
                TicketType.TicketName_En = "";
                TicketType.TicketPrice   = Convert.ToDouble(row.TicketPrice);
                ParkInfo.TicketList.Add(TicketType);
            }
            ParkInfos.Add(ParkInfo);
            result.ResultCode = 0;
            result.Message    = "成功";
            result.Data       = new GUITikcetConfig()
            {
                tvmSpotsList = ParkInfos
            };
            return(result);
        }
示例#8
0
        public TVMResult <TVMConfig> GetConfig(TVMDevice device)
        {
            _log.Info("获取设备配置GetConfig:" + JsonHelper.ObjectToJsonStr(device));
            TVMResult <TVMConfig> result = new TVMResult <TVMConfig>();

            result.ResultCode = 0;
            result.SysDate    = DateTime.Now;
            result.Data       = new TVMConfig()
            {
                AdminIDCard      = "00000",
                CSPhoneNumber    = "13012345678",
                FunctionMode     = "FunctionMode",
                HostIP           = "192.168.1.156",
                HostName         = "HostName",
                MobileTerminalID = "safsadfasdfsaf",
                PaymentMode      = "safasfasf"
            };
            return(result);
        }
示例#9
0
        /// <summary>
        /// 销售门票请求票务详情
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public TVMResult <List <SaleTicket_Result> > SaleTicket(QuickPayment_Object quickPayment_Object)
        {
            var result = new TVMResult <List <SaleTicket_Result> >
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Message    = "失败",
                Data       = new List <SaleTicket_Result>()
            };
            TVMPayInfo payInfo = quickPayment_Object.PayData;

            if (quickPayment_Object.PayData == null)
            {
                result.Message = "查询失败,信息丢失";
                return(result);
            }
            var tbl_Order = _orderService.Get(payInfo.m_PayPassOrderID);

            if (tbl_Order == null)
            {
                result.Message = "订单不存在";
                return(result);
            }
            var orderDetails = _orderDetailService.GetList(payInfo.m_PayPassOrderID);

            try
            {
                _orderService.BeginTran();
                foreach (var row in orderDetails)
                {
                    var tbl_OrderDetail = _orderDetailService.UpdatePrintTicketStatus(row.OrderDetailId);
                    _noticeOrderConsumedService.Update(tbl_OrderDetail);
                }
                //提交事物
                _orderService.CommitTran();
            }
            catch
            {
                _orderService.RollbackTran();
            }
            foreach (var row in orderDetails)
            {
                string code = SecurityExtension.DesEncrypt(row.QRcode, AppSettingsConfig.QrCodeKey);
                result.Data.Add(new SaleTicket_Result
                {
                    OrderID        = row.OrderNo, //订单详情id
                    StrInvoiceCode = code,        //交易号
                    TicketName     = row.TicketName,
                    TicketId       = row.TicketId.ToString(),
                    TypeName       = "",
                    StartDate      = row.ValidityDateStart,
                    EndDate        = row.ValidityDateEnd,
                    Price          = Convert.ToDouble(row.Price),
                    GeneralPrice   = Convert.ToDouble(row.Price * row.Quantity),
                    PeopleCount    = row.Quantity,
                    ENSBARCODE     = code,              //加密的条码
                    Sbarcode       = row.CertificateNO, //凭证号
                    Remarks        = "限当日有效"
                });
            }
            result.ResultCode = 0;
            result.Message    = "成功";
            return(result);
        }
示例#10
0
        /// <summary>
        /// 创建订单并支付
        /// </summary>
        /// <param name="quickPayment_Object"></param>
        /// <returns></returns>
        public TVMResult <TVMPayInfo> QuickPayment(QuickPayment_Object quickPayment_Object)
        {
            var result = new TVMResult <TVMPayInfo>
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Message    = "订单创建异常,订单创建失败"
            };
            TVMPayInfo payInfo = quickPayment_Object.PayData;

            if (payInfo.postOrder.Count == 0)
            {
                result.Message = "未找到门票信息";
                return(result);
            }
            if (string.IsNullOrEmpty(payInfo.ScannerPayCode))
            {
                result.Message = "支付码未被扫描到,请联系管理员";
                return(result);
            }
            int payType = 0;//道控支付类型 0:支付宝 1:微信

            if (!int.TryParse(payInfo.payType, out payType) || payType < 0 || payType >= 2)
            {
                result.Message = "支付方式不明确,请联系管理员";
                return(result);
            }
            payType = payType == 1 ? (int)PayStatus.Wechat : (int)PayStatus.Alipay;
            var orderInfo = new OrderInfoModel
            {
                Code           = payInfo.ScannerPayCode, //支付码
                PayType        = payType,                //支付类型 1:支付宝 2:微信
                ValidityDate   = DateTime.Now.Date,
                Mobile         = "",
                Linkman        = "",
                TicketCategory = (int)TicketCategoryStatus.QrCodePrintTicket,
                TicketSource   = (int)TicketSourceStatus.ScenicSpot,
                TicketItem     = new List <TicketItemModel>()
            };

            foreach (var row in payInfo.postOrder)
            {
                orderInfo.TicketItem.Add(new TicketItemModel
                {
                    TicketId  = row.ProductID,
                    BookCount = row.ProductCount
                });
            }

            var tbl_Tickets      = _ticketService.GetTickets(payInfo.postOrder.Select(a => a.ProductID).ToList());
            var tbl_Order        = _orderService.AddOrderForNoPay(orderInfo);
            var tbl_OrderDetails = _orderDetailService.AddOrderDetailForQrCodeNoPay(orderInfo, tbl_Order);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetails);
            var tbl_Ticket_Testing = _ticketTestingService.addTicketTestings(tbl_Order, tbl_OrderDetails);

            _ticketService.UpdateTicketBySellCount(tbl_Tickets, tbl_OrderDetails);
            var tbl_SaleLog = _saleLogService.addSaleLog(tbl_Order);


            if (orderInfo.PayType == (int)PayStatus.Wechat)
            {
                var payResult = _wxPayGateway.OrderPay(tbl_Order.TicketName, tbl_Order.TotalAmount, payInfo.ScannerPayCode);
                if (!payResult.Success)
                {
                    result.Message = payResult.Message;
                    return(result);
                }
                tbl_Order.PayTradeNo = payResult.OutTradeNo;
            }
            else if (orderInfo.PayType == (int)PayStatus.Alipay)
            {
                var payResult = _alipayPayGateway.OrderPay(tbl_Order.TicketName, tbl_Order.TotalAmount.ToString(), payInfo.ScannerPayCode);
                if (!payResult.Success)
                {
                    result.Message = payResult.Message;
                    return(result);
                }
                tbl_Order.PayTradeNo = payResult.OutTradeNo;
            }

            try
            {
                using (SqlConnection connection = new SqlConnection(DbConfig.TicketConnectionString))
                {
                    connection.Open();
                    var trans = connection.BeginTransaction();
                    SqlBulkInsert.Inert(tbl_Order, connection, trans);
                    SqlBulkInsert.Inert(tbl_OrderDetails, connection, trans);
                    SqlBulkInsert.Inert(tbl_Ticket_Testing, connection, trans);
                    _ticketService.UpdateTicket(tbl_Tickets, connection, trans);
                    SqlBulkInsert.Inert(tbl_SaleLog, connection, trans);
                    trans.Commit();
                }
                result.ResultCode = 0;
                result.Message    = "成功";
                result.Data       = new TVMPayInfo()
                {
                    payResult        = true,
                    payType          = tbl_Order.PayType.ToString(),
                    PayMsg           = "支付成功",
                    return_trade_no  = tbl_Order.PayTradeNo,
                    m_PayPassOrderID = tbl_Order.OrderNo,
                    merchantCode     = quickPayment_Object.PayData.merchantCode,   //商户id
                    terminalNo       = quickPayment_Object.PayData.terminalNo,     //终端编号
                    TerminalType     = quickPayment_Object.PayData.TerminalType,   //终端类型
                    strPaymoney      = tbl_Order.TotalAmount.ToString(),           //支付金额
                    ScannerPayCode   = quickPayment_Object.PayData.ScannerPayCode, //支付码
                    postOrder        = quickPayment_Object.PayData.postOrder
                };
                return(result);
            }
            catch (Exception ex)
            {
                if (orderInfo.PayType == (int)PayStatus.Wechat && !string.IsNullOrEmpty(tbl_Order.PayTradeNo))
                {
                    var isCancel = _wxPayGateway.Cancel(tbl_Order.PayTradeNo);
                    if (!isCancel)
                    {
                        result.Message = "系统异常,订单创建失败,请联系景区人员进行退款!";
                    }
                }
                else if (orderInfo.PayType == (int)PayStatus.Alipay && !string.IsNullOrEmpty(tbl_Order.PayTradeNo))
                {
                    var isCancel = _alipayPayGateway.Cancel(tbl_Order.PayTradeNo, tbl_Order.TotalAmount.ToString());
                    if (!isCancel)
                    {
                        result.Message = "系统异常,订单创建失败,请联系景区人员进行退款!";
                    }
                }
            }
            return(result);
        }