/// <summary> /// 订单继续支付 /// </summary> public string GoOnGenerateOrder(DataSet Ds) { DataRow Row = Ds.Tables[0].Rows[0]; bool IsBankOk = false; bool IsBusinessOk = true;//商家订单是否生成成功 string OrderId = Row["OrderId"].ToString(); string prepay_str = ""; //取得上一次商家订单信息 IDbConnection ConnOrder = new SqlConnection(ConnectionDb.GetBusinessConnection()); string OrderQuery = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId"; Model.Model.Buss.Tb_Charge_Receipt TOrder = ConnOrder.Query <Model.Model.Buss.Tb_Charge_Receipt>(OrderQuery, new { OrderId = OrderId }).SingleOrDefault(); if (TOrder != null) { IsBusinessOk = true; } string txnTime = TOrder.txnTime.ToString(); string BussId = TOrder.BussId.ToString(); WxPayConfig wxPayConfig = GenerateConfig(BussId); if (null == wxPayConfig) { return(JSONHelper.FromString(false, "未配置证书文件")); } decimal realAmount = 0.0m; string sql = @"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode"; IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = ConnOrder.Query <Tb_Charge_ReceiptDetail>(sql, new { ReceiptCode = TOrder.Id }); foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails) { // 计算此时应该多少钱 sql = @"SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID"; Tb_Resources_Details resources = ConnOrder.Query <Tb_Resources_Details>(sql, new { ResourcesID = item.ResourcesID }).FirstOrDefault(); if (resources != null) { if (resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate.Value > DateTime.Now) { realAmount += (resources.GroupBuyPrice.Value + item.Quantity); } else { realAmount += (resources.ResourcesSalePrice - resources.ResourcesDisCountPrice) * item.Quantity; } if (item.OffsetMoney.HasValue) { realAmount -= item.OffsetMoney.Value; } if (item.OffsetMoney2.HasValue) { realAmount -= item.OffsetMoney2.Value; } } } if (IsBusinessOk == true) { sql = "SELECT * FROM Tb_System_BusinessCorp WHERE BussId=@BussId"; Tb_System_BusinessCorp bussInfo = ConnOrder.Query <Tb_System_BusinessCorp>(sql, new { BussId = TOrder.BussId }).FirstOrDefault(); //生成银行订单,返回银行流水号 WxPayData Data = new WxPayData(); string BankResult = GenerateBankOrder(BussId, OrderId, txnTime, (int)(realAmount * 100), ref IsBankOk, ref Data, wxPayConfig); if (IsBankOk == false) { return(JSONHelper.FromString(false, BankResult)); } else { //更新订单银行流水号 IDbConnection Conn = new SqlConnection(ConnectionDb.GetBusinessConnection()); string Query = "UPDATE Tb_Charge_Receipt SET PrepayStr=@prepay_str WHERE OrderId = @OrderId "; Conn.Execute(Query, new { prepay_str = prepay_str.ToString(), OrderId = OrderId }); //返回请求字符串 //向手机端返回银行记录 WxPayData result = new WxPayData(); result.SetValue("appid", Data.GetValue("appid")); result.SetValue("partnerid", Data.GetValue("mch_id")); result.SetValue("prepayid", Data.GetValue("prepay_id")); result.SetValue("noncestr", Data.GetValue("nonce_str")); result.SetValue("package", "Sign=WXPay"); result.SetValue("timestamp", (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000); result.SetValue("sign", result.MakeSign()); return(JSONHelper.FromJsonString(true, result.ToJson())); } } return(JSONHelper.FromString(false, "生成订单失败")); }
/// <summary> /// 订单继续支付 /// </summary> public string GoOnGenerateOrder(DataSet Ds) { DataRow Row = Ds.Tables[0].Rows[0]; bool IsBankOk = false; bool IsBusinessOk = true;//商家订单是否生成成功 string OrderId = Row["OrderId"].ToString(); string prepay_str = ""; //取得上一次商家订单信息 IDbConnection ConnOrder = new SqlConnection(ConnectionDb.GetBusinessConnection()); string OrderQuery = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId OR Id=@OrderId"; Model.Model.Buss.Tb_Charge_Receipt TOrder = ConnOrder.Query <Model.Model.Buss.Tb_Charge_Receipt>(OrderQuery, new { OrderId = OrderId }).SingleOrDefault(); if (TOrder != null) { IsBusinessOk = true; } string txnTime = TOrder.txnTime.ToString(); string BussId = TOrder.BussId.ToString(); bool IsConfig = GenerateConfig(BussId); if (IsConfig == false) { return(JSONHelper.FromString(false, "未配置证书文件")); } decimal realAmount = 0.0m; string sql = @"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode"; IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = ConnOrder.Query <Tb_Charge_ReceiptDetail>(sql, new { ReceiptCode = TOrder.Id }); Dictionary <String, decimal> keyValuePairs = new Dictionary <string, decimal>(); foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails) { decimal unitPrice = 0.0m; // 计算此时应该多少钱 sql = @"SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID"; Tb_Resources_Details resources = ConnOrder.Query <Tb_Resources_Details>(sql, new { ResourcesID = item.ResourcesID }).FirstOrDefault(); if (resources != null) { if (resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate.Value > DateTime.Now && resources.GroupBuyStartDate.HasValue && resources.GroupBuyStartDate.Value < DateTime.Now ) { realAmount += (item.GroupPrice.HasValue ? item.GroupPrice.Value : 0) * item.Quantity; unitPrice = item.GroupPrice.HasValue ? item.GroupPrice.Value : 0; } else { unitPrice = (item.SalesPrice.Value - item.DiscountPrice.Value) >= 0 ? item.SalesPrice.Value - item.DiscountPrice.Value : 0; //如果销售价格 小于 优惠价 则算成0 realAmount += ((item.SalesPrice.Value - item.DiscountPrice.Value) >= 0 ? item.SalesPrice.Value - item.DiscountPrice.Value : 0) * item.Quantity; } keyValuePairs.Add(item.RpdCode, unitPrice); if (item.OffsetMoney.HasValue) { realAmount -= item.OffsetMoney.Value; } if (item.OffsetMoney2.HasValue) { realAmount -= item.OffsetMoney2.Value; } //修改当前商品的团购价 } } //加上运费 var money = realAmount + TOrder.Freight; //如果不需要给钱 直接完成该订单 if (money <= 0) { String result = ReceBusinessOrder(OrderId, 0); return(JsonConvert.SerializeObject(new { Result = result.ToLower() == "success" ? "true" : "false", Msg = result, })); } ChangeUnitPrice(keyValuePairs); if (IsBusinessOk == true) { sql = "SELECT * FROM Tb_System_BusinessCorp WHERE BussId=@BussId"; Tb_System_BusinessCorp bussInfo = ConnOrder.Query <Tb_System_BusinessCorp>(sql, new { BussId = TOrder.BussId }).FirstOrDefault(); //生成预支付单,并返回订单ID string BankResult = GenerateBankOrder(BussId, OrderId, txnTime, money, ref IsBankOk, ref prepay_str, bussInfo.BussName + "订单,共" + ReceiptDetails.Count() + "种商品"); if (IsBankOk == false) { return(JSONHelper.FromString(false, BankResult)); } else { //更新订单银行流水号 IDbConnection Conn = new SqlConnection(ConnectionDb.GetBusinessConnection()); string Query = @"UPDATE Tb_Charge_Receipt SET PrepayStr=@prepay_str WHERE OrderId = @OrderId OR Id=@OrderId "; Conn.Execute(Query, new { prepay_str = prepay_str.ToString(), OrderId = OrderId }); //返回请求字符串 return(JSONHelper.FromJsonString(true, prepay_str)); } } return(JSONHelper.FromString(false, "生成订单失败")); }
/// <summary> /// 订单继续支付 /// </summary> public string GoOnGenerateOrder(DataSet Ds) { DataRow Row = Ds.Tables[0].Rows[0]; bool IsBankOk = false; bool IsBusinessOk = true;//商家订单是否生成成功 string OrderId = Row["OrderId"].ToString(); string prepay_str = ""; //取得上一次商家订单信息 IDbConnection ConnOrder = new SqlConnection(ConnectionDb.GetBusinessConnection()); string OrderQuery = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId"; Model.Model.Buss.Tb_Charge_Receipt TOrder = ConnOrder.Query <Model.Model.Buss.Tb_Charge_Receipt>(OrderQuery, new { OrderId = OrderId }).SingleOrDefault(); if (TOrder != null) { IsBusinessOk = true; } string txnTime = TOrder.txnTime.ToString(); string BussId = TOrder.BussId.ToString(); bool IsConfig = GenerateConfig(BussId); if (IsConfig == false) { return(JSONHelper.FromString(false, "未配置证书文件")); } decimal realAmount = 0.0m; string sql = @"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode"; IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = ConnOrder.Query <Tb_Charge_ReceiptDetail>(sql, new { ReceiptCode = TOrder.Id }); foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails) { // 计算此时应该多少钱 sql = @"SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID"; Tb_Resources_Details resources = ConnOrder.Query <Tb_Resources_Details>(sql, new { ResourcesID = item.ResourcesID }).FirstOrDefault(); if (resources != null) { if (resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate.Value > DateTime.Now) { realAmount += (resources.GroupBuyPrice.Value + item.Quantity); } else { realAmount += (resources.ResourcesSalePrice - resources.ResourcesDisCountPrice) * item.Quantity; } if (item.OffsetMoney.HasValue) { realAmount -= item.OffsetMoney.Value; } if (item.OffsetMoney2.HasValue) { realAmount -= item.OffsetMoney2.Value; } } } if (IsBusinessOk == true) { sql = "SELECT * FROM Tb_System_BusinessCorp WHERE BussId=@BussId"; Tb_System_BusinessCorp bussInfo = ConnOrder.Query <Tb_System_BusinessCorp>(sql, new { BussId = TOrder.BussId }).FirstOrDefault(); //生成预支付单,并返回订单ID string BankResult = GenerateBankOrder(BussId, OrderId, txnTime, realAmount, ref IsBankOk, ref prepay_str, bussInfo.BussName + "订单,共" + ReceiptDetails.Count() + "种商品"); if (IsBankOk == false) { return(JSONHelper.FromString(false, BankResult)); } else { //更新订单银行流水号 IDbConnection Conn = new SqlConnection(ConnectionDb.GetBusinessConnection()); string Query = "UPDATE Tb_Charge_Receipt SET PrepayStr=@prepay_str WHERE OrderId = @OrderId "; Conn.Execute(Query, new { prepay_str = prepay_str.ToString(), OrderId = OrderId }); //返回请求字符串 return(JSONHelper.FromJsonString(true, prepay_str)); } } return(JSONHelper.FromString(false, "生成订单失败")); }