CardReader.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /******************************************************************************
  2. * 文件名称: CardReader.cs
  3. * 文件说明: 读卡的封装,包括社保卡,身份证,电子凭证等等
  4. * 当前版本: V1.0
  5. * 创建日期: 2022-06-20
  6. *
  7. * * 2020-06-20: 增加 CardReader 类
  8. * ***** 2020-06-20: 增加 CardReader 方法,获取URL地址,USER信息,地方版SSCard.dll使用
  9. * ***** 2020-06-20: 增加 CardReader 方法重载,国家版电子凭证使用
  10. * ***** 2020-06-20: 增加 Init 方法,SSCard环境初始化
  11. * ***** 2020-06-20: 增加 ReadCardBas 方法,读社保卡
  12. * ***** 2020-06-20: 增加 VerifyPIN 方法,验证密码
  13. * ***** 2020-06-20: 增加 ChangePIN 方法,修改密码
  14. * ***** 2020-06-20: 增加 ReadSFZ 方法,读身份证
  15. * ***** 2020-06-20: 增加 GetQRBase 方法,读二维码
  16. * ***** 2020-06-20: 增加 NationEcTrans 方法,读电子凭证(国家版)
  17. ******************************************************************************/
  18. using Newtonsoft.Json;
  19. using Newtonsoft.Json.Linq;
  20. using PTMedicalInsurance.Variables;
  21. using System;
  22. namespace PTMedicalInsurance.CardReaders
  23. {
  24. class CardReader
  25. {
  26. const string DllPath = @"SSCard.dll";
  27. private bool initilaized = false;
  28. private string URL;
  29. private string User;
  30. public CardReader()
  31. {
  32. }
  33. /// <summary>
  34. /// 读身份证
  35. /// </summary>
  36. /// <param name="OutBuff"></param>
  37. /// <returns></returns>
  38. public int ReadSFZ(out string OutBuff)
  39. {
  40. OutBuff = "";
  41. try
  42. {
  43. SFZReader reader = new SFZReader();
  44. return reader.ReadSFZ(out OutBuff);
  45. }
  46. catch (Exception ex)
  47. {
  48. OutBuff = "ReadSFZ 异常:" + ex.Message;
  49. return -1;
  50. }
  51. }
  52. /// <summary>
  53. /// 6101
  54. /// </summary>
  55. /// <param name="OutBuff"></param>
  56. /// <returns></returns>
  57. public int ReadEC(out string OutBuff)
  58. {
  59. OutBuff = "";
  60. try
  61. {
  62. ECTokenData eCToken = new ECTokenData();
  63. eCToken.orgId = Global.inf.hospitalNO;
  64. eCToken.operatorId = Global.user.ID;
  65. eCToken.operatorName = Global.user.name;
  66. eCToken.officeId = Global.user.officeID;
  67. eCToken.officeName = Global.user.officeName;
  68. eCToken.businessType = Global.businessType;
  69. //eCToken.outBizNo = bizNo;
  70. //eCToken.extData = "";
  71. string tmp = JsonConvert.SerializeObject(eCToken);
  72. var inData = new { InData = JObject.Parse(tmp) };
  73. JObject joInData = new JObject(
  74. new JProperty("InData", JObject.Parse(tmp))
  75. );
  76. ECReader reader = new ECReader();
  77. return reader.Read(joInData,out OutBuff);
  78. }
  79. catch (Exception ex)
  80. {
  81. OutBuff = "ReadEC 异常:" + ex.Message;
  82. return -1;
  83. }
  84. }
  85. /// <summary>
  86. /// 6101
  87. /// </summary>
  88. /// <param name="OutBuff"></param>
  89. /// <returns></returns>
  90. public int ECQuery(out string OutBuff)
  91. {
  92. OutBuff = "";
  93. try
  94. {
  95. EcQueryData ecqueryData = new EcQueryData();
  96. ecqueryData.orgId = Global.inf.hospitalNO;
  97. ecqueryData.operatorId = Global.user.ID;
  98. ecqueryData.operatorName = Global.user.name;
  99. ecqueryData.officeId = Global.user.officeID;
  100. ecqueryData.officeName = Global.user.officeName;
  101. ecqueryData.businessType = Global.businessType;
  102. //eCToken.outBizNo = bizNo;
  103. //eCToken.extData = "";
  104. NationECInput nationECInput = new NationECInput();
  105. nationECInput.data = ecqueryData;
  106. nationECInput.orgId = Global.inf.hospitalNO;
  107. nationECInput.transType = "ec.query";
  108. nationECInput.extra = "";
  109. //测试环境电子凭证动态库地址:http://igb.hsa.gdgov.cn/tst_nation_eccode/tst_eccode/localcfc/api/hsecfc/localQrCodeQuery
  110. //正式环境电子凭证动态库地址:http://hosp.gd.hsip.gov.cn/prd_nation_eccode/prd_eccode/localcfc/api/hsecfc/localQrCodeQuery
  111. NationECCodeAPI nationECCodeAPI = new NationECCodeAPI(Global.inf.ecURL);
  112. return nationECCodeAPI.NationEcTrans(nationECInput, out OutBuff);
  113. }
  114. catch (Exception ex)
  115. {
  116. OutBuff = "ECQuery 异常:" + ex.Message;
  117. return -1;
  118. }
  119. }
  120. }
  121. }