Explorar el Código

添加微信服务商接口
增加实收金额统计方法
调整对应接口实收金额获取

lcl hace 1 año
padre
commit
386d7bb363

+ 28 - 2
AppStart/Redis/Mysql/MerchantAmountSummary.cs

@@ -64,6 +64,32 @@ namespace MySystem
             return amt;
         }
 
+        public decimal GetActualTradeByDate(int MerchantId, string TradeDate)
+        {
+            decimal amt = 0;
+            WebCMSEntities db = new WebCMSEntities();
+            bool check = db.MerchantAmountSummay.Any(m => m.MerchantId == MerchantId && m.TradeDate == TradeDate);
+            if (check)
+            {
+                amt = db.MerchantAmountSummay.Where(m => m.MerchantId == MerchantId && m.TradeDate == TradeDate).Sum(m => m.TotalActual);
+            }
+            db.Dispose();
+            return amt;
+        }
+
+        public decimal GetActualTradeByMode(int MerchantId, int PayMode, string TradeDate)
+        {
+            decimal amt = 0;
+            WebCMSEntities db = new WebCMSEntities();
+            bool check = db.MerchantAmountSummay.Any(m => m.MerchantId == MerchantId && m.PayMode == PayMode && m.TradeDate == TradeDate);
+            if (check)
+            {
+                amt = db.MerchantAmountSummay.Where(m => m.MerchantId == MerchantId && m.PayMode == PayMode && m.TradeDate == TradeDate).Sum(m => m.TotalActual);
+            }
+            db.Dispose();
+            return amt;
+        }
+
         public DataTable GetTradeListByDate(int MerchantId, string TradeMonth, int PageNum, int PageSize)
         {
             int skipNum = 0;
@@ -71,7 +97,7 @@ namespace MySystem
             {
                 skipNum = PageSize * (PageNum - 1);
             }
-            DataTable dt = CustomerSqlConn.dtable("select TradeDate,sum(if(PayMode=1, TradeAmount, 0)),sum(if(PayMode=2, TradeAmount, 0)),sum(TradeAmount),sum(TradeCount) from MerchantAmountSummay where MerchantId=" + MerchantId + " and TradeMonth='" + TradeMonth + "' group by TradeDate order by TradeDate desc limit " + skipNum + "," + PageSize, AppConfig.Base.SqlConnStr);
+            DataTable dt = CustomerSqlConn.dtable("select TradeDate,sum(if(PayMode=1, TotalActual, 0)),sum(if(PayMode=2, TotalActual, 0)),sum(TotalActual),sum(TradeCount) from MerchantAmountSummay where MerchantId=" + MerchantId + " and TradeMonth='" + TradeMonth + "' group by TradeDate order by TradeDate desc limit " + skipNum + "," + PageSize, AppConfig.Base.SqlConnStr);
             return dt;
         }
 
@@ -82,7 +108,7 @@ namespace MySystem
             {
                 skipNum = PageSize * (PageNum - 1);
             }
-            DataTable dt = CustomerSqlConn.dtable("select TradeMonth,sum(if(PayMode=1, TradeAmount, 0)),sum(if(PayMode=2, TradeAmount, 0)),sum(TradeAmount),sum(TradeCount) from MerchantAmountSummay where MerchantId=" + MerchantId + " group by TradeMonth order by TradeMonth desc limit " + skipNum + "," + PageSize, AppConfig.Base.SqlConnStr);
+            DataTable dt = CustomerSqlConn.dtable("select TradeMonth,sum(if(PayMode=1, TotalActual, 0)),sum(if(PayMode=2, TotalActual, 0)),sum(TotalActual),sum(TradeCount) from MerchantAmountSummay where MerchantId=" + MerchantId + " group by TradeMonth order by TradeMonth desc limit " + skipNum + "," + PageSize, AppConfig.Base.SqlConnStr);
             return dt;
         }
     }

+ 18 - 0
AppStart/WeChatFunction.cs

@@ -219,6 +219,24 @@ namespace MySystem
         }
         #endregion
 
+        #region 服务商平台请求分账回退API
+
+        public string ProfitShareReturn(string SubMchId, string ReturnMchId, string OrderNo, string ReturnNo, decimal Amount)
+        {
+            int ReturnAmount = (int)(Amount * 100);
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("sub_mchid", SubMchId); //子商户号
+            result.Add("out_order_no", OrderNo); //商户分账单号
+            result.Add("out_return_no", ReturnNo); //商户回退单号
+            result.Add("return_mchid", ReturnMchId); //回退商户号
+            result.Add("amount", Amount); //回退金额
+            result.Add("description", "用户退款"); //回退描述
+            string req = Newtonsoft.Json.JsonConvert.SerializeObject(result);
+            string resp = postJson("https://api.mch.weixin.qq.com/v3/profitsharing/return-orders", req, prikey, MchId, serialNo);
+            return resp;
+        }
+        #endregion
+
         #region 服务商平台添加分账接收方API
 
         public string AddReceive(string SubMchId, string TypeName, string Account, string Name, string Relation)

