Explorar el Código

fix: 参数调整

zhengjie hace 1 año
padre
commit
24e62f9ff2

+ 2 - 1
Business/CenterBusiness.cs

@@ -174,7 +174,8 @@ namespace PTMedicalInsurance.Business
                 {
                     jsonSignIn.opter_no = "4D91C975CF902EB2";
                 }
-                // jsonSignIn.opter_no = Global.user.ID;
+                jsonSignIn.opter_no = "888888";  //测试账号
+
                 jsonSignIn.mac = Global.curEvt.mac;
                 
                 //MessageBox.Show(Global.inf.hospitalNO + "||" + Global.inf.CreditID + "||" + Global.inf.BusinessID);

+ 56 - 10
Business/MobilePay.cs

@@ -45,6 +45,47 @@ namespace PTMedicalInsurance.Business
             }
 
         }
+
+        private JObject OutpatientReg()
+        {
+            string diagnoses;
+            if (hIS.getPatDiagnoses(Global.pat, out diagnoses) != 0)
+            {
+                return JsonHelper.setExceptionJson(-1,"挂号","获取诊断异常"+diagnoses);
+            }
+            JObject joHisRtnInfo = JObject.Parse(diagnoses);
+
+            JObject joRegInpar = new JObject();
+            string occurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            joRegInpar.Add("psn_no", Global.pat.psn_no);
+            joRegInpar.Add("insutype", Global.pat.insuType);
+            joRegInpar.Add("begntime", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.begntime"));//挂号时间 occurTime
+            joRegInpar.Add("mdtrt_cert_type", "02");//就诊凭证类型
+            joRegInpar.Add("mdtrt_cert_no", MPat.certNO);//就诊凭证编号
+
+            joRegInpar.Add("ipt_otp_no", Global.pat.adm_Dr);
+            joRegInpar.Add("atddr_no", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.atddr_no"));
+            joRegInpar.Add("dr_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.chfpdr_name"));
+            joRegInpar.Add("dept_code", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_codg"));
+            joRegInpar.Add("dept_name", JsonHelper.getDestValue(joHisRtnInfo, "mdtrtinfo.adm_dept_name"));
+            joRegInpar.Add("caty", "72");
+            JObject joReg = new JObject();
+            joReg.Add("data", joRegInpar);
+
+            JObject jo2201Inpar = JObject.Parse(JsonHelper.setCenterInpar("2201", joReg));
+
+            JObject jo2201Rtn = invoker.invokeCenterService("2201", jo2201Inpar);
+            string errMsg = "";
+            if (JsonHelper.parseCenterRtnValue(jo2201Rtn, out errMsg) != 0)
+            {
+                return JsonHelper.setExceptionJson(-1, "医保挂号", errMsg);
+            }
+            else {
+                Global.pat.mdtrtID = JsonHelper.getDestValue(jo2201Rtn, "output.data.mdtrt_id");
+            }
+
+            return jo2201Rtn;
+        }
         public int   MobilePaySettlement(out string outPar)
         {
             string errMsg, patInfo, M6201Inpar, M6202Inpar;
@@ -67,6 +108,9 @@ namespace PTMedicalInsurance.Business
                 }
                 setPatientInsuInfo(jo1194Rtn);
 
+                //2201
+                JObject jo2201Rtn = OutpatientReg();
+
                 if (Get6201Inpar(out errMsg) != 0)
                 {
                     outPar = errMsg;
@@ -80,6 +124,8 @@ namespace PTMedicalInsurance.Business
                     return -1;
                 }
                 JObject joEncData = JObject.Parse(errMsg);
+
+                Global.writeLog("返回值:"+errMsg);
                 //设置
                 setPatientBy6201Rtn(joEncData);
                 //存入MI 患者表,登记表,费用表
@@ -308,7 +354,7 @@ namespace PTMedicalInsurance.Business
 
         public void setPatientInsuInfo(JObject jo)
         {
-            MPat.insuplc_admdvs = JsonHelper.getDestValue(jo, "output.baseinfo.insuplc_admdvs");
+            MPat.insuplc_admdvs = JsonHelper.getDestValue(jo, "output.insuinfo[0].insuplc_admdvs");
             MPat.psn_no = JsonHelper.getDestValue(jo, "output.baseinfo.psn_no");
             MPat.insuType = JsonHelper.getDestValue(jo, "output.insuinfo[0].insutype");
             Global.pat.insuplc_admdvs = MPat.insuplc_admdvs;
@@ -539,7 +585,7 @@ namespace PTMedicalInsurance.Business
                 joInpar.Add("deptCode", JsonHelper.getDestValue(joMdtrtinfo, "adm_dept_codg"));//科室编码
                 joInpar.Add("deptName", JsonHelper.getDestValue(joMdtrtinfo, "adm_dept_name"));//科室名称
                 joInpar.Add("caty", "A10");//科别
-                joInpar.Add("mdtrtId", JsonHelper.getDestValue(joMdtrtinfo, "mdtrtId"));//就诊ID
+                //joInpar.Add("mdtrtId", Global.pat.mdtrtID);//医保就诊ID
                 joInpar.Add("medType", MPat.medType);//医疗类别 前端传入
                 joInpar.Add("feeType", JsonHelper.getDestValue(joInsuAdmObj, "feeType"));//费用类型 前端传入
                 joInpar.Add("medfeeSumamt", JsonHelper.getDestValue(joFee, "medfeeSumamt"));//医疗费总额
@@ -584,7 +630,7 @@ namespace PTMedicalInsurance.Business
                 joInpar.Add("payAuthNo", JsonHelper.getDestValue(joInsuAdmObj, "payAuthNo"));//支付授权码 前端传入
                 joInpar.Add("uldLatlnt", JsonHelper.getDestValue(joInsuAdmObj, "uldLatlnt"));//经纬度 前端传入
                 joInpar.Add("mdtrtCertType", JsonHelper.getDestValue(joInsuAdmObj, "mdtrtCertType"));//就诊凭证类型 前端传入
-                //joInpar.Add("insuplcAdmdvs", MPat.insuplc_admdvs);//用户参保地行政区划
+                joInpar.Add("insuplcAdmdvs", MPat.insuplc_admdvs);//用户参保地行政区划
 
                 //JObject joData = new JObject();
                 //joData.Add("data",joInpar);
@@ -616,15 +662,15 @@ namespace PTMedicalInsurance.Business
                 joInpar.Add("payToken", MPat.payToken);//支付订单对应的token 
                 joInpar.Add("orgCodg", Global.inf.hospitalNO);//定点机构编码
                 joInpar.Add("orgBizSer", DateTime.Now.ToString("yyyyMMddHHmmssffff"));//业务流水号 前端传入
-                joInpar.Add("ecAuthCode", "");
-                joInpar.Add("ecChnlAppId", "");
-                joInpar.Add("ecChnlUserId", "");
-                joInpar.Add("mdtrtId", MPat.mdtrtID);
+                //joInpar.Add("ecAuthCode", "");
+                //joInpar.Add("ecChnlAppId", "");
+                //joInpar.Add("ecChnlUserId", "");
+                //joInpar.Add("mdtrtId", MPat.mdtrtID);
                 joInpar.Add("chrgBchno", JsonHelper.getDestValue(joM6201Inpar, "chrgBchno"));//收费批次号 
                 //joInpar.Add("feeType", JsonHelper.getDestValue(joM6201Inpar, "feeType"));//费用类别
                 //joInpar.Add("deposit", JsonHelper.getDestValue(joInsuAdmObj, "deposit"));//住院押金
-                joInpar.Add("expData", "");//扩展数据
-                //joInpar.Add("acctUsedFlag", "");//个账使用标识
+                //joInpar.Add("expContent", "");//扩展数据
+                //joInpar.Add("acctUsedFlag", "1");//个账使用标识
                 //JObject joData = new JObject();
                 //joData.Add("data", joInpar);
                 outparam = joInpar.ToString();
@@ -863,7 +909,7 @@ namespace PTMedicalInsurance.Business
 
                     JObject joTmp = new JObject();
                     joTmp.Add("feedetlSn", jaFeeDetail[i]["feedetl_sn"]);//费用明细流水号
-                    joTmp.Add("mdtrtId", jaFeeDetail[i]["mdtrt_id"]);//就诊ID
+                    //joTmp.Add("mdtrtId", Global.pat.mdtrtID);//医保就诊ID
                     //joTmp.Add("psnNo", jaFeeDetail[i]["psnNo"]);//人员编号
                     chrgBchno = jaFeeDetail[i]["chrg_bchno"].ToString();
                     joTmp.Add("chrgBchno", jaFeeDetail[i]["chrg_bchno"]);//收费批次号

+ 15 - 1
Common/SMLib/SignUtil.cs

@@ -12,7 +12,8 @@ namespace GMCrypto.Lib
     {
         private static List<String> ignoreSign = new List<String>() { "signData", "encData", "extra" };
 
-        public static String getSignText(JObject jsonObject, String appSecret)
+
+        public static string SortInput(JObject jsonObject)
         {
             SortedDictionary<String, String> signMap = new SortedDictionary<String, String>(StringComparer.Ordinal);
 
@@ -23,7 +24,20 @@ namespace GMCrypto.Lib
                     signMap.Add(entry.Key, getValue(entry.Value));
                 }
             }
+            return JsonConvert.SerializeObject(signMap);
+        }
+
+        public static String getSignText(JObject jsonObject, String appSecret)
+        {
+            SortedDictionary<String, String> signMap = new SortedDictionary<String, String>(StringComparer.Ordinal);
 
+            foreach (var entry in jsonObject)
+            {
+                if (!String.IsNullOrEmpty(entry.Value.ToString()) && !ignoreSign.Contains(entry.Key))
+                {
+                    signMap.Add(entry.Key, getValue(entry.Value));
+                }
+            }
 
             List<String> list = new List<String>();
 

+ 1 - 0
Common/SignUtils.cs

@@ -7,6 +7,7 @@ using Org.BouncyCastle.Crypto;
 using Org.BouncyCastle.Crypto.Parameters;
 using Org.BouncyCastle.Math;
 using Org.BouncyCastle.Utilities.Encoders;
+using PTMedicalInsurance.Variables;
 
 namespace AnHuiMI.Common
 {

+ 2 - 1
Helper/EncryptHelper.cs

@@ -42,6 +42,7 @@ namespace PTMedicalInsurance.Helper
             {
                 string strData = JsonConvert.SerializeObject(JObject.Parse(data), Newtonsoft.Json.Formatting.None);
                 encryptData = SignUtils.encryptMsg(appId, appSecret, privateKey, strData, ref signText);
+
                 return encryptData;
             }
             catch (Exception ex)
@@ -51,7 +52,7 @@ namespace PTMedicalInsurance.Helper
             }
             finally
             {
-                Global.writeLog("ak:" + appSecret + ";sk:" + privateKey + ";appid:" + appId, data, encryptData);
+                //Global.writeLog("ak:" + appSecret + ";sk:" + privateKey + ";appid:" + appId, data, encryptData);
             }
         }
 

+ 40 - 22
Helper/InvokeHelper.cs

@@ -412,21 +412,8 @@ namespace PTMedicalInsurance.Helper
                     }
                 }
 
