Browse Source

联动掌中宝费率和服务费设置

lcl 2 weeks ago
parent
commit
56fa86669a

+ 9 - 0
AppStart/Helper/ChangePosFeeQueue.cs

@@ -111,6 +111,15 @@ public class ChangePosFeeQueue
                         else if (Deposit == "299") Deposit = "299";
                         ChangePosFeeUtil.SetLDDeposit(PosSn, Deposit, BrandId);
                     }
+                    //联动掌中宝
+                    if (bId == 34)
+                    { 
+                        if (Deposit == "0") Deposit = "0";
+                        else if (Deposit == "99") Deposit = "99";
+                        else if (Deposit == "199") Deposit = "199";
+                        else if (Deposit == "299") Deposit = "299";
+                        ChangePosFeeUtil.SetLDZZBDeposit(PosSn, Deposit);
+                    }
                     //盒易付
                     if (bId == 12 || bId == 13)
                     { 

+ 28 - 0
AppStart/Helper/ChangePosFeeUtil.cs

@@ -306,6 +306,34 @@ namespace MySystem
 
 
 
+        #region 联动掌中宝-设置押金
+        public static string SetLDZZBDeposit(string SnIds, string DepositId)
+        {
+            string check = RedisDbconn.Instance.Get<string>("SetLDZZBPosDepositWait:" + SnIds);
+            if (!string.IsNullOrEmpty(check))
+            {
+                return "操作频繁,请稍后再试";
+            }
+            RedisDbconn.Instance.Set("SetLDZZBPosDepositWait:" + SnIds, SnIds);
+            RedisDbconn.Instance.SetExpire("SetLDZZBPosDepositWait:" + SnIds, 10);
+            string[] SnIdList = SnIds.Split(',');
+            foreach (string PosSn in SnIdList)
+            {
+                function.WriteLog(DateTime.Now.ToString() + ":请求参数," + PosSn + ":" + DepositId, "联动掌中宝设置押金返回报文");
+                string content = SetDepositPostService.Instance.LDZZBServiceFee(PosSn, int.Parse(DepositId));
+                function.WriteLog(DateTime.Now.ToString() + "\n" + content, "联动掌中宝设置押金返回报文");
+                JsonData jsonObj = JsonMapper.ToObject(content);
+                if (jsonObj["code"].ToString() != "00")
+                {
+                    return jsonObj["msg"].ToString();
+                }
+            }
+            return "设置成功";
+        }
+        #endregion
+
+
+
         #region 盒易付-设置押金
         public static string SetHYFDeposit(string SnIds, string DepositId, string UserId = "0")
         {

+ 116 - 1
AppStart/Helper/SetDepositPostService.cs

@@ -272,6 +272,15 @@ namespace MySystem
                                     string msg = obj["msg"].ToString();
                                 }
                             }
+                            else if(BrandId == 34) //联动掌中宝
+                            {
+                                string content = LDZZBFeeRate(MerNo, Fee, addRate);
+                                JsonData obj = JsonMapper.ToObject(content);
+                                if(obj["code"].ToString() != "00")
+                                {
+                                    string msg = obj["msg"].ToString();
+                                }
+                            }
                             else if(BrandId == 12 || BrandId == 13) //盒易付
                             {
                                 string content = BoxFee(MerNo, Fee.ToString("f2"));
@@ -608,13 +617,18 @@ namespace MySystem
         }
 
         public string AesEncrypt(string str)
