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); }
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); }
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); }
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); }
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(); } }