-                //Global.inf.centerURL = "http://10.67.240.74:8086/1.0.0/hsa-fsi-"+funNO;
-                string prefix = Global.inf.centerURL;
-                switch (funNO)
-                {
-                    case "9101":
-                        prefix = Global.inf.uploadURL;
-                        break;
-                    case "9102":
-                        prefix = Global.inf.downURL;
-                        break;
-                    default:
-                        prefix = Global.inf.centerURL;
-                        break;
-                }
-                Global.curEvt.URL = prefix + funNO;
+                setCenterURL(funNO);
+
                 joRtn = invokeCenterService(data.ToString());
                 outPar = JsonHelper.Compress(joRtn);
                 return joRtn;
@@ -447,6 +434,27 @@ namespace PTMedicalInsurance.Helper
             }  
         }
 
+        private void setCenterURL(string funNo)
+        {
+            string prefix = Global.inf.centerURL;
+            switch (funNo)
+            {
+                case "9101":
+                    prefix = Global.inf.uploadURL;
+                    break;
+                case "9102":
+                    prefix = Global.inf.downURL;
+                    break;
+                default:
+                    prefix = Global.inf.centerURL;
+                    break;
+            }
+
+            prefix = "http://10.67.248.214:8086/1.0.0/hsa-fsi-";  //测试
+
+            Global.curEvt.URL = prefix + funNo;
+        }
+
         /// <summary>
         /// 这个是下载目录用的invokeCenterService
         /// </summary>
