Controllers/Warehouse/MesXkyController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
NewPdaSqlServer.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/QC/OAJyService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/Warehouse/MesXkyService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
util/XkyApiHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Controllers/Warehouse/MesXkyController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ using System.Dynamic; using Microsoft.AspNetCore.Mvc; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.service.QC; using NewPdaSqlServer.util; using Newtonsoft.Json.Linq; namespace NewPdaSqlServer.Controllers.Warehouse; [Route("api/[controller]")] [ApiController] public class MesXkyController : ControllerBase { MesXkyService m = new MesXkyService(); [HttpPost("GetXkyDhd")] public ResponseResult GetXkyDhd([FromBody] string JsonObj) { try { dynamic resultInfos = new ExpandoObject(); resultInfos = m.GetXkyDHD(JsonObj); var tbBillList = resultInfos; return new ResponseResult { status = 0, message = "OK", data = tbBillList }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } } NewPdaSqlServer.csproj
@@ -10,9 +10,12 @@ <PackageReference Include="Masuit.Tools.Core" Version="2024.5.8" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.8" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.10" /> <PackageReference Include="Portable.BouncyCastle" Version="1.9.0" /> <PackageReference Include="SqlSugarCore" Version="5.1.4.169" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.8.0" /> <PackageReference Include="System.Data.SqlClient" Version="4.8.6" /> <PackageReference Include="System.Security.Cryptography.X509Certificates" Version="4.3.2" /> <PackageReference Include="System.Security.Cryptography.Xml" Version="9.0.4" /> </ItemGroup> </Project> service/QC/OAJyService.cs
@@ -11,6 +11,13 @@ using System.Security.Cryptography; using System.Text; using static Azure.Core.HttpHeader; using System.Security.Cryptography; using System.Collections.Generic; using System.Linq; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; namespace NewPdaSqlServer.service.QC; @@ -23,34 +30,39 @@ // private const string SPK = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB"; private const string HOST = "http://192.168.1.149:8099"; private const string SPK = @"-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEc E94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlI JBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlb IkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9Hwg rzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M 9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116L twIDAQAB -----END PUBLIC KEY-----"; private const string SPK = @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB"; public static class RsaHelper { public static string Encrypt(string plainText, string publicKeyPem) { // å°PEMæ ¼å¼çå ¬é¥è½¬æ¢ä¸ºXMLæ ¼å¼ var rsa = RSA.Create(); rsa.ImportFromPem(publicKeyPem); // 使ç¨.NET 5+ å ç½®PEMè§£ææ¹æ³ //// å°PEMæ ¼å¼çå ¬é¥è½¬æ¢ä¸ºXMLæ ¼å¼ //var rsa = RSA.Create(); //rsa.ImportFromPem(publicKeyPem); // 使ç¨.NET 5+ å ç½®PEMè§£ææ¹æ³ var parameters = rsa.ExportParameters(false); string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>"; //var parameters = rsa.ExportParameters(false); //string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>"; using var rsaProvider = new RSACryptoServiceProvider(); rsaProvider.FromXmlString(publicKeyXml); // 使ç¨è½¬æ¢åçXMLæ ¼å¼å ¬é¥ //using var rsaProvider = new RSACryptoServiceProvider(); //rsaProvider.FromXmlString(publicKeyXml); // 使ç¨è½¬æ¢åçXMLæ ¼å¼å ¬é¥ var data = Encoding.UTF8.GetBytes(plainText); var encrypted = rsaProvider.Encrypt(data, false); return Convert.ToBase64String(encrypted); //var data = Encoding.UTF8.GetBytes(plainText); //var encrypted = rsaProvider.Encrypt(data, false); //return Convert.ToBase64String(encrypted); RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKeyPem)); string XML = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>", Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()), Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned())); string encryptedContent = string.Empty; using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(XML); byte[] encryptedData = rsa.Encrypt(Encoding.Default.GetBytes(plainText), false); encryptedContent = Convert.ToBase64String(encryptedData); } return encryptedContent; } } @@ -196,7 +208,7 @@ //} // å å¯å¤ç var userId = "FRadmin"; var userId = "1268"; var encryptedUserId = RsaHelper.Encrypt(userId, SPK); string strToken = GetToken(); @@ -249,13 +261,13 @@ var request = WebRequest.Create(url) as HttpWebRequest; request.Method = "POST"; request.Timeout = 20000; request.ContentType = "application/json; charset=utf-8"; // ä¿®æ¹ä¸ºJSONæ ¼å¼ request.ContentType = "application/x-www-form-urlencoded"; // ä¿®æ¹ä¸ºJSONæ ¼å¼ // æå»ºè¯·æ±å¤´ request.Headers.Add("appid", APPID); request.Headers.Add("token", token); request.Headers.Add("Content-Type", APPID); request.Headers.Add("userId", encryptedUserId); request.Headers.Set("appid", APPID); request.Headers.Set("token", token); request.Headers.Set("Content-Type", "application/x-www-form-urlencoded"); request.Headers.Set("userId", encryptedUserId); // å设éè¦å å¯çuseridä»å ¶ä»å°æ¹è·åï¼è¿ééè¦è¡¥å è·åé»è¾ // æå»ºè¯·æ±ä½ service/Warehouse/MesXkyService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,79 @@ using MES.Service.Models; using Microsoft.IdentityModel.Tokens; using MySqlConnector; using NewPdaSqlServer.Controllers; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.util; using Newtonsoft.Json; using SqlSugar; using System.Collections; using System.Data; using System.Net; using System.Net.Http.Headers; using System.Security.Cryptography; using System.Text; using static Azure.Core.HttpHeader; namespace NewPdaSqlServer.service.QC; public class MesXkyService : RepositoryNoEntity { public bool XKY_GET_DHD(dynamic entity) { string ErrorMsg = ""; ApiCommonParam Apiparam = ApiCommonParam.NewApiCommon(); try { string data_inserted = ""; ArrayList SQLStringList = new ArrayList(); // var client = new HttpClient(); var url = "https://openapi.xiekeyun.com/delivery/getNoList.json"; HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string json = "{\"commonParam\":" + JsonConvert.SerializeObject(Apiparam) + ",\"body\":" + data_inserted + "}"; byte[] postData = Encoding.UTF8.GetBytes(json); // å建请æ±å¯¹è±¡ HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://openapi.xiekeyun.com/delivery/getNoList.json"); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = postData.Length; // åéè¯·æ±æ°æ® using (Stream stream = request.GetRequestStream()) { stream.Write(postData, 0, postData.Length); } dynamic responseJson; // åé请æ±å¹¶è·åååº HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream)) { string result2 = reader.ReadToEnd(); responseJson = JsonConvert.DeserializeObject(result2); } } catch (Exception ex) { ErrorMsg = ex.Message; return false; } return true; } public dynamic GetXkyDHD(dynamic entity) { return XKY_GET_DHD(entity); } } util/XkyApiHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,150 @@ using Newtonsoft.Json; using System.Text; using NewPdaSqlServer.util; using System.Security.Cryptography; namespace NewPdaSqlServer.util { /// SignUnit ç¾å屿§å¸¸éç±» public class SignConst { public SignConst() { //this.appKey = "åé_AppKey"; //this.operateCompanyCode = "åé_operateCompanyCode"; //this.ownerCompanyCode = "åé_ownerCompanyCode"; //this.appSecret = "åé_appSecret"; this.appKey = "86d3ae868978beff0d39948c420ec4ff"; this.operateCompanyCode = "52265397"; this.ownerCompanyCode = "52265397"; this.appSecret = "978f5b950aefc3c1e0d4a56a562b0f8c"; this.version = "1.0"; } public string appKey { get; set; } public string version { get; set; } public string operateCompanyCode { get; set; } public string ownerCompanyCode { get; set; } public string appSecret { get; set; } } } namespace NewPdaSqlServer.util { /// APIç¸å ³åæ°å®ä¹çå ¨å±ç±» public partial class ApiGlobal { public ApiGlobal() { } /// åå§å public static void Init() { signConst = new SignConst(); } public static SignConst signConst { get; set; } } } namespace NewPdaSqlServer.util { /// SignUtils ç¾åå·¥å ·ç±» public class SignUtils { public static MD5 md5 = MD5.Create(); public static string buildCurrentSign(IDictionary<string, string> parameters, String appSecret) { try { string secret = ":" + appSecret; IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters, StringComparer.Ordinal); IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator(); StringBuilder query = new StringBuilder(); while (dem.MoveNext()) { string key = dem.Current.Key; string value = dem.Current.Value; if (key == "sign") { continue; } if (!string.IsNullOrEmpty(key)) { query.Append(value).Append(":"); } } string strvalue = query.ToString().TrimEnd(':') + secret; return MD5Encrypt32(strvalue); } catch (Exception) { throw new Exception("ç¾åå¼å¸¸!"); } } public static string MD5Encrypt32(string text) { string pwd = ""; // å å¯åæ¯ä¸ä¸ªåèç±»åçæ°ç»ï¼è¿éè¦æ³¨æç¼ç UTF8/Unicodeçéæ©ã byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(text)); // éè¿ä½¿ç¨å¾ªç¯ï¼å°åèç±»åçæ°ç»è½¬æ¢ä¸ºåç¬¦ä¸²ï¼æ¤å符串æ¯å¸¸è§åç¬¦æ ¼å¼åæå¾ for (int i = 0; i < s.Length; i++) { //å°å¾å°çå符串使ç¨åå è¿å¶ç±»åæ ¼å¼ãæ ¼å¼åçå符æ¯å°åç忝ï¼å¦æä½¿ç¨å¤§åï¼Xï¼åæ ¼å¼åçå符æ¯å¤§åå符 pwd = pwd + s[i].ToString("x2"); } return pwd.ToString().ToLower(); } public static long GetTimestamp(DateTime d) { TimeSpan ts = d.ToUniversalTime() - new DateTime(1970, 1, 1); return (long)ts.TotalSeconds; //精确å°ç§ } } } namespace NewPdaSqlServer.util { /// ApiCommonParam API请æ±å¯¹åºçCommonåæ°ç±» public class ApiCommonParam { public ApiCommonParam() { } public ApiCommonParam(string appKey, string version, string operateCompanyCode, string ownerCompanyCode, long timestamps) { this.appKey = appKey; this.version = version; this.operateCompanyCode = operateCompanyCode; this.ownerCompanyCode = ownerCompanyCode; this.timestamps = timestamps; } public string appKey { get; set; }//appKey public string version { get; set; }//æ¥å£çæ¬ public string ownerCompanyCode { get; set; }//æ°æ®æå±å ¬å¸ç¼ç public string operateCompanyCode { get; set; }//æä½è æå±å ¬å¸ç¼ç public string sign { get; set; }//ç¾å public long timestamps { get; set; }//请æ±çæ¶é´æ³ public object reserver { get; set; }//æ©å±å段 /// æé 对象 public static ApiCommonParam NewApiCommon() { //æé 对象 ApiCommonParam param = new ApiCommonParam(ApiGlobal.signConst.appKey, ApiGlobal.signConst.version, ApiGlobal.signConst.operateCompanyCode, ApiGlobal.signConst.ownerCompanyCode, SignUtils.GetTimestamp(DateTime.Now)); //计ç®ç¾å&èµå¼ var jsonParam = JsonConvert.SerializeObject(param); //JavaScriptSerializer json = new JavaScriptSerializer(); //string jsonParam = json.Serialize(param); var paramDict = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonParam); param.sign = SignUtils.buildCurrentSign(paramDict, ApiGlobal.signConst.appSecret); return param; } } }