Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

220 Zeilen
8.7 KiB

  1. using System;
  2. using Learun.Application.Organization;
  3. using Learun.Application.TwoDevelopment.EducationalAdministration;
  4. using Learun.Application.TwoDevelopment.EvaluationTeach;
  5. using Learun.Util;
  6. using Nancy;
  7. using System.Collections.Generic;
  8. using System.Drawing;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Security.Cryptography;
  12. using System.Text;
  13. using System.Web;
  14. using System.Web.Mvc;
  15. using Learun.Application.Base.SystemModule;
  16. using Learun.Application.TwoDevelopment.Ask;
  17. using Learun.Application.TwoDevelopment.ReceiveSendFeeManagement;
  18. using Newtonsoft.Json;
  19. using ThoughtWorks.QRCode.Codec;
  20. namespace Learun.Application.WebApi.Modules
  21. {
  22. /// <summary>
  23. /// 版 本 Learun-ADMS V7.0.0 数字化智慧校园
  24. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  25. /// 创建人:数字化智慧校园-框架开发组
  26. /// 日 期:2018.01.04
  27. /// 描 述:
  28. /// </summary>
  29. public class FinaChargeStuYearApi : BaseApi
  30. {
  31. private FinaChargeStuYearIBLL finaChargeStuYearIBLL = new FinaChargeStuYearBLL();
  32. private FinaChargeStuOrderIBLL finaChargeStuOrderIbll = new FinaChargeStuOrderBLL();
  33. private TeachSwitchIBLL teachSwitchIbll = new TeachSwitchBLL();
  34. public FinaChargeStuYearApi()
  35. : base("/ReceiveSendFeeManagement/FinaChargeStuYearApi")
  36. {
  37. Get["/getpayfeelist"] = GetPayfeeList;// 获取缴费列表
  38. Get["/getpayfeeinfo"] = GetPayfeeInfo;//获取缴费明细
  39. Post["/generateqrcode"] = PayFeeQRCode;//生成缴费二维码
  40. Get["/getinvoice"] = GetInvoice;//获取发票
  41. }
  42. public Response GetInvoice(dynamic _)
  43. {
  44. string keyValue = Request.Query["keyValue"];
  45. var list = finaChargeStuYearIBLL.GetStuInvoice(keyValue);
  46. return Success(list);
  47. }
  48. public Response GetPayfeeList(dynamic _)
  49. {
  50. var eastatus = teachSwitchIbll.GetFirst("jf");
  51. if (eastatus != null && eastatus.status == "1")
  52. {
  53. ReqPageParam parameter = this.GetReqData<ReqPageParam>();
  54. var data = finaChargeStuYearIBLL.GetPageList(parameter.pagination, parameter.queryJson);
  55. var jsonData = new
  56. {
  57. rows = data,
  58. total = parameter.pagination.total,
  59. page = parameter.pagination.page,
  60. records = parameter.pagination.records
  61. };
  62. return Success(jsonData);
  63. }
  64. else
  65. {
  66. return Fail("当前不在缴费时间范围");
  67. }
  68. }
  69. public Response GetPayfeeInfo(dynamic _)
  70. {
  71. string keyValue = Request.Query["keyValue"];
  72. //学生基础信息
  73. var FinaChargeStuYearData = finaChargeStuYearIBLL.GetFinaChargeStuYearEntity(keyValue);
  74. //学生缴费明细
  75. var FinaChargeStuItemList = finaChargeStuYearIBLL.GetFinaChargeStuItemList(keyValue);
  76. var jsonData = new
  77. {
  78. StuInfoFreshData = FinaChargeStuYearData,
  79. FinaChargesStandardList = FinaChargeStuItemList,
  80. PayFeeTotal =FinaChargeStuYearData.NeedToPay,
  81. SJAmount = FinaChargeStuYearData.SJAmount
  82. };
  83. return Success(jsonData);
  84. }
  85. public class PayfeeRequest
  86. {
  87. public string strEntity { get; set; }
  88. public string detailList { get; set; }
  89. }
  90. /// <summary>
  91. /// 生成缴费二维码
  92. /// </summary>
  93. /// <returns></returns>
  94. public Response PayFeeQRCode(dynamic _)
  95. {
  96. PayfeeRequest parameter = this.GetReqData<PayfeeRequest>();
  97. FinaChargeStuYearEntity entity = parameter.strEntity.ToObject<FinaChargeStuYearEntity>();
  98. List<FinaChargeStuOrderDetailEntity> list = parameter.detailList.ToObject<List<FinaChargeStuOrderDetailEntity>>();
  99. var imgUrl = "";
  100. Random ran = new Random();
  101. string merchantid = "105000082201406";//商户号
  102. string posid = "043724806";//商户柜台代码
  103. string branchid = "510000000";//分行代码
  104. string orderid = DateTime.Now.ToString("yyyyMMddhhmmss") + ran.Next(0, 100000);
  105. string payment = entity.PayMoney.ToString();
  106. string curcode = "01";
  107. string txcode = "530550";
  108. string remark1 = entity.StuNo;
  109. string remark2 = entity.FSYear.ToString();
  110. string returntype = "3";
  111. string timeout = DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss");
  112. string pub32tr2 = "40d987faa793a0a27e7a86ef020111";
  113. string bankURL = "https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain?CCB_IBSVersion=V6";
  114. string tmp = "MERCHANTID=" + merchantid + "&POSID=" + posid + "&BRANCHID=" + branchid + "&ORDERID=" + orderid;
  115. tmp += "&PAYMENT=" + payment + "&CURCODE=" + curcode + "&TXCODE=" + txcode + "&REMARK1=" + remark1;
  116. tmp += "&REMARK2=" + remark2 + "&RETURNTYPE=" + returntype + "&TIMEOUT=" + timeout;
  117. MD5 md5 = MD5.Create();
  118. string tmp1 = tmp;
  119. tmp += "&PUB=" + pub32tr2;
  120. byte[] buffer = Encoding.Default.GetBytes(tmp);
  121. byte[] md5Buffer = md5.ComputeHash(buffer);
  122. string strMd5 = "";
  123. //hdnOrderId.Value = orderid;
  124. foreach (byte item in md5Buffer)
  125. {
  126. strMd5 += item.ToString("x2");
  127. }
  128. String url = bankURL + "&" + tmp1 + "&MAC=" + strMd5;
  129. string reJson = HttpMethods.Post(url);
  130. LogEntity logEntity = new LogEntity();
  131. logEntity.F_CategoryId = 121;
  132. logEntity.F_ExecuteResultJson = reJson;
  133. logEntity.WriteLog();
  134. //HttpConnect conn = new HttpConnect();
  135. //string reJson = conn.Post(url, "");
  136. JsonBean MemberInfoList = JsonConvert.DeserializeObject<JsonBean>(reJson);
  137. if (MemberInfoList.SUCCESS.Equals("true"))
  138. {
  139. string imgCode = HttpMethods.Post(MemberInfoList.PAYURL);
  140. logEntity.F_CategoryId = 121;
  141. logEntity.F_ExecuteResultJson = imgCode;
  142. logEntity.WriteLog();
  143. MemberInfoList = JsonConvert.DeserializeObject<JsonBean>(imgCode);
  144. if (MemberInfoList.SUCCESS.Equals("true"))
  145. {
  146. imgUrl = CreateQRImg(MemberInfoList.QRURL, orderid);
  147. }
  148. }
  149. if (!string.IsNullOrEmpty(imgUrl))
  150. {
  151. entity.orderid = orderid;
  152. finaChargeStuOrderIbll.SaveOrderData(entity, list);
  153. }
  154. var backimgUrl = new { imgUrl };
  155. return Success(backimgUrl);
  156. }
  157. public class JsonBean
  158. {
  159. /// <summary>
  160. ///
  161. /// </summary>
  162. public string SUCCESS { get; set; }
  163. public string PAYURL { get; set; }
  164. public string QRURL { get; set; }
  165. }
  166. /// <summary>
  167. /// 生成并保存二维码图片的方法
  168. /// </summary>
  169. /// <param name="str">输入的内容</param>
  170. public string CreateQRImg(string str, string orderId)
  171. {
  172. string QRCodeFile = Config.GetValue("QRCodeFile");
  173. Random ran = new Random();
  174. Bitmap bt;
  175. str = HttpUtility.UrlDecode(str);
  176. string enCodeString = str;
  177. //生成设置编码实例
  178. QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
  179. //设置二维码的规模,默认4
  180. qrCodeEncoder.QRCodeScale = 3;
  181. //设置二维码的版本,默认7
  182. qrCodeEncoder.QRCodeVersion = 7;
  183. //设置错误校验级别,默认中等
  184. qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
  185. //生成二维码图片
  186. bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
  187. //二维码图片的名称
  188. string filename = orderId;
  189. if (!DirFileHelper.IsExistFile(QRCodeFile + "/Content/images/QRCode/"))
  190. {
  191. Directory.CreateDirectory(QRCodeFile + "/Content/images/QRCode/");
  192. }
  193. var path = QRCodeFile + "/Content/images/QRCode/" + filename + ".jpg";
  194. //保存二维码图片在photos路径下
  195. try
  196. {
  197. bt.Save(path);
  198. }
  199. catch (Exception ex)
  200. {
  201. return "";
  202. }
  203. //图片控件要显示的二维码图片路径
  204. return "/Content/images/QRCode/" + filename + ".jpg";
  205. }
  206. }
  207. }