@@ -470,8 +478,7 @@ namespace PTMedicalInsurance.Helper
                     }
                 }
 
-                //Global.inf.centerURL = "http://10.67.240.74:8086/1.0.0/hsa-fsi-" + funNO;
-                Global.curEvt.URL = Global.inf.centerURL + funNO;
+                setCenterURL(funNO);
                 joRtn = invokeCenterService(data);
                 return joRtn;
 
@@ -531,10 +538,12 @@ namespace PTMedicalInsurance.Helper
                 }
                 EncryptHelper encrypt = new EncryptHelper();
                 string data = JsonHelper.setMPCenterInpar(funNO, joInput);
-
+                // 移动支付地址
                 Global.curEvt.URL = "http://10.66.159.55:7080" + url;
                 joRtn = invokeCenterService(data);
 
+                Global.writeLog(funNO + "【密文出参】:\r\n" + joRtn.ToString());
+
                 string encData = JsonHelper.getDestValue(joRtn, "encData");
                 string signData = JsonHelper.getDestValue(joRtn, "signData");
                 if (!string.IsNullOrEmpty(encData) && !string.IsNullOrEmpty(signData))
@@ -550,10 +559,19 @@ namespace PTMedicalInsurance.Helper
                         FloatParseHandling = FloatParseHandling.Decimal
                     };
                     joRtn.Add("data", JToken.FromObject(JsonConvert.DeserializeObject(decData)));
