|
@@ -320,6 +320,24 @@ namespace MySystem
|
|
|
db.SaveChanges();
|
|
|
}
|
|
|
}
|
|
|
+ else if(pos.BrandId == 11 || pos.BrandId == 12) //盒易付
|
|
|
+ {
|
|
|
+ string content = BoxFee(merchant.KqMerNo, Fee.ToString("f2"));
|
|
|
+ JsonData obj = JsonMapper.ToObject(content);
|
|
|
+ if(obj["resultCode"].ToString() == "1")
|
|
|
+ {
|
|
|
+ pos.SeoDescription = "设置成功";
|
|
|
+ SetRecordResult(db, RecordId, 1, "设置成功");
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ string msg = obj["errorDesc"].ToString();
|
|
|
+ pos.SeoDescription = msg;
|
|
|
+ SetRecordResult(db, RecordId, -1, msg);
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1120,5 +1138,100 @@ namespace MySystem
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
+
|
|
|
+ #region 盒易付
|
|
|
+
|
|
|
+ //测试环境
|
|
|
+ // string BoxRequestUrl = "https://openapi-test.iboxpay.com/api";
|
|
|
+ // string BoxAppId = "8840021411446784";
|
|
|
+ // string BoxAppSecret = "xgwGnmYGjVy0GOWOWkQtRk8Hk8ur5tCV";
|
|
|
+ // string BoxPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjMQxp24mjxDTr13uPW0y+tiO1yXFGw7P/pPQ0oZKK7F6KstEaus7pLEywBZ5XRXE5jgkhR2TS7Ne7djJfbpn5yFc6pPlz3ZsOfBVeB88NEwhx6xzCGX2eqSSkO33n8w2G0xc2ss5HpYBarT00NBZWhrwOXpdRPYLOYHKVU3Rl+FA9xDw/wYfoWvrr+JSfHRGn/ENMmQFEdckAbPauKaQMrZD2kz+PRrhq56eWnCuVQPcaz/jroVT8qQEgkg2IsNy+DwfLOIqm8IySEpxnQ5wN/KvsQJc2wXDQNf9F5kvWwjoqSSP0qJS+oPRXET+zJb+WTk2y5M6AYoC9NodwsC4NwIDAQAB";
|
|
|
+ // string BrhCode = "039001";
|
|
|
+
|
|
|
+ //生产环境
|
|
|
+ string BoxRequestUrl = "https://openapi.iboxpay.com/api";
|
|
|
+ string BoxAppId = "AP5879017839106039808";
|
|
|
+ string BoxAppSecret = "DGtftIyl6R3nzwPr5YuV5fnmkfwufXRj";
|
|
|
+ string BoxPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjmjoQirIYZBD9Qon2HkF4j/NAINXtJ7Lzq/WXxTF7t7mg7LNARt0+ZZaeWx8caq2fv5zdsGyyoInL23cBtDI5KmFfK69iA0ygQMK0WbiKqsUB1OpPbT3+9zLuadIJAznjA223lY6CIjTpdLZhaRjImNVqc60bdkx6YsQcA+xW+3r1JH4PPHb7yBEbkKIX8OhyX7U4p0TkbDkAobbjHr5YB9gmYLoSFJMOPfTtSExkv7/Y7IVR9poZAHcr3teFoAiXW3RzxelRtnXxIkl/6AUOKoL5fhr/UTUN+Q18uzNljYWr6SwnTI3EmtzgykaewWtZvV85Xdhe/BjiQ5Xor7YbwIDAQAB";
|
|
|
+ string BrhCode = "039004";
|
|
|
+
|
|
|
+ public string BoxFee(string MerNo, string Fee)
|
|
|
+ {
|
|
|
+ function.WriteLog(DateTime.Now.ToString(), "设置盒易付机具费率");
|
|
|
+ function.WriteLog(MerNo, "设置盒易付机具费率");
|
|
|
+ Dictionary<string, object> reqdic = new Dictionary<string, object>();
|
|
|
+ Dictionary<string, string> headdic = new Dictionary<string, string>();
|
|
|
+ string batchNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
|
|
|
+
|
|
|
+ string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ headdic.Add("appid", BoxAppId);//开发者id
|
|
|
+ headdic.Add("appsecret", BoxAppSecret);//开发者密码
|
|
|
+ headdic.Add("X-Up-AppId", BoxAppId);
|
|
|
+ headdic.Add("X-Timestamp", timestamp);
|
|
|
+ headdic.Add("X-Sign-Type", "SHA-256");
|
|
|
+
|
|
|
+ reqdic.Add("mchtNo", MerNo);//终端列表
|
|
|
+ reqdic.Add("brhCode", BrhCode);//机构号
|
|
|
+ reqdic.Add("tNDiscId", Fee == "0.6" ? "MHN10916" : "MHN10917");//费率模型
|
|
|
+ reqdic.Add("effectiveFlag", "1");//立即生效
|
|
|
+ string req = Newtonsoft.Json.JsonConvert.SerializeObject(reqdic);
|
|
|
+
|
|
|
+ headdic.Add("X-Sign", BoxSHA256Sign(timestamp + BoxAppSecret + req));
|
|
|
+ string head = Newtonsoft.Json.JsonConvert.SerializeObject(headdic);
|
|
|
+ function.WriteLog("请求头\n" + head, "设置盒易付机具费率");
|
|
|
+ function.WriteLog("请求参数\n" + req, "设置盒易付机具费率");
|
|
|
+ function.WriteLog("请求地址:" + BoxRequestUrl + "/inst/mcht/update_disc", "设置盒易付机具费率");
|
|
|
+ string result = PostWebRequest(BoxRequestUrl + "/inst/mcht/update_disc", req, headdic);
|
|
|
+ function.WriteLog("返回\n" + result + "\n\n", "设置盒易付机具费率");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public string BoxSHA256Sign(string toSignStr)
|
|
|
+ {
|
|
|
+ byte[] toSignByte = Encoding.UTF8.GetBytes(toSignStr);
|
|
|
+ SHA256 sha256 = SHA256.Create();
|
|
|
+ byte[] signByte = sha256.ComputeHash(toSignByte);
|
|
|
+ string sign = Convert.ToBase64String(signByte);
|
|
|
+ return sign;
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool BoxVerifySign(string toSignStr, string signStr)
|
|
|
+ {
|
|
|
+ byte[] toSignByte = Encoding.Default.GetBytes(toSignStr);
|
|
|
+ byte[] signByte = Convert.FromBase64String(signStr);
|
|
|
+ var toKey = Convert.FromBase64String(BoxPublicKey);
|
|
|
+ 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);
|
|
|
+ return rsa.VerifyHash(hash, signByte, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public string BoxSignData(string toSignStr)
|
|
|
+ {
|
|
|
+ byte[] toSignByte = Encoding.UTF8.GetBytes(toSignStr);
|
|
|
+ var toKey = Convert.FromBase64String(BoxPublicKey);
|
|
|
+ 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.SignData(toSignByte, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
|
|
|
+ return Convert.ToBase64String(endByte);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|