UnionPayHelper.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Net;
  5. using System.Text;
  6. using Library;
  7. using LitJson;
  8. using MySystem.Entity.UnionPay;
  9. using Org.BouncyCastle.Crypto.Digests;
  10. using Org.BouncyCastle.Crypto.Macs;
  11. using Org.BouncyCastle.Crypto.Parameters;
  12. namespace MySystem.Util.UnionPay
  13. {
  14. /// <summary>
  15. /// 联合收单接口帮助类
  16. /// </summary>
  17. public class UnionPayHelper : UnionPayBase
  18. {
  19. public readonly static UnionPayHelper Instance = new UnionPayHelper();
  20. private UnionPayHelper()
  21. {
  22. }
  23. /// <summary>
  24. /// 上传图片
  25. /// </summary>
  26. /// <param name="uploadRequest">上传图片请求参数</param>
  27. /// <returns>上传结果</returns>
  28. public UnionPayResponse<UnionPayUploadPicResponseData> UnionPayUploadPic(UnionPayUploadPicRequest uploadRequest)
  29. {
  30. // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
  31. var request = CreateRequest(UnionPayAppId, UnionPayAppId, uploadRequest);
  32. // 调用新的方法
  33. string logString = "";
  34. logString += "\n" + DateTime.Now.ToString();
  35. try
  36. {
  37. // 序列化请求参数
  38. string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
  39. // 记录请求日志
  40. logString += "\n" + "请求参数\n" + req;
  41. logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/common/uploadPic";
  42. // 发送请求
  43. string result = PostWebRequest(UnionPayRequestUrl + "/open-api/common/uploadPic", req, new Dictionary<string, string>());
  44. // 记录响应日志
  45. logString += "\n" + "返回\n" + result + "\n\n";
  46. LogHelper.Instance.WriteLog(logString, "银联上传图片", true);
  47. // 反序列化为UnionPayResponse
  48. return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<UnionPayUploadPicResponseData>>(result);
  49. }
  50. catch (Exception ex)
  51. {
  52. logString += "\n" + "异常:" + ex.ToString();
  53. LogHelper.Instance.WriteLog(logString, "银联上传图片异常", true);
  54. return new UnionPayResponse<UnionPayUploadPicResponseData>
  55. {
  56. error_code = "9999",
  57. error_msg = "系统异常"
  58. };
  59. }
  60. }
  61. /// <summary>
  62. /// 获取行业编码
  63. /// </summary>
  64. /// <param name="mccRequest">获取行业编码请求参数</param>
  65. /// <returns>行业编码列表</returns>
  66. public UnionPayResponse<List<UnionPayMccInfo>> GetMccList(UnionPayMccListRequest mccRequest)
  67. {
  68. // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
  69. var request = CreateRequest(UnionPayAppId, UnionPayAppId, mccRequest);
  70. string logString = "";
  71. logString += "\n" + DateTime.Now.ToString();
  72. try
  73. {
  74. // 序列化请求参数
  75. string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
  76. // 记录请求日志
  77. logString += "\n" + "请求参数\n" + req;
  78. logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/mcc/mccList";
  79. // 发送请求
  80. string result = PostWebRequest(UnionPayRequestUrl + "/open-api/mcc/mccList", req, new Dictionary<string, string>());
  81. // 记录响应日志
  82. logString += "\n" + "返回\n" + result + "\n\n";
  83. LogHelper.Instance.WriteLog(logString, "银联获取行业编码", true);
  84. // 反序列化为UnionPayResponse
  85. return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayMccInfo>>>(result);
  86. }
  87. catch (Exception ex)
  88. {
  89. logString += "\n" + "异常:" + ex.ToString();
  90. LogHelper.Instance.WriteLog(logString, "银联获取行业编码异常", true);
  91. return new UnionPayResponse<List<UnionPayMccInfo>>
  92. {
  93. error_code = "9999",
  94. error_msg = "系统异常"
  95. };
  96. }
  97. }
  98. /// <summary>
  99. /// 获取地区编码
  100. /// </summary>
  101. /// <param name="areaCodeRequest">获取地区编码请求参数</param>
  102. /// <returns>地区编码列表</returns>
  103. public UnionPayResponse<List<UnionPayAreaCodeInfo>> GetAreaCode(UnionPayAreaCodeRequest areaCodeRequest)
  104. {
  105. // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
  106. var request = CreateRequest(UnionPayAppId, UnionPayAppId, areaCodeRequest);
  107. string logString = "";
  108. logString += "\n" + DateTime.Now.ToString();
  109. try
  110. {
  111. // 序列化请求参数
  112. string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
  113. // 记录请求日志
  114. logString += "\n" + "请求参数\n" + req;
  115. logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/base/areaCode";
  116. // 发送请求
  117. string result = PostWebRequest(UnionPayRequestUrl + "/open-api/base/areaCode", req, new Dictionary<string, string>());
  118. // 记录响应日志
  119. logString += "\n" + "返回\n" + result + "\n\n";
  120. LogHelper.Instance.WriteLog(logString, "银联获取地区编码", true);
  121. // 反序列化为UnionPayResponse
  122. return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayAreaCodeInfo>>>(result);
  123. }
  124. catch (Exception ex)
  125. {
  126. logString += "\n" + "异常:" + ex.ToString();
  127. LogHelper.Instance.WriteLog(logString, "银联获取地区编码异常", true);
  128. return new UnionPayResponse<List<UnionPayAreaCodeInfo>>
  129. {
  130. error_code = "9999",
  131. error_msg = "系统异常"
  132. };
  133. }
  134. }
  135. /// <summary>
  136. /// 获取银行列表
  137. /// </summary>
  138. /// <param name="bankListRequest">获取银行列表请求参数</param>
  139. /// <returns>银行列表</returns>
  140. public UnionPayResponse<List<UnionPayBankInfo>> GetBankList(UnionPayBankListRequest bankListRequest)
  141. {
  142. // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
  143. var request = CreateRequest(UnionPayAppId, UnionPayAppId, bankListRequest);
  144. string logString = "";
  145. logString += "\n" + DateTime.Now.ToString();
  146. try
  147. {
  148. // 序列化请求参数
  149. string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
  150. // 记录请求日志
  151. logString += "\n" + "请求参数\n" + req;
  152. logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/base/bankList";
  153. // 发送请求
  154. string result = PostWebRequest(UnionPayRequestUrl + "/open-api/base/bankList", req, new Dictionary<string, string>());
  155. // 记录响应日志
  156. logString += "\n" + "返回\n" + result + "\n\n";
  157. LogHelper.Instance.WriteLog(logString, "银联获取银行列表", true);
  158. // 反序列化为UnionPayResponse
  159. return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayBankInfo>>>(result);
  160. }
  161. catch (Exception ex)
  162. {
  163. logString += "\n" + "异常:" + ex.ToString();
  164. LogHelper.Instance.WriteLog(logString, "银联获取银行列表异常", true);
  165. return new UnionPayResponse<List<UnionPayBankInfo>>
  166. {
  167. error_code = "9999",
  168. error_msg = "系统异常"
  169. };
  170. }
  171. }
  172. /// <summary>
  173. /// 获取银行网点列表
  174. /// </summary>
  175. /// <param name="branchListRequest">获取银行网点列表请求参数</param>
  176. /// <returns>银行网点列表</returns>
  177. public UnionPayResponse<List<UnionPayBranchInfo>> GetBranchList(UnionPayBranchListRequest branchListRequest)
  178. {
  179. // 使用CreateRequest方法创建请求对象,确保sign是用国密SM3对业务数据data字段进行签名的
  180. var request = CreateRequest(UnionPayAppId, UnionPayAppId, branchListRequest);
  181. string logString = "";
  182. logString += "\n" + DateTime.Now.ToString();
  183. try
  184. {
  185. // 序列化请求参数
  186. string req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
  187. // 记录请求日志
  188. logString += "\n" + "请求参数\n" + req;
  189. logString += "\n" + "请求地址:" + UnionPayRequestUrl + "/open-api/base/branchList";
  190. // 发送请求
  191. string result = PostWebRequest(UnionPayRequestUrl + "/open-api/base/branchList", req, new Dictionary<string, string>());
  192. // 记录响应日志
  193. logString += "\n" + "返回\n" + result + "\n\n";
  194. LogHelper.Instance.WriteLog(logString, "银联获取银行网点列表", true);
  195. // 反序列化为UnionPayResponse
  196. return Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayResponse<List<UnionPayBranchInfo>>>(result);
  197. }
  198. catch (Exception ex)
  199. {
  200. logString += "\n" + "异常:" + ex.ToString();
  201. LogHelper.Instance.WriteLog(logString, "银联获取银行网点列表异常", true);
  202. return new UnionPayResponse<List<UnionPayBranchInfo>>
  203. {
  204. error_code = "9999",
  205. error_msg = "系统异常"
  206. };
  207. }
  208. }
  209. }
  210. }