Explorar o código

fix: 修正签名和加密算法

zhengjie hai 1 ano
pai
achega
5353ff083a
Modificáronse 3 ficheiros con 26 adicións e 25 borrados
  1. 16 16
      Business/MobilePay.cs
  2. 7 7
      Helper/EncryptHelper.cs
  3. 3 2
      Helper/JsonHelper.cs

+ 16 - 16
Business/MobilePay.cs

@@ -576,7 +576,7 @@ namespace PTMedicalInsurance.Business
                 //joInpar.Add("dscgWay", JsonHelper.getDestValue(joMdtrtinfo, "dscgWay"));//离院方式
                 //joInpar.Add("dieDate", JsonHelper.getDestValue(joMdtrtinfo, "dieDate"));//死亡日期
                 joInpar.Add("matnType", JsonHelper.getDestValue(joMdtrtinfo, "matnType"));//生育类别
-                joInpar.Add("extData", JsonHelper.getDestValue(joInsuAdmObj, "expContent"));//扩展参数 前端传入
+                joInpar.Add("expContent", JsonHelper.getDestValue(joInsuAdmObj, "expContent"));//扩展参数 前端传入
                 //joInpar.Add("midSetlFlag", JsonHelper.getDestValue(joInsuAdmObj, "midSetlFlag"));//中途结算标志 前端传入
                 joInpar.Add("diseinfoList", jaDiseinfoList);//诊断或症状明细
                 joInpar.Add("feedetailList", jaFeedetailList);//费用明细
@@ -589,9 +589,9 @@ namespace PTMedicalInsurance.Business
                 joInpar.Add("mdtrtCertType", JsonHelper.getDestValue(joInsuAdmObj, "mdtrtCertType"));//就诊凭证类型 前端传入
                 //joInpar.Add("insuplcAdmdvs", MPat.insuplc_admdvs);//用户参保地行政区划
 
-                JObject joData = new JObject();
-                joData.Add("data",joInpar);
-                outparam = joData.ToString();
+                //JObject joData = new JObject();
+                //joData.Add("data",joInpar);
+                outparam = joInpar.ToString();
                 return 0;
             }
             catch (Exception ex)
@@ -628,9 +628,9 @@ namespace PTMedicalInsurance.Business
                 //joInpar.Add("deposit", JsonHelper.getDestValue(joInsuAdmObj, "deposit"));//住院押金
                 joInpar.Add("expData", "");//扩展数据
                 //joInpar.Add("acctUsedFlag", "");//个账使用标识
-                JObject joData = new JObject();
-                joData.Add("data", joInpar);
-                outparam = joData.ToString();
+                //JObject joData = new JObject();
+                //joData.Add("data", joInpar);
+                outparam = joInpar.ToString();
                 return 0;
             }
             catch (Exception ex)
@@ -674,9 +674,9 @@ namespace PTMedicalInsurance.Business
                 joInpar.Add("expData", "");//扩展数据  前端传入
                 joInpar.Add("payAuthNo", MPat.payAuthNo);//支付授权码  前端传入
 
-                JObject joData = new JObject();
-                joData.Add("data", joInpar);
-                outparam = joData.ToString();
+                //JObject joData = new JObject();
+                //joData.Add("data", joInpar);
+                outparam = joInpar.ToString();
                 return 0;
             }
             catch (Exception ex)
@@ -715,9 +715,9 @@ namespace PTMedicalInsurance.Business
                 joInpar.Add("idType", "01");
                 joInpar.Add("expData", "");
 
-                JObject joData = new JObject();
-                joData.Add("data", joInpar);
-                outparam = joData.ToString();
+                //JObject joData = new JObject();
+                //joData.Add("data", joInpar);
+                outparam = joInpar.ToString();
                 return 0;
             }
             catch (Exception ex)
@@ -760,9 +760,9 @@ namespace PTMedicalInsurance.Business
                 joInpar.Add("expData", "");//扩展数据  前端传入
                 joInpar.Add("payAuthNo", MPat.payAuthNo);//支付授权码  前端传入
 
-                JObject joData = new JObject();
-                joData.Add("data", joInpar);
-                outparam = joData.ToString();
+                //JObject joData = new JObject();
+                //joData.Add("data", joInpar);
+                outparam = joInpar.ToString();
                 return 0;
             }
             catch (Exception ex)

+ 7 - 7
Helper/EncryptHelper.cs

@@ -65,12 +65,13 @@ namespace PTMedicalInsurance.Helper
             string data = sortKeys(joSign);
             Global.writeLog("排序:"+data);
 
-            data += appSecret;
+            data += "&key="+appSecret;
             Global.writeLog("加secret:" + data);
 
             Sm2Crypto crypto = new Sm2Crypto();
-            string publicKey = "BPwaiORlFqBIiMMTyeATozdSsLCxlGa/8ouTosiHKKmVeSnSWRgdIHOEXzyCVQlRzPCsKB24ZA4E3G8t9biN1E=", privateKey = "APCIAgJqh3+AcK/IXL1WJD130i2q+6UblRxQzus3+sVw";
-            //Sm2Crypto.GetKey(out privateKey, out publicKey);
+            string publicKey = "", privateKey = "";
+            //string publicKey = "BPwaiORlFqBIiMMTyeATozdSsLCxlGa/8ouTosiHKKmVeSnSWRgdIHOEXzyCVQlRzPCsKB24ZA4E3G8t9biN1E=", privateKey = "APCIAgJqh3+AcK/IXL1WJD130i2q+6UblRxQzus3+sVw";
+            Sm2Crypto.GetKey(out privateKey, out publicKey);
 
             crypto.PublicKey = publicKey;
             crypto.PrivateKey = privateKey;
@@ -134,10 +135,9 @@ namespace PTMedicalInsurance.Helper
             string data = "";
             try
             {
-                //string newKey = SM4.Encrypt(appSecret, appid)?.Substring(0, 32);
-                //encryptData = SM4.Decrypt(encryptData, newKey);
-
-                //data = GMUtilLib.SignUtil.decryptMsg(ak, sk, encryptData);
+                SM4Utils sm4 = new SM4Utils();
+                string newKey = sm4.Encrypt_ECB(appSecret, appid);
+                data = sm4.Decrypt_ECB(encryptData, newKey.Substring(0, 32));
                 return data;
             }
             catch (Exception ex)

+ 3 - 2
Helper/JsonHelper.cs

@@ -244,7 +244,7 @@ namespace PTMedicalInsurance.Helper
             Jo.appId = "1H1INA1L30OG3F60C80A0000DEE43558";
             //Global.curEvt.msgid = Global.inf.hospitalNO + DateTime.Now.ToString("yyyyMMddHHmmssffff");
             //Jo.msgid = Global.curEvt.msgid;
-            Jo.data = joInput["data"];
+            Jo.data = joInput;
             Jo.encType = "SM4";
             Jo.signtype = "SM2";
             Jo.version = "2.0.1";
@@ -253,8 +253,9 @@ namespace PTMedicalInsurance.Helper
             EncryptHelper encrypt = new EncryptHelper();
             // 签名
             string signData = encrypt.signWithSM2(Jo);
+            Global.writeLog("签名结果:"+signData);
             // 加密
-            string encryptData = encrypt.encrypt(joInput["data"].ToString());
+            string encryptData = encrypt.encrypt(joInput.ToString());
             Global.writeLog("加密:" + encryptData);
 
             Jo.signData =  signData;