RefundController.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using LeaRun.Application.Code;
  2. using LeaRun.Util.Offices;
  3. using LeaRun.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Web;
  8. using System.Web.Mvc;
  9. using LeaRun.Application.Web.Common;
  10. using System.Data;
  11. using System.Text;
  12. using WxPayAPI;
  13. namespace LeaRun.Application.Web.Areas.WeChatManage.Controllers
  14. {
  15. public class RefundController : MvcControllerBase
  16. {
  17. #region 视图功能
  18. /// <summary>
  19. /// 手机审核
  20. /// </summary>
  21. /// <returns></returns>
  22. [HttpGet]
  23. [HandlerAuthorize(PermissionMode.Enforce)]
  24. public ActionResult Index()
  25. {
  26. return View();
  27. }
  28. /// <summary>
  29. /// 获取审核信息
  30. /// </summary>
  31. /// <returns></returns>
  32. [HttpGet]
  33. public ActionResult GetPayMentInfoJson()
  34. {
  35. StringBuilder sb = new StringBuilder();
  36. String sql = "select A.WxPayMentInfo_ID,B.CustomerCode,B.Username,C.PlanMoney,C.GetMoney,C.CreateDT,C.InvoiceCode,A.Is_Refund,A.ISPaySuccess,A.Transaction_id,A.Out_trade_no from BCS_WxPayMentInfo A left Join BCS_WxPayUserInfo B on B.WXOpenId = A.OpenId and B.IsDelete = 0 left join BCS_Charge C on C.Charge_ID = A.Charge_ID";
  37. DataTable dt = SqlHelper.ExecuteDataTable(sql, CommandType.Text, null);
  38. sb.Append("{\"page\":\"1\",").Append("\"total\":2,").Append("\"records\":\"").Append(dt.Rows.Count).Append("\",");
  39. sb.Append("\"rows\":[");
  40. for (int i = 0; i < dt.Rows.Count; i++)
  41. {
  42. var row = dt.Rows[i];
  43. sb.Append("{\"id\":\"").Append(row["WxPayMentInfo_ID"]).Append("\",\"cell\":");
  44. sb.Append("[\"").Append(row["CustomerCode"].ToString()).Append("\",\"");
  45. sb.Append(row["Username"].ToString()).Append("\",\"");
  46. sb.Append(row["PlanMoney"].ToString()).Append("\",\"");
  47. sb.Append(row["GetMoney"].ToString()).Append("\",\"");
  48. sb.Append(row["CreateDT"].ToString()).Append("\",\"");
  49. sb.Append(row["InvoiceCode"].ToString()).Append("\",\"");
  50. sb.Append(row["Transaction_id"].ToString()).Append("\",\"");
  51. sb.Append(row["Out_trade_no"].ToString()).Append("\",\"");
  52. //sb.Append(row["ISPaySuccess"].ToString()).Append("\",\"");
  53. if (row["ISPaySuccess"].ToString() == "是")
  54. {
  55. if (row["Is_Refund"].ToString() == "1")
  56. {
  57. sb.Append("退款成功").Append("\"]");
  58. }
  59. else
  60. {
  61. sb.Append("支付成功").Append("\"]");
  62. }
  63. }
  64. if (row["ISPaySuccess"].ToString() == "否")
  65. {
  66. sb.Append("支付失败").Append("\"]");
  67. }
  68. //sb.Append(row["IsAllow"].ToString()).Append("\"]");
  69. if (i == dt.Rows.Count - 1)
  70. {
  71. sb.Append("}");
  72. }
  73. else
  74. {
  75. sb.Append("},");
  76. }
  77. }
  78. sb.Append("],");
  79. sb.Append("\"userdata\":{\"amount\":");
  80. sb.Append("1111111").Append(",\"tax\":");
  81. sb.Append("2222222").Append(",\"total\":");
  82. sb.Append("3333333").Append(",\"name\":\"Totals:\"}}");
  83. //var data = ExcelHelper.ExcelImport(Server.MapPath("~/Areas/ReportManage/Views/ReportDemo/data/Reconciliation.xlsx"));
  84. return Content(sb.ToString());// Content(data.ToJson());
  85. }
  86. /// <summary>
  87. /// 退款
  88. /// </summary>
  89. /// <param name="Id">审核条数的ID</param>
  90. /// <returns></returns>
  91. [HttpGet]
  92. public ActionResult RefundFee(String Id)
  93. {
  94. String json = "{\"code\":\"0\",\"Msg\":\"退款成功\"}";
  95. //变量定义区
  96. //微信订单号
  97. String transaction_id = "";
  98. //商户订单号
  99. String out_trade_no = "";
  100. //金额
  101. decimal money;
  102. //查询订单信息
  103. String sql = " select Transaction_id,Out_trade_no,Totol_Fee from BCS_WxPayMentInfo where WxPayMentInfo_ID = " + Id;
  104. DataTable dt = SqlHelper.ExecuteDataTable(sql, CommandType.Text, null);
  105. transaction_id = dt.Rows[0]["Transaction_id"].ToString();
  106. out_trade_no = dt.Rows[0]["Out_trade_no"].ToString();
  107. money = Convert.ToDecimal(dt.Rows[0]["Totol_Fee"].ToString()) * 100;
  108. string result = Refund.Run(transaction_id, out_trade_no, money.ToString().Split('.')[0], money.ToString().Split('.')[0]);
  109. if (result.Contains("result_code=SUCCESS"))
  110. {
  111. json = "{\"code\":\"1\",\"Msg\":\"退款成功\"}";
  112. //更新数据状态
  113. String sqlUpdate = "update BCS_WxPayMentInfo set Is_Refund = 1 where WxPayMentInfo_ID =" + Id;
  114. SqlHelper.ExecuteNonQuery(sqlUpdate, CommandType.Text, null);
  115. //插入退款记录表
  116. InsertWxRefundLog(transaction_id, out_trade_no, money.ToString(), "", Id.ToString());
  117. }
  118. else
  119. {
  120. json = "{\"code\":\"0\",\"Msg\":\"退款失败\"}";
  121. }
  122. return Content(json);
  123. }
  124. //插入退款记录表
  125. public void InsertWxRefundLog(String transaction_id, String out_trade_no, String money, String Operator, String WxPayMentInfo_ID)
  126. {
  127. StringBuilder sb = new StringBuilder();
  128. sb.Append("INSERT INTO BCS_WxRefundLog (Transaction_id,Out_trade_no,RefundTime,Operator,RefundFee,WxPayMentInfo_ID) VALUES ('");
  129. sb.Append(transaction_id);
  130. sb.Append("','");
  131. sb.Append(out_trade_no);
  132. sb.Append("','");
  133. sb.Append(DateTime.Now);
  134. sb.Append("','");
  135. sb.Append(OperatorProvider.Provider.Current().UserName);
  136. sb.Append("',");
  137. sb.Append(money);
  138. sb.Append(",");
  139. sb.Append(WxPayMentInfo_ID);
  140. sb.Append(")");
  141. SqlHelper.ExecuteNonQuery(sb.ToString(), CommandType.Text, null);
  142. }
  143. #endregion
  144. }
  145. }