AlipayFunctionForHD.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. using System;
  2. using System.Collections.Generic;
  3. using Aop.Api;
  4. using Library;
  5. using Microsoft.AspNetCore.Http;
  6. using Aop.Api.Request;
  7. using Aop.Api.Response;
  8. using Aop.Api.Util;
  9. using MySystem.Models;
  10. using System.Linq;
  11. using MySystem.Models.Main;
  12. namespace MySystem
  13. {
  14. public class AlipayFunctionForHD
  15. {
  16. public readonly static AlipayFunctionForHD Instance = new AlipayFunctionForHD();
  17. private AlipayFunctionForHD()
  18. { }
  19. // public string Pid = "2088720140260314";
  20. private string AppId = "2021004109682585";
  21. private string PrivateKey = "MIIEpAIBAAKCAQEAvf75JGQL9IDg8xu2C6qWrIO3H4roSwpvwUeh6y2kQ8iH0gqQXlyLj13ku8pzY1H9JTSeARCsHSD/VJFxMoPOBO+/xGDV3CSdxhOE5Fu5E30ZZMA5XmnMKyN8q+MEh7refGuCmldedTmzr9mNw4HDjS1uqJoqYRl3eUEaC/Syl620iiaSh7Q9/rsT/qNcnP5hO9P3DWionNt78elmjLt0sBdBkQ10o2XwC5RuzBfP8DCBEdL/DPOOE4vtmLP1IdDI7qtjBhX8PdL+/IRxe/4OGvYSPnHW7JNlN970h2UN5i0Yu0AkidJvlS59nX9C1WJ4U37HiMnkMNXLB/Ubi5BkgQIDAQABAoIBAQC1itVKpWIa/a5z/Q2EtjqEmtK2jAcL9Ov11dlsm07zCcBlvXxW/bzIf6IYogiBZY0qKM21HNYoeygeCV8NMo3/f4pQPWr7j+1Fn88CWHZOneFOuLHYeeUBb0YoA6KHgtImNqAzk7oI7tq383uWzP4qfrfW2IAYCbp0HPWjaOvhKw7qrejcTPW0oCsPjm6nkjzW6FzjkPCwiiivvpC67EzpXKF8HnYyF1KMEuH6h7qZl4jtloW8CkgkwnBhc9iYhN/ygllYdPU9aRdThG7tFVCHft7cIq5F54pJoUm/ML3fpdVjFDAVGZFbkZyg4gkIYCLIEgTVt2W4Lfr8/61PimC1AoGBAOAt7Un2B3ouxN/31Z8ApcTL9QfElPcepTfKhwUDI+KRlygele1r7bIzlDgYVVrMSzzkoYD1vb0scc3hO1EBvURM9BbJJHRl9qncDbF0BPiznm688G26jNwLSn5sgloBV1scqWIK1vCSGw+x71Iy2PQBGlliNVwycFzGvLVTenlHAoGBANj26d25362Jvstq7VMIyYGHU9N/gG4k2Ngoxv2uDbeVb9qeTb0N8/w9mar9fD6Cg4Wr1yLoX3oZqkomxcVU0Zy2ihzf0dpyD9j6M0t+e0Qkvuw3b3RSHzHDEn/j00H2IPQB+uzkczruvOAo4X5YwkE5Jz19xiaPXn8hZmfEgBf3AoGAdJ+v6GAzt56JETLvUQ6XLnAkguwDyyOINCQKZdMiYgX3qwluWdtiBujKXPxbuya4pW8TjfFJyhZLBh38K8JJ4jReb1QowN0im289OGnxBCj9bQKh2ZPJH9hH4sk0bvpvpZidjcGx2+lGZr3ckNifASFpwcJTnCkpRzqkhXhuKJUCgYEAmh3iiB7VlXboMaTVygrO4JSZZf4G47aG1h05JM/zbHnZR4j1nZqAuqejNYP0Mo8RD+29100LLTd38E5UY9TZRKGhv9r5PVuSiEVKFJFWzFPxzued4xnGkNmJlZDm6s8EH3AcpxOsCqu1POGtM8umyR/pENP74j4rGNFH5eP+PYcCgYA84Die07zXP31rfOWWabjDMaq4bPMH9drzhjXdMYaFH3T6F1Ba52Iqsk5K526RdPM6eeR1dFPPotNhZMJPmg1PALNSjVBmKnklF+/y6c4eFOiUgTS/wyNpSlr/eKECsWPch9UlAkkIos5lq02pVAv4kK9WumSyXDe5Gu6a5pUC1A==";
  22. private string PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvf75JGQL9IDg8xu2C6qWrIO3H4roSwpvwUeh6y2kQ8iH0gqQXlyLj13ku8pzY1H9JTSeARCsHSD/VJFxMoPOBO+/xGDV3CSdxhOE5Fu5E30ZZMA5XmnMKyN8q+MEh7refGuCmldedTmzr9mNw4HDjS1uqJoqYRl3eUEaC/Syl620iiaSh7Q9/rsT/qNcnP5hO9P3DWionNt78elmjLt0sBdBkQ10o2XwC5RuzBfP8DCBEdL/DPOOE4vtmLP1IdDI7qtjBhX8PdL+/IRxe/4OGvYSPnHW7JNlN970h2UN5i0Yu0AkidJvlS59nX9C1WJ4U37HiMnkMNXLB/Ubi5BkgQIDAQAB";
  23. public string AlipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiXVtTk6opnYllnH/X40k/jSw/82WZ+lGbYQLYH/nVONFJ7Gr9C/dlKpJFIbS+vNDn+YLtM923KmEVSgf8zU0WrTkRjWvKEiyLswWZVqSZW5Jfon1e2SfjNrAVi6XBZa7urAItKQsdD2vFFuyG/ohlXBL103xC1wnjvECD/iholoruEFOLyfobJKTY/6iyrKeOElem1V7OWl6gdjG2oozj3nbVZhtkQvPJECYlolH96eK2mieTkFK82aZ5Tdzx1LPk/3hxRAmzz/9X7xfXdOly88hKBmW8LC9RhTlOWbrXJhhFz13A4brnbnOiY/X7b2OkAYifammc2uh0AIJlCmBTQIDAQAB";
  24. //"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB";
  25. #region 商家认证申请单提交
  26. public string AuthOrderCreate(MerchantAddInfo info, string MerToken)
  27. {
  28. IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", AppId, PrivateKey, "json", "1.0", "RSA2", AlipayPublicKey, "utf-8", false);
  29. AlipayMerchantIndirectAuthorderCreateRequest request = new AlipayMerchantIndirectAuthorderCreateRequest();
  30. string out_biz_no = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  31. string identity_type = info.SubjectType;
  32. string store_address = info.BizStoreAddress;
  33. string merchant_type = "STORE";
  34. var placeType = info.PlaceType; // 小微商户经营场所类型(0 固定场所 1 流动摊贩)
  35. if (placeType == 1)
  36. {
  37. merchant_type = "STALL";
  38. store_address = "无";
  39. }
  40. if (identity_type == "SUBJECT_TYPE_ENTERPRISE") identity_type = "ENTERPRISE";
  41. if (identity_type == "SUBJECT_TYPE_INDIVIDUAL") identity_type = "IND_BIZ";
  42. if (identity_type == "SUBJECT_TYPE_SMALL")
  43. {
  44. identity_type = "MSE";
  45. }
  46. string PeriodEnd = info.PeriodEnd.Value.ToString("yyyy-MM-dd");
  47. if (PeriodEnd.Substring(0, 4) == "9999")
  48. {
  49. PeriodEnd = "forever";
  50. }
  51. string CardPeriodEnd = info.CardPeriodEnd.Value.ToString("yyyy-MM-dd");
  52. if (CardPeriodEnd.Substring(0, 4) == "2050")
  53. {
  54. CardPeriodEnd = "forever";
  55. }
  56. string CertMerchantName = info.CertMerchantName;
  57. if (info.SubjectType == "SUBJECT_TYPE_SMALL")
  58. {
  59. info.LicenseCopy = info.IdCardCopy;
  60. for (int i = 0; i < 9; i++)
  61. {
  62. CertMerchantName = CertMerchantName.Replace(i.ToString(), "");
  63. }
  64. }
  65. string BizContent = "{" +
  66. " \"out_biz_no\":\"" + out_biz_no + "\"," +
  67. " \"contact_person_info\":{" +
  68. " \"contact_name\":\"" + info.CertLegalPerson + "\"," +
  69. " \"contact_phone_no\":\"" + info.MobilePhone + "\"," +
  70. " \"contact_card_no\":\"" + info.IdCardNumber + "\"," +
  71. " \"contact_cert_type\":\"RESIDENT\"" +
  72. " }," +
  73. " \"auth_identity_info\":{" +
  74. " \"identity_type\":\"" + identity_type + "\"," +
  75. " \"is_financial_org\":false,";
  76. if (info.SubjectType != "SUBJECT_TYPE_SMALL")
  77. {
  78. BizContent += " \"certificate_type\":\"BUSINESS_CERT\"," +
  79. " \"certificate_info\":{" +
  80. " \"cert_type\":\"UNIT_SOCIAL_CREDIT\"," +
  81. " \"cert_no\":\"" + info.LicenseNumber + "\"," +
  82. " \"cert_image\":\"" + UploadPic(info.LicenseCopy) + "\"," +
  83. " \"merchant_name\":\"" + info.CertMerchantName + "\"," +
  84. " \"legal_person_name\":\"" + info.CertLegalPerson + "\"," +
  85. " \"register_address\":\"" + info.BizAddressCode.Replace(",", "") + info.BizStoreAddress + "\"," +
  86. " \"effect_time\":\"" + info.PeriodBegin.Value.ToString("yyyy-MM-dd") + "\"," +
  87. " \"expire_time\":\"" + PeriodEnd + "\"" +
  88. " },";
  89. }
  90. if (info.SubjectType == "SUBJECT_TYPE_SMALL")
  91. {
  92. string bizAddressCode = info.BizAddressCode;
  93. string province_code = "", city_code = "", district_code = "";
  94. string province = "", city = "", district = "";
  95. WebCMSEntities db = new WebCMSEntities();
  96. HaoDaAreaCode cityItem = db.HaoDaAreaCode.FirstOrDefault(m => m.CityName.EndsWith(bizAddressCode));
  97. if (cityItem != null)
  98. {
  99. district_code = cityItem.CityCode;
  100. city_code = district_code.Substring(0, 4) + "00";
  101. province_code = district_code.Substring(0, 2) + "0000";
  102. string[] CityNames = cityItem.CityName.Split(',');
  103. province = CityNames[0];
  104. if (CityNames.Length >= 2)
  105. {
  106. city = CityNames[1];
  107. }
  108. if (CityNames.Length >= 3)
  109. {
  110. district = CityNames[2];
  111. }
  112. }
  113. BizContent += " \"support_credentials\":{" +
  114. " \"merchant_type\":\"" + merchant_type + "\"," +
  115. " \"store_name\":\"" + info.BizStoreName + "\"," +
  116. " \"province_code\":\"" + province_code + "\"," +
  117. " \"province\":\"" + province + "\"," +
  118. " \"city_code\":\"" + city_code + "\"," +
  119. " \"city\":\"" + city + "\"," +
  120. " \"district_code\":\"" + district_code + "\"," +
  121. " \"district\":\"" + district + "\"," +
  122. " \"store_address\":\"" + store_address + "\"," +
  123. " \"store_door_img\":\"" + UploadPic(info.StoreEntrancePic.Split(',')[0]) + "\"," +
  124. " \"store_inner_img\":\"" + UploadPic(info.IndoorPic.Split(',')[0]) + "\"" +
  125. " }";
  126. }
  127. BizContent += " }," +
  128. " \"legal_person_info\":{" +
  129. " \"legal_type\":\"LEGAL_PERSON\"," +
  130. " \"card_type\":\"RESIDENT\"," +
  131. " \"person_name\":\"" + info.CertLegalPerson + "\"," +
  132. " \"card_no\":\"" + info.IdCardNumber + "\"," +
  133. " \"effect_time\":\"" + info.CardPeriodBegin.Value.ToString("yyyy-MM-dd") + "\"," +
  134. " \"expire_time\":\"" + CardPeriodEnd + "\"," +
  135. " \"card_front_img\":\"" + UploadPic(info.IdCardCopy) + "\"," +
  136. " \"card_back_img\":\"" + UploadPic(info.IdCardNational) + "\"," +
  137. " \"is_benefit_person\":true" +
  138. " }" +
  139. "}";
  140. request.BizContent = BizContent;
  141. LogHelper.Instance.WriteLog(BizContent, "支付宝开户意愿确认");
  142. string result = "";
  143. try
  144. {
  145. AlipayMerchantIndirectAuthorderCreateResponse response = client.Execute(request);
  146. result = response.Body;
  147. LogHelper.Instance.WriteLog(result, "支付宝开户意愿确认");
  148. }
  149. catch (Exception ex)
  150. {
  151. LogHelper.Instance.WriteLog(ex.ToString(), "支付宝开户意愿确认异常");
  152. result = "";
  153. }
  154. return result;
  155. }
  156. #endregion
  157. #region 查询商家认证申请单状态
  158. public string AuthOrderQuery(string OrderNo)
  159. {
  160. IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", AppId, PrivateKey, "json", "1.0", "RSA2", AlipayPublicKey, "utf-8", false);
  161. AlipayMerchantIndirectAuthorderQuerystatusRequest request = new AlipayMerchantIndirectAuthorderQuerystatusRequest();
  162. request.BizContent = "{" +
  163. " \"order_no\":\"" + OrderNo + "\"" +
  164. "}";
  165. LogHelper.Instance.WriteLog(request.BizContent, "查询支付宝商家认证申请单状态");
  166. string result = "";
  167. try
  168. {
  169. AlipayMerchantIndirectAuthorderQuerystatusResponse response = client.Execute(request);
  170. result = response.Body;
  171. LogHelper.Instance.WriteLog(result, "查询支付宝商家认证申请单状态");
  172. }
  173. catch (Exception ex)
  174. {
  175. LogHelper.Instance.WriteLog(ex.ToString(), "查询支付宝商家认证申请单状态异常");
  176. result = "";
  177. }
  178. return result;
  179. }
  180. #endregion
  181. #region 获取商家认证状态
  182. public string AuthOrderAuthQuery(string MerchantId)
  183. {
  184. IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", AppId, PrivateKey, "json", "1.0", "RSA2", AlipayPublicKey, "utf-8", false);
  185. AlipayMerchantIndirectSmidbindQueryRequest request = new AlipayMerchantIndirectSmidbindQueryRequest();
  186. request.BizContent = "{" +
  187. " \"sub_merchant_id\":\"" + MerchantId + "\"" +
  188. "}";
  189. LogHelper.Instance.WriteLog(request.BizContent, "获取商家认证状态");
  190. string result = "";
  191. try
  192. {
  193. //{\"alipay_merchant_indirect_smidbind_query_response\":{\"code\":\"10000\",\"msg\":\"Success\",\"check_result\":\"AUTHORIZED\"},\"sign\":\"PZo+ozUifPnIJhT/v9xG3PxJu612XMoLX3dgloqBzyyTK05FBtv9i2Au57PxnJYTvZ226JFPJC+QAEiTA3FOHdbd/dXwRtUrTg06SmXsXBipRiwNEwFxxvlGrsXzIPOi4C6nWsyphMDi9CJhLqkUhjO9cpZQE4x3MJ6PIFFjbuvqStJ0dS8xQjCqzygSU3foEetyh7IWs3To1DU8AARDJZ9eOTJB0bznT4g7f8EJgx/MpohRDWmIWWqJYq6HnPhGYtqQcPyuVKej6e9OjjKYe2fHbZPC966QoKHnptzBcNay7gvce8bSp9c78nmiz20moHttGdzZYjvvQ4zOuftExw==\"}
  194. AlipayMerchantIndirectSmidbindQueryResponse response = client.Execute(request);
  195. result = response.Body;
  196. LogHelper.Instance.WriteLog(result, "获取商家认证状态");
  197. }
  198. catch (Exception ex)
  199. {
  200. LogHelper.Instance.WriteLog(ex.ToString(), "获取商家认证状态异常");
  201. result = "";
  202. }
  203. return result;
  204. }
  205. #endregion
  206. #region 图片上传
  207. public string UploadPic(string path)
  208. {
  209. IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", AppId, PrivateKey, "json", "1.0", "RSA2", AlipayPublicKey, "utf-8", false);
  210. string fileName = path.Substring(path.LastIndexOf("/") + 1);
  211. // string imageBase64 = function.imageToBase64String(function.getPath(path));
  212. // imageBase64 = imageBase64.Substring(imageBase64.IndexOf(";base64,") + 8);
  213. AntMerchantExpandIndirectImageUploadRequest request = new AntMerchantExpandIndirectImageUploadRequest();
  214. // FileItem imageContent = new FileItem(fileName, Convert.FromBase64String(imageBase64));
  215. FileItem imageContent = PublicFunction.GetNetFileItem(AppConfig.Base.OssHost + path);
  216. request.ImageContent = imageContent;
  217. request.ImageType = "jpg";
  218. try
  219. {
  220. AntMerchantExpandIndirectImageUploadResponse response = client.Execute(request);
  221. fileName = response.ImageId;
  222. }
  223. catch (Exception ex)
  224. {
  225. LogHelper.Instance.WriteLog(ex.ToString(), "支付宝图片上传异常");
  226. }
  227. return fileName;
  228. }
  229. #endregion
  230. }
  231. }