コード例 #1
0
ファイル: GroupBuyDao.cs プロジェクト: tyriankid/WFX
        private bool SetGroupBuyFailed(int groupBuyId)
        {
            IDataReader   reader;
            StringBuilder builder = new StringBuilder();

            builder.Append("update Hishop_Orders set OrderStatus = 6 where GroupBuyId = @GroupBuyId and OrderStatus = 2;");
            builder.AppendFormat("update Hishop_Orders set OrderStatus = 4,CloseReason='{0}' where GroupBuyId = @GroupBuyId and OrderStatus = 1;", "团购失败,自动关闭");
            builder.Append("UPDATE Hishop_GroupBuy SET Status = 5,SoldCount = 0 WHERE GroupBuyId = @GroupBuyId AND (select Count(1) from Hishop_Orders where GroupBuyId = @GroupBuyId and OrderStatus = 6) >0;");
            builder.Append("UPDATE Hishop_GroupBuy SET Status = 4,SoldCount = 0 WHERE GroupBuyId = @GroupBuyId AND (select Count(1) from Hishop_Orders where GroupBuyId = @GroupBuyId and OrderStatus = 6) =0;");
            builder.Append("  select OrderId,TelPhone,CellPhone,ShippingRegion+[Address] as [Address],ShipTo from Hishop_Orders where GroupBuyId = @GroupBuyId and OrderStatus = 6; ");
            DbCommand sqlStringCommand = this.database.GetSqlStringCommand(builder.ToString());

            this.database.AddInParameter(sqlStringCommand, "GroupBuyId", DbType.Int32, groupBuyId);
            using (reader = this.database.ExecuteReader(sqlStringCommand))
            {
                RefundInfo refundInfo = new RefundInfo();
                RefundDao  dao        = new RefundDao();
                while (reader.Read())
                {
                    refundInfo.OrderId      = reader["OrderId"].ToString();
                    refundInfo.RefundRemark = "团购失败,申请退款";
                    refundInfo.ApplyForTime = DateTime.Now;
                    refundInfo.HandleStatus = RefundInfo.Handlestatus.Applied;
                    dao.AddRefund(refundInfo);
                }
            }
            builder.Clear();
            builder.Append("select c.SkuId,c.Quantity from Hishop_GroupBuy a left join Hishop_Orders b on a.GroupBuyId = b.GroupBuyId left join Hishop_OrderItems c on b.OrderId = c.OrderId left join Hishop_SKUs d on c.SkuId = d.SkuId where a.GroupBuyId =@GroupBuyId and b.OrderStatus = 6");
            sqlStringCommand = this.database.GetSqlStringCommand(builder.ToString());
            this.database.AddInParameter(sqlStringCommand, "GroupBuyId", DbType.Int32, groupBuyId);
            Dictionary <string, int> source = new Dictionary <string, int>();

            using (reader = this.database.ExecuteReader(sqlStringCommand))
            {
                while (reader.Read())
                {
                    Dictionary <string, int> dictionary2;
                    string str2;
                    string key = reader.GetString(0);
                    if (!source.ContainsKey(key))
                    {
                        source[key] = 0;
                    }
                    (dictionary2 = source)[str2 = key] = dictionary2[str2] + reader.GetInt32(1);
                }
            }
            builder.Clear();
            for (int i = 0; i < source.Count; i++)
            {
                builder.AppendFormat("update Hishop_SKUs set Stock=Stock+{1} where SKUId = '{0}';", source.ElementAt <KeyValuePair <string, int> >(i).Key, source.ElementAt <KeyValuePair <string, int> >(i).Value);
            }
            this.database.ExecuteNonQuery(CommandType.Text, builder.ToString());
            return(true);
        }
コード例 #2
0
        public static bool UpdateByReturnsId(RefundInfo refundInfo)
        {
            bool flag = new RefundDao().UpdateByReturnsId(refundInfo);

            if (refundInfo.HandleStatus == RefundInfo.Handlestatus.Refunded)
            {
                try
                {
                    if (OrderHelper.GetOrderInfo(refundInfo.OrderId) != null)
                    {
                        Messenger.SendWeiXinMsg_RefundSuccess(refundInfo);
                    }
                }
                catch (Exception)
                {
                }
            }
            return(flag);
        }
コード例 #3
0
        public static bool UpdateByReturnsId(RefundInfo refundInfo)
        {
            bool result = new RefundDao().UpdateByReturnsId(refundInfo);

            if (refundInfo.HandleStatus == RefundInfo.Handlestatus.Refunded)
            {
                try
                {
                    OrderInfo orderInfo = OrderHelper.GetOrderInfo(refundInfo.OrderId);
                    if (orderInfo != null)
                    {
                        Messenger.SendWeiXinMsg_RefundSuccess(refundInfo);
                    }
                }
                catch (Exception var_2_43)
                {
                }
            }
            return(result);
        }
コード例 #4
0
        public static bool EnsureRefund(string orderId, string Operator, string adminRemark, int refundType, bool accept)
        {
            RefundDao  dao       = new RefundDao();
            RefundInfo byOrderId = dao.GetByOrderId(orderId);

            byOrderId.Operator     = Operator;
            byOrderId.AdminRemark  = adminRemark;
            byOrderId.HandleTime   = DateTime.Now;
            byOrderId.HandleStatus = accept ? RefundInfo.Handlestatus.Refunded : RefundInfo.Handlestatus.Refused;
            byOrderId.OrderId      = orderId;
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(orderId);

            using (TransactionScope scope = new TransactionScope())
            {
                OrderHelper.SetOrderState(orderId, accept ? OrderStatus.Refunded : OrderStatus.BuyerAlreadyPaid);
                dao.UpdateByOrderId(byOrderId);
                if (orderInfo.GroupBuyId > 0)
                {
                    GroupBuyHelper.RefreshGroupFinishBuyState(orderInfo.GroupBuyId);
                }
                scope.Complete();
            }
            return(true);
        }