+ 7 - 3
Areas/Api/Controllers/v1/MainServer/ConsumerOrdersController.cs

@@ -50,7 +50,7 @@ namespace MySystem.Areas.Api.Controllers.v1
                 curData.Add("Date", TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2)); //日期
                 curData.Add("Amount", dr[3].ToString()); //实收金额
                 curData.Add("WeChatAmount", dr[2].ToString()); //微信实收
-                curData.Add("AlipayAmount", dr[1].ToString()); //微信实收
+                curData.Add("AlipayAmount", dr[1].ToString()); //支付宝实收
                 curData.Add("OrderCount", dr[4].ToString()); //订单数
                 curData.Add("AddCount", 0); //新增会员
                 dataList.Add(curData);
@@ -85,7 +85,7 @@ namespace MySystem.Areas.Api.Controllers.v1
                 curData.Add("Date", TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2)); //日期
                 curData.Add("Amount", dr[3].ToString()); //实收金额
                 curData.Add("WeChatAmount", dr[2].ToString()); //微信实收
-                curData.Add("AlipayAmount", dr[1].ToString()); //微信实收
+                curData.Add("AlipayAmount", dr[1].ToString()); //支付宝实收
                 curData.Add("OrderCount", dr[4].ToString()); //订单数
                 curData.Add("AddCount", 0); //新增会员
                 dataList.Add(curData);
@@ -271,6 +271,10 @@ namespace MySystem.Areas.Api.Controllers.v1
             Dictionary<string, object> Obj = new Dictionary<string, object>();
             string OrderNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
             bool ActFlag = merchantset.IsAll == 1 ? false : true;
+            if(PayMoney < merchantset.MinPayMoney) //支付金额小于活动最小金额,则不分账
+            {
+                ActFlag = false;
+            }
             ConsumerOrders order = maindb.ConsumerOrders.Add(new ConsumerOrders()
             {
                 // Id = PublicFunction.MakeConsumerOrderId(),
@@ -282,7 +286,7 @@ namespace MySystem.Areas.Api.Controllers.v1
                 SnNo = SnNo, //SN号
                 OrderNo = OrderNo,
                 MaxDivi = PayMoney * merchantset.DiviPercent / 100,
-                IsAct = merchantset.IsAll == 1 ? 0u : 1u,
+                IsAct = ActFlag ? 1u : 0u,
                 SeoDescription = Newtonsoft.Json.JsonConvert.SerializeObject(merchantset),
             }).Entity;
             maindb.SaveChanges();

+ 2 - 2
Areas/Api/Controllers/v1/MainServer/MerchantInfoController.cs

@@ -705,8 +705,8 @@ namespace MySystem.Areas.Api.Controllers.v1
             {
                 string Date = DateTime.Now.AddDays(-i).ToString("yyyyMMdd");
                 // ConsumeCount += 0;
-                WeChatTotal += MerchantAmountSummary.Instance.GetTradeByMode(Id, 2, Date);
-                AlipayTotal += MerchantAmountSummary.Instance.GetTradeByMode(Id, 1, Date);
+                WeChatTotal += MerchantAmountSummary.Instance.GetActualTradeByMode(Id, 2, Date);
+                AlipayTotal += MerchantAmountSummary.Instance.GetActualTradeByMode(Id, 1, Date);
             }
             Obj.Add("SevenDayConsumer", ConsumeCount); //近7日新增会员
             Obj.Add("WeChatTotal", WeChatTotal); //微信实收

+ 2 - 2
Controllers/HomeController.cs

@@ -69,9 +69,9 @@ namespace MySystem.Controllers
 
             // result = new WeChatFunction().AddReceive("1645266943", "PERSONAL_OPENID", "ooDpv5LkCKEguE-LMZO-rSV4TDpk", "", "USER");
             // result = new WeChatFunction().QueryProfitShare("1645266943", "4200001815202306025662773463", "2023060213335030713572885");
-            // result = new WeChatFunction().Unfreeze("1645266943", "4200001846202306021274142861", "2023060214014405449699901", "结算");
+            // result = new WeChatFunction().Unfreeze("1646405429", "4200001820202306086592864584", "2023060811312079575627854", "结算");
 
-            
+            // result = new WeChatFunction().ProfitShareReturn("1645266943", "1611167423", "2023060816051515927220860", string ReturnNo, decimal Amount)
 
             return result;
         }