Esempio n. 1
0
        public async Task <QueryReturnModel> Query(string mchid, string orderid, string sign)
        {
            QueryReturnModel r = new QueryReturnModel();
            SortedDictionary <string, string> para = new SortedDictionary <string, string>();

            para.Add("mchid", mchid);
            para.Add("orderid", orderid);

            string temp = string.Format("{0}&key={1}", OnlinePay.GetParamSrc(para), WebConfig.MchKey);

            Dos.Common.LogHelper.Debug(temp);

            if (mchid != WebConfig.MchId)
            {
                Dos.Common.LogHelper.Debug(" Query 商户号不存在");
                r.ReturnMsg = "商户号不存在";
                return(r);
            }

            string cusSign = Dos.Common.EncryptHelper.MD5EncryptWeChat(temp, "utf-8");

            if (cusSign.ToLower() != sign.ToLower())
            {
                Dos.Common.LogHelper.Debug(" Query 签名错误");
                r.ReturnMsg = "签名错误";
                return(r);
            }

            return(await PayOrderBll._.Query(mchid, orderid));
        }
Esempio n. 2
0
        /// <summary>
        /// 查询接口
        /// </summary>
        /// <param name="mchid"></param>
        /// <param name="orderid"></param>
        /// <param name="sign"></param>
        /// <returns></returns>
        public async Task <QueryReturnModel> Query(string mchid, string orderid)
        {
            QueryReturnModel r = new QueryReturnModel();

            if (mchid != WebConfig.MchId)
            {
                r.ReturnMsg = "商户号不存在";
                return(r);
            }

            SettleOrder order = DbContext._.Db.From <SettleOrder>().Where(p => p.Order_id == orderid).ToFirstDefault();

            if (order == null || string.IsNullOrEmpty(order.Order_id))
            {
                r.ReturnMsg = "订单不存在";
                return(r);
            }

            if (order.Status == 1)
            {
                r.ReturnMsg    = "ok";
                r.IsPay        = 1;
                r.OrderNumber  = order.Order_id;
                r.SerialNumber = order.Plat_order_id;
                r.Totalfee     = order.Pay_amount;
                r.Attach       = order.Attach;
                return(r);
            }
            else
            {
                SettleMch mch = OnlineSettle.GetMch(order.Mch_id);

                if (mch == null)
                {
                    r.ReturnMsg = "平台商户信息错误";
                    return(r);
                }

                SettlePlat plat = OnlineSettle.GetPlat(mch.Plat_id);
                if (plat == null)
                {
                    r.ReturnMsg = "平台渠道信息错误";
                    return(r);
                }

                OnlineSettle onlinepay = (OnlineSettle)Activator.CreateInstance(Type.GetType(plat.Plat_class), plat, mch);


                r = await onlinepay.OrderQuery(order.Order_id);

                if (r.ReturnMsg == "ok" && r.IsPay == 1)
                {
                    order.Attach(EntityState.Modified);
                    order.Status = 1;
                    if (r.Totalfee > 0)
                    {
                        order.Pay_amount = r.Totalfee;
                    }

                    order.Finish_time = DateTime.Now.ToTimeStamp();
                    order.Returnmsg   = r.ReturnMsg;
                    DbContext._.Db.Save(order);
                }
                else
                {
                    order.Attach(EntityState.Modified);
                    order.Returnmsg = r.ReturnMsg;
                    DbContext._.Db.Save(order);
                }

                return(r);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 查询接口
        /// </summary>
        /// <param name="mchid"></param>
        /// <param name="orderid"></param>
        /// <param name="sign"></param>
        /// <returns></returns>
        public async Task <QueryReturnModel> Query(string mchid, string orderid)
        {
            QueryReturnModel r = new QueryReturnModel();

            if (mchid != WebConfig.MchId)
            {
                Dos.Common.LogHelper.Debug("商户号不存在");
                r.ReturnMsg = "商户号不存在";
                return(r);
            }

            PayOrder order = DbContext._.Db.From <PayOrder>().Where(p => p.Order_id == orderid.SqlFilters()).ToFirstDefault();

            if (order == null || string.IsNullOrEmpty(order.Order_id))
            {
                Dos.Common.LogHelper.Debug("订单不存在");
                r.ReturnMsg = "订单不存在";
                return(r);
            }
            if (order.Status == 1)
            {
                r.ReturnMsg    = "ok";
                r.IsPay        = true;
                r.OrderNumber  = order.Order_id;
                r.SerialNumber = order.Plat_order_id;
                r.Totalfee     = order.Pay_amount;
                r.Attach       = order.Attach;
                return(r);
            }
            else
            {
                PayMch mch = OnlinePay.GetMch(order.Mch_id);

                if (mch == null)
                {
                    Dos.Common.LogHelper.Debug("平台商户信息错误");
                    r.ReturnMsg = "平台商户信息错误";
                    return(r);
                }

                PayPlat plat = OnlinePay.GetPlat(mch.Plat_id);
                if (plat == null)
                {
                    Dos.Common.LogHelper.Debug("平台渠道信息错误");
                    r.ReturnMsg = "平台渠道信息错误";
                    return(r);
                }
                try
                {
                    OnlinePay onlinepay = (OnlinePay)Activator.CreateInstance(Type.GetType(plat.Plat_class), plat, mch);

                    r = await onlinepay.OrderQuery(order.Order_id);
                }
                catch (Exception ex)
                {
                    Dos.Common.LogHelper.Debug("第三方查询下单失败1:" + ex.Message);
                    throw ex;
                }

                try
                {
                    if (r.ReturnMsg == "ok" && r.IsPay)
                    {
                        order.Attach(EntityState.Modified);
                        order.Status = 1;
                        if (r.Totalfee > 0)
                        {
                            order.Pay_amount = r.Totalfee;
                        }

                        order.Finish_time = DateTime.Now.ToTimeStamp();
                        DbContext._.Db.Save(order);
                    }
                    else
                    {
                        Dos.Common.LogHelper.Debug("第三方查询结果:ReturnMsg " + r.ReturnMsg + "## IsPay " + r.IsPay);
                    }
                }
                catch (Exception ex)
                {
                    Dos.Common.LogHelper.Debug("第三方查询下单失败2:" + ex.Message);
                    throw ex;
                }

                return(r);
            }
        }