+
                     bool rtn = encrypt.verify(joRtn, signData);
-                    Global.writeLog("验签结果:" + rtn);
+                    if (rtn)
+                    {
+                        Global.writeLog(funNO+ "【明文出参】:\r\n" + decData);
 
-                    joRtn.Add("output", decData);
+                        joRtn = JObject.Parse(decData);
+                        joRtn.Add("success", "True");
+                    }
+                    else
+                    {
+                        Global.writeLog("验签失败,请核查!");
+                    }
                 }
 
                 return joRtn;
@@ -569,8 +587,8 @@ namespace PTMedicalInsurance.Helper
             }
             finally
             {
-                Global.writeLog(funNO + "(" + Global.curEvt.URL + ")", joInput.ToString(), joRtn.ToString());
-                this.saveCenterLog(joInput.ToString(), joRtn.ToString(), joInput.ToString(), joRtn.ToString());
+                //Global.writeLog(funNO + "(" + Global.curEvt.URL + ")", joInput.ToString(), joRtn.ToString());
+                //this.saveCenterLog(joInput.ToString(), joRtn.ToString(), joInput.ToString(), joRtn.ToString());
             }
         }
         /// <summary>

+ 10 - 0
Helper/JsonHelper.cs

@@ -21,6 +21,7 @@ using System.IO;
 using PTMedicalInsurance.Variables;
 using Newtonsoft.Json;
 using AnHuiMI.Common;
+using GMCrypto.Lib;
 
 namespace PTMedicalInsurance.Helper
 {
@@ -243,14 +244,23 @@ namespace PTMedicalInsurance.Helper
             return setMPCenterInpar(infno, joInput.ToString());
         }
 
+        
+
         public static string setMPCenterInpar(string infno, string txtData)
         {
             EncryptHelper encrypt = new EncryptHelper();
 
+            string plainText = SignUtil.SortInput(JObject.Parse(txtData));
+
+            Global.writeLog(infno + "【明文入参】:\r\n" + plainText);
+
             string signData = "";
 
+
             string output = encrypt.encrypt(txtData, ref signData);
 
+            Global.writeLog(infno + "【密文入参】:\r\n" + output);
+
             return output;
         }