NationECCodeAPI.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using Newtonsoft.Json;
  2. using PTMedicalInsurance.Variables;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Runtime.InteropServices;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PTMedicalInsurance.CardReaders
  10. {
  11. class NationECCodeAPI
  12. {
  13. private string url { get; set; }
  14. //电子凭证
  15. [DllImport("NationECCode.dll", EntryPoint = "NationEcTrans", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
  16. static extern IntPtr NationEcTrans(StringBuilder strUrl, StringBuilder InData, StringBuilder OutData);
  17. public NationECCodeAPI(string _url)
  18. {
  19. url = _url;
  20. }
  21. public int NationEcTrans(NationECInput nationECInput, out string output )
  22. {
  23. StringBuilder sbURL = new StringBuilder(url);
  24. StringBuilder sbInput = new StringBuilder(JsonConvert.SerializeObject(nationECInput));
  25. StringBuilder sbOut = new StringBuilder(40960);
  26. IntPtr pInt = NationEcTrans(sbURL, sbInput, sbOut);
  27. output = sbOut.ToString();
  28. Global.writeLog($"NationEcTrans({url})", JsonConvert.SerializeObject(nationECInput),output);
  29. string str = Marshal.PtrToStringAnsi(pInt);
  30. if (str == "0000")
  31. {
  32. return 0;
  33. }
  34. else
  35. {
  36. return -1;
  37. }
  38. }
  39. }
  40. class NationECInput
  41. {
  42. /// <summary>
  43. /// 机构代码
  44. /// </summary>
  45. public string orgId { get; set; }
  46. /// <summary>
  47. /// 交易类型
  48. /// </summary>
  49. public string transType { get; set; }
  50. /// <summary>
  51. /// 请求参数
  52. /// </summary>
  53. public NationECData data { get; set; }
  54. /// <summary>
  55. /// 扩展参数
  56. /// </summary>
  57. public string extra { get; set; }
  58. }
  59. class NationECData
  60. {
  61. /// <summary>
  62. /// 医保定点机构代码
  63. /// </summary>
  64. public string orgId { get; set; }
  65. /// <summary>
  66. /// 用码业务类型
  67. /// </summary>
  68. public string businessType { get; set; }
  69. /// <summary>
  70. /// 用码业务信息
  71. /// </summary>
  72. public string businessInfo { get; set; }
  73. /// <summary>
  74. /// 收款员编号
  75. /// </summary>
  76. public object operatorId { get; set; }
  77. /// <summary>
  78. /// 收款员姓名
  79. /// </summary>
  80. public string operatorName { get; set; }
  81. /// <summary>
  82. /// 医保科室编号
  83. /// </summary>
  84. public string officeId { get; set; }
  85. /// <summary>
  86. /// 科室名称
  87. /// </summary>
  88. public string officeName { get; set; }
  89. /// <summary>
  90. /// 人脸照片 字符 100k
  91. /// </summary>
  92. public string photoData { get; set; }
  93. /// <summary>
  94. /// 扩展参数
  95. /// </summary>
  96. public string extData { get; set; }
  97. }
  98. class EcQueryData:NationECData
  99. {
  100. /// <summary>
  101. /// 设备类型
  102. /// </summary>
  103. public string deviceType { get; set; }
  104. }
  105. class QrcodeGetData : NationECData
  106. {
  107. /// <summary>
  108. /// 定点医药机构本次业务流水号
  109. /// </summary>
  110. public string outBizNo { get; set; }
  111. /// <summary>
  112. /// 设备类型
  113. /// </summary>
  114. public string deviceType { get; set; }
  115. }
  116. class AuthCheckData : NationECData
  117. {
  118. /// <summary>
  119. /// 定点医药机构本次业务流水号 不可重复,每次请求都需要唯一
  120. /// </summary>
  121. public string outBizNo { get; set; }
  122. /// <summary>
  123. /// 实 人 认证 业 务流水号 医保综合服务终端返回的授权码
  124. /// </summary>
  125. public string authNo { get; set; }
  126. /// <summary>
  127. /// 设备类型
  128. /// </summary>
  129. public string deviceType { get; set; }
  130. }
  131. }