+        {
+            return AesEncrypt(str, KDBAESKEY);
+        }
+
+        public string AesEncrypt(string str, string key)
         {
             // if (string.IsNullOrEmpty(str)) return null;
             Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
 
             System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
             {
-                Key = Encoding.UTF8.GetBytes(KDBAESKEY),
+                Key = Encoding.UTF8.GetBytes(key),
                 Mode = System.Security.Cryptography.CipherMode.ECB,
                 Padding = System.Security.Cryptography.PaddingMode.PKCS7
             };
@@ -1208,6 +1222,107 @@ namespace MySystem
 
         #endregion
 
+        #region 联动掌中宝
+
+        //测试环境
+        string LDZZBRequestUrl = "https://cloud-api-dev.li-pos.cn/merchant";
+        string LDZZBAgentId = "61261954";
+        string LDZZBPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArSDWEXEUk6Q8Lxt66Uk8KqhlwM+vyhlzXJKB0LYaKHonuyH976thHP6nZ3QELuqdFdizsEa1YaM5ydGfsQpH+goKWH5VEGPBiR3nQ6AoGRHt4CnjAHWzanMiQ2+BUFkSbsvVvb5Z00GigBmA8DRbDt7OEdL5ibxpfDYsfLNUndUicuSCYqGPlW9iUxvSntmaAw5d6yZehSnaCA52ndvIP8QM4qHPOMDQAi5HgP+qWX6rKKr40e56+xQA8qV97PYccBremX+IccG+UTWAS7MvhAThdd0LH6AXrZ2AIIR+qaRZvBgvQkYJxzpzmtQ54nFy59QGoei+M8feKwKPJOgPRQIDAQAB";
+        string LDZZBPlatformPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjetXrF5TOv8+wsKs5W4Iuur3/8Hl1nAC0AyKIw/VYpLAQ/cv0AjWFKC387ram3qo4RKjvfMlkkFgtIwg2te7G6JyqnQ7QQqDFBvQ43iFu0c8z5DidkHvWUmPlV8Tta2iaBm8c5Q7c4tQIRRRmFn0VxKvGJBYeOdn9WfzK9AY8NeFV59ypM+yNyksyv9aGFF4paGa3E4JAKSjkijIz2awgR6vOJbFXUmrGgGxk0vfwHv3nvTmsa2I0vDiW0UAM7fyLhdKwgYm6TaUnsvvree11cfGcHo6GL/aBLAkkQqR4CGCHLS9ADZDNINotVP3X/MX1CiPGX1SfTImT72u6pkiawIDAQAB";
+        string LDZZBPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCtINYRcRSTpDwvG3rpSTwqqGXAz6/KGXNckoHQthooeie7If3vq2Ec/qdndAQu6p0V2LOwRrVhoznJ0Z+xCkf6CgpYflUQY8GJHedDoCgZEe3gKeMAdbNqcyJDb4FQWRJuy9W9vlnTQaKAGYDwNFsO3s4R0vmJvGl8Nix8s1Sd1SJy5IJioY+Vb2JTG9Ke2ZoDDl3rJl6FKdoIDnad28g/xAzioc84wNACLkeA/6pZfqsoqvjR7nr7FADypX3s9hxwGt6Zf4hxwb5RNYBLsy+EBOF13QsfoBetnYAghH6ppFm8GC9CRgnHOnOa1DnicXLn1Aah6L4zx94rAo8k6A9FAgMBAAECggEBAIk7pxRKS6JApEg/Ay3alGvH8mhk+JY9mFk/9NDpGFEPi2Dlr/GEKsWeAjqaFxrNdFk13jGTywErLoqQtIHUgXts7Ah7k5gbSvUSlBfh4wcEVEfFTCA4LFDsFLPZtmpnQJo8zx/JvFAeDd522OMOzUM7T6OHVbBdfkwscRUj3aYBUaK4XqhbWFP1otLEQqINUpYKa7BhxJ8JyLmxyEVa2kQqAomGnrD2So17F/lVeTtj8gL/cpShknUwhVb7aZiMbJPO77dR6s1aFlIKZYq8jMO88u60P7HhHnDQECRWmST4c/jecWkYTrKk3tsZ1DzGox15vuFOeQtcOSWhu0tAT+ECgYEA/s5KWNjUB7PI+7ul0JuLwtkbMkU2U+RLryE64YaE9syKJo66FLSQCKgJ07Au1O5BNdu4hySf54ePCT4+UUuvVahG2FedFlMdvFF6V5w/jtcDO1AhXFHgNwnNNoCdX8dqIWNvt2oHqCFbJsPevYysG0893Q/o3mk8hL1ko3+j8akCgYEArfCNFi7Mk4oUyrwR64e96vASUPQVC5DOR/qZhZynPRSb40PPUxJdoovzVWxUGwBtP0GnqkOHUgeMi0sKZMsnXEXDa3NjILCIL7q1DihjFkx10jlt2XWFaUQ7/L9LfWxAFGVIBcuhLp/llzO1a9LU/SOGVkz6OuEm+ubYFH476j0CgYEArvBtBPDhKeSacZKUtlOEsiMi0/HG6fQMrlFvPpV/xn4Jv40wXrTVSswr6wXEMXbemJ6g41AW5PwiDSOJ34DKAVJGSZRlioVIHhoGmA3zaRtf4aITNXIVMVRuayQEaFTeHcxKUC/gz+MO1N+XlqX1J87Q12xr4f94iF4LsWEZ6vkCgYA9n/Msf8olH4+8QCONMdt8iC/FFKT8IwKih8uqhdTOlCWiwByNDv2zoCfHBQlLQ7xw4972ONSRoHEPzLdS/JLmYyUYRZpCM6kcV+bbrD1m4hIAOC6OE8//ephSNKgXOKn/T97ThtCFR0s9ZamKGPky8koe+0jQYYLA89ZsdEjf9QKBgQCp6kM6yZCGknLbg8+iRCmum3iuav0Dm4Bnemvv9rawqwodmOgxReQtRQo596Yc+nkAPVOmNKYK9hetvLau29JJELKvWngZcASVs8QEMcaNRoKtqOx2Wb10Sp41G+FoCaNGY+aIWp7jvbP4AhbTuKii+e0j9OthrSAOyZFDVCzvUQ==";
+
+        //生产环境
+
+        public string LDZZBEncrypt(string data, string publickey)
+        {
+            byte[] toSignByte = Encoding.UTF8.GetBytes(data);
+            var toKey = Convert.FromBase64String(publickey);
+            var rsaroot = RSA.Create();
+            rsaroot.ImportSubjectPublicKeyInfo(toKey, out _);
+            var publicKeyParameters = rsaroot.ExportParameters(false);
+            using (var rsa = RSA.Create())
+            {
+                rsa.ImportParameters(publicKeyParameters);
+                var sha256 = SHA256.Create();
+                var hash = sha256.ComputeHash(toSignByte);
+                byte[] endByte = rsa.Encrypt(toSignByte, RSAEncryptionPadding.Pkcs1);
+                return Convert.ToBase64String(endByte);
+            }
+            // return new RSAHelper(RSAType.RSA, System.Text.Encoding.UTF8, "", publickey).Encrypt(data);
+        }
+
+        public string LDZZBDecrypt(string data)
+        {
+            var toDecryptArray = Convert.FromBase64String(data);
+            var toKey = Convert.FromBase64String(LDZZBPrivateKey);
+            var rsa = RSA.Create();
+            rsa.ImportPkcs8PrivateKey(toKey, out _);
+            var ContentArray = rsa.Decrypt(toDecryptArray, RSAEncryptionPadding.Pkcs1);
+            string result = System.Text.Encoding.UTF8.GetString(ContentArray);
+            return result;
+        }
+
+        public string LDZZBSignData(string toSignStr)
+        {
+            byte[] toSignByte = Encoding.UTF8.GetBytes(toSignStr);
+            var toKey = Convert.FromBase64String(LDZZBPrivateKey);
+            var rsa = RSA.Create();
+            rsa.ImportPkcs8PrivateKey(toKey, out _);
+            byte[] endByte = rsa.SignData(toSignByte, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
+            return Convert.ToBase64String(endByte);
+        }
+
+        public string LDZZBServiceFeeQuery(string SnNo)
+        {
+            Dictionary<string, object> req = new Dictionary<string, object>();
+            req.Add("materialsNo", SnNo);
+            return LDZZBPost(req, "materialsDataQuery");
+        }
+
+        public string LDZZBServiceFee(string SnNo, int ServiceFee)
+        {
+            Dictionary<string, object> req = new Dictionary<string, object>();
+            req.Add("materialsNo", SnNo);
+            req.Add("machinePhaseIndex", ServiceFee);
+            return LDZZBPost(req, "machineFeeChange");
+        }
+
+        public string LDZZBFeeRate(string MerNo, decimal AddRate, decimal Fee = 0)
+        {
+            Dictionary<string, object> req = new Dictionary<string, object>();
+            req.Add("customerNo", MerNo);
+            List<Dictionary<string, object>> customerRateList = new List<Dictionary<string, object>>();
+            Dictionary<string, object> customerRateItem = new Dictionary<string, object>();
+            customerRateItem.Add("payTypeViewCode", "POS_CC");
+            customerRateItem.Add("rateValue", AddRate);
+            customerRateItem.Add("fixedValue", Fee);
+            customerRateItem.Add("cappingValue", 0);
+            customerRateList.Add(customerRateItem);
+            req.Add("customerRateList", customerRateList);
+            return LDZZBPost(req, "customerRateModify");
+        }
+
+        public string LDZZBPost(Dictionary<string, object> req, string path)
+        {
+            string aeskey = function.MD5_16(function.get_Random(10)).ToUpper();
+            string data = AesEncrypt(Newtonsoft.Json.JsonConvert.SerializeObject(req), aeskey);
+            string encryptKey = LDZZBEncrypt(aeskey, LDZZBPlatformPublicKey);
+            SortedList<string, string> reqdic = new SortedList<string, string>();
+            reqdic.Add("appId", LDZZBAgentId);
+            reqdic.Add("encryptKey", encryptKey);
+            reqdic.Add("data", data);
+            reqdic.Add("timestamp", function.GetCurTimestamp().ToString());
+            reqdic.Add("requestId", "KXS" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8));
+            string signString = function.BuildQueryString(reqdic);
+            string sign = LDZZBSignData(signString);
+            reqdic.Add("sign", sign);
+            string reqBody = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
+            string content = function.PostWebRequest(LDZZBRequestUrl + "/" + path, reqBody, "application/json");
+            return content;
+        }
+
+        #endregion
+
         #region 盒易付
 
         //测试环境

+ 6 - 31
Controllers/HomeController.cs

@@ -51,37 +51,12 @@ namespace MySystem.Controllers
 
         public string test()
         {
-            // WebCMSEntities db = new WebCMSEntities();
-            // string content = function.ReadInstance("/txt/lkbsn.txt");
-            // string[] list = content.Replace("\r", "").Split('\n');
-            // foreach (string sub in list)
-            // {
-            //     PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == sub);
-            //     if (pos != null)
-            //     {
-            //         string info = "{\"RecordId\":\"\",\"PosId\":\"" + pos.Id + "\",\"Fee\": \"0.63\",\"Kind\": \"1\",\"OpMan\": \"" + "系统" + "\"}";
-            //         RedisDbconn.Instance.AddList("SetDepositPostQueue", info);
-            //     }
-            // }
-            // db.Dispose();
-            // return "ok";
-
-            // return PublicImportDataService.Instance.QueryLiSDeposit("N00000D0022G499", "");
-            // {"existsFlag":"1","feeList":[{"feeCalcType":"M1","fixed":"0","rate":"0.24"},{"feeCalcType":"M2","fixed":"0","rate":"0.24"},{"feeCalcType":"M3","fixed":"0","rate":"0.38"},{"feeCalcType":"M4","fixed":"0","rate":"2.63"},{"feeCalcType":"M5","fixed":"0","rate":"0.63"},{"feeCalcType":"M7","fixed":"0"},{"feeCalcType":"M8","fixed":"0"},{"feeCalcType":"M9","fixed":"0"},{"feeCalcType":"T0","fixed":"1","rate":"300"}],"merchNo":"N00000D0022G499","ret_code":"00","ret_msg":"请求成功"}
-
-            // return PublicImportDataService.Instance.SetLiSWeFee("WME52S0151221", "N00000C05U77807", "0.63", "300");
-            // return PublicImportDataService.Instance.LkbSetDeposit("00003102722201179813196", 0);
-            // return PublicImportDataService.Instance.LkbSetFee("00000302QRNL20019214", 0.63M, 300);
-            
-            // return PublicImportDataService.Instance.LkLSetDeposit("00007902C12441055850", 99);
-            return PublicImportDataService.Instance.LkLSetFee("135452877", 0.63M, 0);
-
-            // string content = "OiqJAGEVZSIrQmtKggTtFfSwtybN7gdJd6obHt27KfZIdMUzIsXIVtNdYGWHWr93f6kR1+5JUuwQ1ZP0Z/HxSKd2FeOAJpkgBWjzaOZV4badFJt7ptxVCN4QWAyCSKB+uyGAwwj2zo2S6wz/ongWGZexAZk8K6PKyz0aXyhm0rFPEDl2e4r68luLMI7hd4fVsoxE+455afZyLCv2jt3XCH7XcyaxHO8HR/BaHJDIWu8RQwaPYgx2gdiOftlybiiSDhJcI2S1plDH5uSfMrx/UCQ+2KqSfF/HjlLWXLUk1jwlSs6hNaCHYdO5T/6nRjfO+nB0vJtSS9j++Wi7fxM9dg==";
-            
-            // return PublicImportDataService.Instance.LklDecrypt(content);
-            //{"orgCode":"1951139","agentNo":29146077,"agencyNo":30342600,"externalCustomerNo":"82212108299005P","customerName":"��机****了饭","legalName":"徐*","posSn":"123081400101002052","posType":"PAPER_CODE","termNo":"A9323753","type":"UNBIND","operateTime":"2024-11-14 11:36:00"}
-            // {"orderNo":"20241113170425","userNo":29115902,"agencyNo":30324920,"customerNo":100132238,"externalCustomerNo":"822121070110BDQ","customerName":"好拓*************件二","legalName":"宋*杰","posSn":"HAOTKwzn20241113111","type":"DEPOSIT","transCardType":"01","extTransCode":"412001","termId":"012001","amount":40000000,"transTime":"2024-11-13 17:04:25"}
-            //{"logNo":"24111250702305","posSn":"00007902C32300000502","externalCustomerNo":"822121070110BDB","amount":8.0,"time":"2024-11-12 00:00:00","deductDate":"20241112","agencyNo":30343214}
+            string s = SetDepositPostService.Instance.LDZZBServiceFeeQuery("000tsyd0003");
+            JsonData jsonObj = JsonMapper.ToObject(s);
+            string aesKey = jsonObj["encryptKey"].ToString();
+            aesKey = SetDepositPostService.Instance.LDZZBDecrypt(aesKey);
+            string content = SetDepositPostService.Instance.AesDecrypt(jsonObj["data"].ToString(), aesKey);
+            return content;
         }
     
     }