瀏覽代碼

手动补分账

lcl 1 年之前
父節點
當前提交
2d5fe12c09
共有 1 個文件被更改,包括 48 次插入2 次删除
  1. 48 2
      Controllers/HomeController.cs

+ 48 - 2
Controllers/HomeController.cs

@@ -93,9 +93,55 @@ namespace MySystem.Controllers
             // string content = AlipayFunction.Instance.Settle("2023061615441556447868073", "2023061622001451251436120885", Parameters);
             // string content = AlipayFunction.Instance.BindSettleRelation(DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), "2088141704579033");
             // string content = AlipayFunction.Instance.Refund("2023061622001451251436120885", "0.01", "门店分红");
-            // string content = AlipayFunction.Instance.QuerySettle("2023061517455619986938439", "2023061522001451251430528719", "");
+            // string content = AlipayFunction.Instance.QuerySettle("2023071214274372011988068", "2023071222001457121457238496", "202307BB6d61386d17104395831e3ea6309f0X57");
             // MerchantConfirmService.Instance.StartDo(68, 2);
-            
+            // string content = AlipayFunction.Instance.BindSettleRelation(DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), AlipayFunction.Instance.Pid, "202307BB6d61386d17104395831e3ea6309f0X57");
+            WebCMSEntities db = new WebCMSEntities();
+            List<ConsumerOrders> orders = db.ConsumerOrders.Where(m => m.MerchantId == 70 && m.PayMode == 1 && m.Status > 0).OrderBy(m => m.Id).ToList();
+            foreach(ConsumerOrders order in orders)
+            {
+                MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantInfo();
+                MerchantParamSet set = db.MerchantParamSet.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantParamSet();
+                if(order.IsAct == 1 && order.PayMoney >= set.MinPayMoney)
+                {
+                    MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == order.MerchantId) ?? new MerchantAddInfo();
+                    //添加分账接收方
+                    if(merchantAdd.Sort == 0)
+                    {
+                        string content = AlipayFunction.Instance.BindSettleRelation(DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), AlipayFunction.Instance.Pid, merchantAdd.AlipayAuthToken);
+                        function.WriteLog(DateTime.Now.ToString() + "\n" + content, "支付宝添加分账方");
+                        merchantAdd.Sort = 1;
+                        db.SaveChanges();
+                    }
+                    //发起分账
+                    decimal fee = order.PayMoney * 0.01M;
+                    if(fee >= 0.01M)
+                    {
+                        string TradeNo = order.SeoTitle;
+                        string OrderNo = order.OrderNo;
+                        List<RoyaltyParameters> Parameters = new List<RoyaltyParameters>();
+                        Parameters.Add(new RoyaltyParameters()
+                        {
+                            Account = AlipayFunction.Instance.Pid,
+                            Amount = fee.ToString("f2"),
+                        });
+                        AlipayFunction.Instance.Settle(OrderNo, TradeNo, Parameters, merchantAdd.AlipayAuthToken);
+
+                        //开始监听分账状态
+                        // Dictionary<string, object> req = new Dictionary<string, object>();
+                        // req.Add("TradeNo", TradeNo); //支付宝订单号
+                        // req.Add("OrderNo", OrderNo); //商户订单号
+                        // req.Add("AuthToken", merchantAdd.AlipayAuthToken);
+                        // RedisDbconn.Instance.AddList("AlipayShareQueue", Newtonsoft.Json.JsonConvert.SerializeObject(req));
+                    }
+                    else
+                    {
+                        RedisDbconn.Instance.AddList("ConsumerOrders:Divi:1:List", order.Id.ToString());
+                        // RedisDbconn.Instance.AddRightList("ConsumerOrders:Divi:1:" + order.MerchantId, order);
+                    }
+                }
+            }
+            db.Dispose();
             return "ok";
         }