|
@@ -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 盒易付
|
|
|
|
|
|
//测试环境
|