コード例 #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SiteSettings        masterSettings      = SettingsManager.GetMasterSettings();
            NameValueCollection nameValueCollection = new NameValueCollection
            {
                this.Page.Request.QueryString,
                this.Page.Request.Form
            };
            string parameter = this.GetParameter("HIGW");

            if (!string.IsNullOrEmpty(parameter))
            {
                parameter = parameter.ToLower().Replace("_", ".");
                if (parameter.ToLower().IndexOf("cmpay.d") > -1)
                {
                    parameter = parameter.ToLower().Replace("cmpay.d", "cmpay_d");
                }
                if (parameter.ToLower().IndexOf(".ws.wappay.") > -1)
                {
                    parameter = parameter.ToLower().Replace(".ws.wappay.", ".ws_wappay.");
                }
            }
            else
            {
                parameter = "";
            }
            string text = "";

            if (!string.IsNullOrEmpty(parameter))
            {
                text = ((parameter.ToLower().IndexOf("alipay") <= -1 && parameter.ToLower().IndexOf(".ws_wappay.") <= -1) ? parameter.ToLower().Replace(".payment.", ".refund.") : "hishop.plugins.refund.alipaydirect.directrequest");
            }
            else
            {
                Globals.AppendLog(nameValueCollection, "错误的网关信息" + parameter + "-" + parameter.ToLower().Replace(".payment.", ".refund."), "", "", "/log/refundNotify.txt");
                base.Response.Write("fail");
                base.Response.End();
            }
            this.Notify = Hishop.Plugins.RefundNotify.CreateInstance(text, nameValueCollection);
            parameter   = parameter.Replace(".refund.", ".payment.");
            PaymentModeInfo alipayRefundPaymentMode = TradeHelper.GetAlipayRefundPaymentMode();

            if (alipayRefundPaymentMode == null)
            {
                Globals.AppendLog(nameValueCollection, "错误的网关信息" + parameter + "-" + parameter.ToLower().Replace(".payment.", ".refund."), "", "", "/log/refundNotify.txt");
                base.Response.Write("fail");
                base.Response.End();
            }
            string text2 = HiCryptographer.Decrypt(alipayRefundPaymentMode.Settings);

            if (alipayRefundPaymentMode.Gateway.ToLower() == "hishop.plugins.payment.ws_wappay.wswappayrequest")
            {
                text2 = text2.Replace("Seller_account_name", "SellerEmail");
            }
            bool flag = false;

            try
            {
                flag = this.Notify.VerifyNotify(600, text2);
            }
            catch (Exception ex)
            {
                Globals.AppendLog(nameValueCollection, "通知网关失败" + ex.Message + "-" + text, "", "", "/log/refundNotify.txt");
                base.Response.Write("fail");
                base.Response.End();
            }
            if (flag)
            {
                string     text3 = nameValueCollection["batch_no"];
                RefundInfo refundInfoOfRefundOrderId = TradeHelper.GetRefundInfoOfRefundOrderId(text3);
                string     text4        = nameValueCollection["success_num"];
                string     text5        = nameValueCollection["result_details"];
                string[]   array        = text5.Split('#');
                string     text6        = "";
                decimal    refundAmount = default(decimal);
                string     text7        = "";
                int        num          = 0;
                string[]   array2       = array;
                foreach (string text8 in array2)
                {
                    string[] array3 = text8.Split('$');
                    array3 = array3[0].Split('^');
                    if (array3.Length == 3)
                    {
                        text6 = array3[0];
                        decimal.TryParse(array3[1], out refundAmount);
                        text7 = array3[2];
                        if (text7 == "SUCCESS")
                        {
                            RefundDao refundDao = new RefundDao();
                            OrderInfo orderInfoFromGatewayOrderId = OrderHelper.GetOrderInfoFromGatewayOrderId(text6);
                            if (orderInfoFromGatewayOrderId != null)
                            {
                                num++;
                                try
                                {
                                    if (!OrderHelper.FinishRefund(text3, refundAmount, masterSettings.PointsRate))
                                    {
                                        Globals.AppendLog(nameValueCollection, "完成退款错误", text6, text3, "/log/refundNotify.txt");
                                    }
                                }
                                catch (Exception ex2)
                                {
                                    Globals.AppendLog(nameValueCollection, "完成退款异常:" + ex2.Message, text6, text3, "/log/refundNotify.txt");
                                }
                            }
                            else
                            {
                                Globals.AppendLog(nameValueCollection, "错误的订单号:" + text3, text6, "", "/log/refundNotify.txt");
                            }
                        }
                        else
                        {
                            Globals.AppendLog(nameValueCollection, "状态错误" + text7, "", "", "/log/refundNotify.txt");
                        }
                    }
                }
                base.Response.Write("success");
            }
            else
            {
                Globals.AppendLog(nameValueCollection, "签名验证失败", "", "", "/log/refundNotify.txt");
                base.Response.Write("fail");
                base.Response.End();
            }
        }