Example #1
0
        /// <summary>
        /// 查询支付
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static TVMResult <TVMPayInfo> QueryPay(QuickPayment_Object obj)
        {
            var data   = JsonSerializeHelper.ToJson(obj);
            var result = HttpHelper.Post(urlTvm + "QueryPay", data, 60);

            return(JsonSerializeHelper.ToObject <TVMResult <TVMPayInfo> >(result));
        }
Example #2
0
        /// <summary>
        /// 门票售卖
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static TVMResult <List <SaleTicket_Result> > SaleTicket(QuickPayment_Object obj)
        {
            var data   = JsonSerializeHelper.ToJson(obj);
            var result = HttpHelper.Post(urlTvm + "SaleTicket", data, 60);

            return(JsonSerializeHelper.ToObject <TVMResult <List <SaleTicket_Result> > >(result));
        }
Example #3
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);
        }
        public TVMResult <TVMPayInfo> QueryPay(QuickPayment_Object obj)
        {
            _log.Info("查询微信、支付宝支付情况QueryPay:" + JsonHelper.ObjectToJsonStr(obj));
            var data = _TVMFacadeService.QueryPay(obj);

            _log.Info("查询微信、支付宝支付情况QueryPay结果:" + JsonHelper.ObjectToJsonStr(data));
            return(data);
        }
        public TVMResult <List <SaleTicket_Result> > SaleTicket(QuickPayment_Object obj)
        {
            _log.Info("门票售卖SaleTicket:" + JsonHelper.ObjectToJsonStr(obj));

            var data = _TVMFacadeService.SaleTicket(obj);

            _log.Info("门票售卖SaleTicket结果:" + JsonHelper.ObjectToJsonStr(data));
            return(data);
        }
        public TVMResult <TVMPayInfo> QuickPayment(QuickPayment_Object obj)
        {
            _log.Info("快捷支付QuickPayment:" + JsonHelper.ObjectToJsonStr(obj));

            var data = _TVMFacadeService.QuickPayment(obj);

            _log.Info("快捷支付QuickPayment结果:" + JsonHelper.ObjectToJsonStr(data));
            return(data);
        }
        /// <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);
        }
Example #8
0
        /// <summary>
        /// 创建单个产品订单
        /// </summary>
        private void CreateSingleOrder()
        {
            var deviceKey = comboBox1.Text;
            ////道控支付类型 0:支付宝 1:微信
            QuickPayment_Object request = new QuickPayment_Object
            {
                Device = new TVMDevice
                {
                    DeviceKey = deviceKey.Split(',')[0]
                },
                PayData = new TVMPayInfo
                {
                    payType        = comboBox3.Text == "支付宝" ? "0" : "1",
                    ScannerPayCode = textBox3.Text,
                    postOrder      = new List <ProductInfo>(),
                    merchantCode   = "",
                    terminalNo     = "",
                    TerminalType   = ""
                }
            };

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (dataGridView1.Rows[i].Selected == true)
                {
                    request.PayData.postOrder.Add(new ProductInfo
                    {
                        ProductCount = Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value),
                        ProductID    = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value),
                        ProductName  = dataGridView1.Rows[i].Cells[0].Value.ToString(),
                        ProductPrice = Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value)
                    });
                }
            }
            if (request.PayData.postOrder.Count <= 0)
            {
                MessageBox.Show("请选择你要购买的产品");
                return;
            }
            var result = 闸机类.QuickPayment(request);

            SetMsg(string.Format("支付订单:{0} {1} \r\n", result.ResultCode, result.Message));
            if (result.ResultCode == 0)
            {
                var requertQueryPay = 闸机类.QueryPay(request);
                SetMsg(string.Format("查询支付:{0} {1} \r\n", requertQueryPay.ResultCode, requertQueryPay.Message));

                if (requertQueryPay.ResultCode == 0)
                {
                    SetMsg("查询支付详情: \r\n" + JsonHelper.ObjectToJson(requertQueryPay.Data));
                }

                //SetMsg("支付成功: \r\n" + JsonHelper.ObjectToJson(result));
                SetMsg("支付成功: 订单号 " + result.Data.m_PayPassOrderID + "\r\n");

                var saleResult = 闸机类.SaleTicket(new QuickPayment_Object
                {
                    Device  = new TVMDevice(),
                    PayData = new TVMPayInfo
                    {
                        m_PayPassOrderID = result.Data.m_PayPassOrderID
                    }
                });
                SetMsg(string.Format("获取订单详情:{0} {1} \r\n", saleResult.ResultCode, saleResult.Message));
                if (saleResult.ResultCode == 0)
                {
                    SetMsg("获取订单详情: \r\n" + JsonHelper.ObjectToJson(saleResult.Data));
                }
            }
        }
Example #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);
        }
Example #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);
        }