Переглянути джерело

新生二维码缴费功能

西昌缴费二期
zhangli 2 роки тому
джерело
коміт
4d3a2f116e
11 змінених файлів з 228 додано та 18 видалено
  1. +105
    -0
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/StuInfoFreshController.cs
  2. +13
    -11
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeForm.cshtml
  3. +65
    -7
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeForm.js
  4. +1
    -0
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeIndex.cshtml
  5. +19
    -0
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeIndex.js
  6. +3
    -0
      Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj
  7. +1
    -0
      Learun.Framework.Ultimate V7/Learun.Application.Web/packages.config
  8. +21
    -0
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuInfoFresh/StuInfoFreshEntity.cs
  9. BIN
      Learun.Framework.Ultimate V7/packages/ThoughtWorks.QRCode.1.1.0/.signature.p7s
  10. BIN
      Learun.Framework.Ultimate V7/packages/ThoughtWorks.QRCode.1.1.0/ThoughtWorks.QRCode.1.1.0.nupkg
  11. BIN
      Learun.Framework.Ultimate V7/packages/ThoughtWorks.QRCode.1.1.0/lib/ThoughtWorks.QRCode.dll

+ 105
- 0
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/StuInfoFreshController.cs Переглянути файл

@@ -10,11 +10,14 @@ using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.Mvc;
using ThoughtWorks.QRCode.Codec;

namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
{
@@ -634,6 +637,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
var PayFeeTotal = FinaChargesStandardList.Select(x => x.Standard).Sum();
var jsonData = new
{
StuInfoFreshData = StuInfoFreshData,
FinaChargesStandardList = FinaChargesStandardList,
PayFeeTotal = PayFeeTotal
};
@@ -1226,6 +1230,62 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers

}


/// <summary>
/// 生成缴费二维码
/// </summary>
/// <returns></returns>
[HttpPost]
[AjaxOnly]
public ActionResult PayFeeQRCode(string keyValue)
{
var imgUrl = "";
Random ran = new Random();
string merchantid = "105000082201406"; //UAT--可用防钓鱼接口
string posid = "043724806"; //分行代码
string branchid = "510000000";
string orderid = DateTime.Now.ToString("yyyyMMddhhmmss") + ran.Next(0, 100000);
string payment = "788";
//string payment = "0.1";
string curcode = "01";
string txcode = "530550";
string remark1 = "51d7ab92-1b3d-43f8-9b34-5ecc6e118804" + "-" + "2021";// bean.stuId +"-" + bean.feiYear;
string remark2 = "02!700&03!88&";// reKey;
string returntype = "3";
string timeout = DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss");
string pub32tr2 = "40d987faa793a0a27e7a86ef020111";
string bankURL = "https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain?CCB_IBSVersion=V6";
string tmp = "MERCHANTID=" + merchantid + "&POSID=" + posid + "&BRANCHID=" + branchid + "&ORDERID=" + orderid;
tmp += "&PAYMENT=" + payment + "&CURCODE=" + curcode + "&TXCODE=" + txcode + "&REMARK1=" + remark1;
tmp += "&REMARK2=" + remark2 + "&RETURNTYPE=" + returntype + "&TIMEOUT=" + timeout;
MD5 md5 = MD5.Create();
string tmp1 = tmp;
tmp += "&PUB=" + pub32tr2;
byte[] buffer = Encoding.Default.GetBytes(tmp);
byte[] md5Buffer = md5.ComputeHash(buffer);
string strMd5 = "";
//hdnOrderId.Value = orderid;
foreach (byte item in md5Buffer)
{
strMd5 += item.ToString("x2");
}
String url = bankURL + "&" + tmp1 + "&MAC=" + strMd5;
string reJson = HttpMethods.Post(url);
//HttpConnect conn = new HttpConnect();
//string reJson = conn.Post(url, "");
JsonBean MemberInfoList = JsonConvert.DeserializeObject<JsonBean>(reJson);
if (MemberInfoList.SUCCESS.Equals("true"))
{
string imgCode = HttpMethods.Post(MemberInfoList.PAYURL);
MemberInfoList = JsonConvert.DeserializeObject<JsonBean>(imgCode);
if (MemberInfoList.SUCCESS.Equals("true"))
{
imgUrl = CreateQRImg(MemberInfoList.QRURL, orderid);
}
}

return Success(imgUrl);
}
#endregion

#region 上传图片
@@ -1279,5 +1339,50 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
}
#endregion

public class JsonBean
{
/// <summary>
///
/// </summary>
public string SUCCESS { get; set; }
public string PAYURL { get; set; }
public string QRURL { get; set; }
}
/// <summary>
/// 生成并保存二维码图片的方法
/// </summary>
/// <param name="str">输入的内容</param>
public string CreateQRImg(string str, string orderId)
{
Random ran = new Random();
Bitmap bt;
str = HttpUtility.UrlDecode(str);
string enCodeString = str;
//生成设置编码实例
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
//设置二维码的规模,默认4
qrCodeEncoder.QRCodeScale = 3;
//设置二维码的版本,默认7
qrCodeEncoder.QRCodeVersion = 7;
//设置错误校验级别,默认中等
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
//生成二维码图片
bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
//二维码图片的名称
string filename = orderId;
//保存二维码图片在photos路径下
try
{
bt.Save(Server.MapPath("~/Content/images/") + filename + ".jpg");
}
catch (Exception ex)
{

return "";
}

//图片控件要显示的二维码图片路径
return "~/Content/images/" + filename + ".jpg";
}
}
}

+ 13
- 11
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeForm.cshtml Переглянути файл

@@ -18,21 +18,23 @@
margin-right:50px;
margin-top:20px;
}
.table {
text-align: center;
margin: auto;
}
.tableLeft {
width: 30%;
}
</style>
<div class="lr-form-wrap" id="form">
<div class="title">费用明细</div>
<table class="table table-bordered" id="PayFeeDetail">
@*<tr>
<td>第一项</td>
<td>100元</td>
</tr>
<tr>
<td colspan="2">合计:200元</td>
</tr>*@
</table>
<table class="table table-bordered" id="PayFeeDetail">
</table>
<div id="btnBox">
<div id="confirmPayFee" class="btn btn-primary">确认缴费</div>
<div id="cancelPayFee" class="btn btn-default">取消缴费</div>
<div id="confirmPayFee" class="btn btn-primary">支付</div>
<div id="searchPayFee" class="btn btn-success">查询</div>
<div id="cancelPayFee" class="btn btn-default">取消</div>
</div>
</div>
@Html.AppendJsFile("/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeForm.js")

+ 65
- 7
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeForm.js Переглянути файл

@@ -6,6 +6,7 @@
*/
var acceptClick;
var keyValue = request('keyValue');
var PayFeeTotal = 0;//应交费用
var bootstrap = function ($, learun) {
"use strict";
var page = {
@@ -15,11 +16,33 @@ var bootstrap = function ($, learun) {
page.initData();
},
bind: function () {
//确认缴费
//获取缴费二维码
$('#confirmPayFee').click(function () {
learun.postForm(top.$.rootUrl + '/EducationalAdministration/StuInfoFresh/IsPayFee', { keyValue: keyValue, status: 1 }, function () {
learun.frameTab.currentIframe().refreshGirdData();
if (parseFloat($('#PayMoney').html()) > PayFeeTotal) {
return learun.alert.warning("所交费用超出应交费用!");
}
//$('.paydetail').each(function(i, item) {
// console.log('item',item);
//});
learun.httpAsyncPost(top.$.rootUrl + '/EducationalAdministration/StuInfoFresh/PayFeeQRCode', { keyValue: keyValue }, function (res) {
learun.loading(false);
console.log(res);
$('#qrcodeImg').attr('src', res.info);
//if (res.code == learun.httpCode.success) {
// if (!!callback) {
// callback(res);
// }
// learun.alert.success(res.info);
//}
//else {
// learun.alert.error(res.info);
// learun.httpErrorLog(res.info);
//}
//layer.close(layer.index);
});
//learun.postForm(top.$.rootUrl + '/EducationalAdministration/StuInfoFresh/PayFeeQRCode', { keyValue: keyValue}, function () {
// learun.frameTab.currentIframe().refreshGirdData();
//});
});
//取消缴费
$('#cancelPayFee').click(function () {
@@ -28,16 +51,51 @@ var bootstrap = function ($, learun) {
});
});

//计算实交金额
$('table').on('change',
'.paydetail',
function () {
var num = 0;
$(".paydetail").each(function (i, item) {
num += parseFloat($(this).val());
});
$('#PayMoney').html(num);
});
},
initData: function () {
if (!!keyValue) {
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuInfoFresh/GetPayFeeDetail?keyValue=' + keyValue, function (data) {
var html = "";
html += '<tr><td>收费项目名称</td><td>收费项目标准</td></tr>';
var StuInfoFresh = data['StuInfoFreshData'];
var className = "";
learun.clientdata.getAsync('custmerData', {
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'bjsj',
key: StuInfoFresh.ClassNo,
keyId: 'classno',
callback: function (_data) {
className = _data['classname'];
}
});
var deptName = "";
learun.clientdata.getAsync('custmerData', {
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdDeptInfo',
key: StuInfoFresh.DeptNo,
keyId: 'deptno',
callback: function (_data) {
deptName = _data['deptname'];
}
});
PayFeeTotal = parseFloat(data['PayFeeTotal']);
var html = "<tr><td class=\"tableLeft\">学号</td><td class=\"tableLeft\">" + StuInfoFresh.StuNo + "</td><td class=\"tableRight qrcode\" rowspan=\"4\"><img id='qrcodeImg'/></td></tr>";
html += "<tr><td>姓名</td> <td>" + StuInfoFresh.StuName + "</td></tr>";
html += "<tr><td>班级</td><td>" + className + "</td></tr>";
html += "<tr><td>系别</td><td>" + deptName + "</td></tr>";
html += '<tr><td>缴费项目</td><td>应交费用</td><td>本次实交</td></tr>';
$.each(data['FinaChargesStandardList'], function (i, item) {
html += '<tr><td>' + item.ChargeItemName + '</td><td>' + item.Standard + '元</td></tr>';
html += '<tr><td>' + item.ChargeItemName + '</td><td>' + item.Standard + '元</td><td><input id="' + item.ChargeItemID + '" type="number" class="form-control paydetail" value="' + item.Standard + '" /></td></tr>';
});
html += '<tr><td colspan = "2">合计: ' + data['PayFeeTotal'] + '元</td></tr>';
html += '<tr><td>合计</td><td>' + data['PayFeeTotal'] + '元</td><td><span id="PayMoney">' + data['PayFeeTotal'] + '</span></td></tr>';
html += '<tr><td>贷款金额</td><td colspan="2"><input id="LoanMoney" type="number" class="form-control" /></td></tr>';
html += '<tr><td>已交金额</td><td colspan="2"></td></tr>';
$('#PayFeeDetail').html(html);
});
}


+ 1
- 0
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeIndex.cshtml Переглянути файл

@@ -25,6 +25,7 @@
<a id="lr_synchronous" class="btn btn-default"><i class="fa fa-plus"></i>&nbsp;同步</a>
<a id="lr_view" class="btn btn-default"><i class="fa fa-pencil-square-o"></i>&nbsp;查看</a>
@*<a id="lr_payFee" class="btn btn-default"><i class="fa fa-plus"></i>&nbsp;缴费</a>*@
<a id="lr_payCode" class="btn btn-default"><i class="fa fa-plus"></i>&nbsp;二维码缴费</a>
<a id="lr_pay" class="btn btn-default"><i class="fa fa-plus"></i>&nbsp;线上缴费</a>
<a id="lr_cancelPay" class="btn btn-default"><i class="fa fa-trash-o"></i>&nbsp;取消线上缴费</a>
@*<a id="lr_loan" class="btn btn-default"><i class="fa fa-plus"></i>&nbsp;填写贷款回执码</a>*@


+ 19
- 0
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuInfoFresh/PayFeeIndex.js Переглянути файл

@@ -39,6 +39,25 @@ var bootstrap = function ($, learun) {
});
}
});
//二维码缴费
$('#lr_payCode').on('click', function () {
var keyValue = $('#gridtable').jfGridValue('ID');
selectedRow = $('#gridtable').jfGridGet('rowdata');
if (learun.checkrow(keyValue)) {
if (selectedRow.PayFeeStatus == "1") {
learun.alert.warning("当前新生已缴费!");
return;
}
learun.layerForm({
id: 'form_payCode',
title: '二维码缴费',
url: top.$.rootUrl + '/EducationalAdministration/StuInfoFresh/PayFeeForm?keyValue=' + keyValue,
width: 800,
height: 600,
btn: null
});
}
});
// 缴费
$('#lr_payFee').on('click', function () {
var keyValue = $('#gridtable').jfGridValue('ID');


+ 3
- 0
Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj Переглянути файл

@@ -265,6 +265,9 @@
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
</Reference>
<Reference Include="ThoughtWorks.QRCode, Version=1.0.4778.30637, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ThoughtWorks.QRCode.1.1.0\lib\ThoughtWorks.QRCode.dll</HintPath>
</Reference>
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>


+ 1
- 0
Learun.Framework.Ultimate V7/Learun.Application.Web/packages.config Переглянути файл

@@ -75,5 +75,6 @@
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net462" />
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net462" />
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net462" />
<package id="ThoughtWorks.QRCode" version="1.1.0" targetFramework="net462" />
<package id="Unity" version="4.0.1" targetFramework="net45" />
</packages>

+ 21
- 0
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuInfoFresh/StuInfoFreshEntity.cs Переглянути файл

@@ -619,6 +619,27 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration
[Column("BANKLOCATION")]
public string BankLocation { get; set; }

/// <summary>
/// 缴费明细
/// </summary>
[Column("PAYFEEDETAIL")]
public string PayFeeDetail { get; set; }
/// <summary>
/// 缴费金额
/// </summary>
[Column("PAYMONEY")]
public decimal? PayMoney { get; set; }
/// <summary>
/// 贷款金额
/// </summary>
[Column("LOANMONEY")]
public decimal? LoanMoney { get; set; }
/// <summary>
/// 是否开票
/// </summary>
[Column("ISINVOICE")]
public int? IsInvoice { get; set; }
#endregion

#region 扩展操作


BIN
Learun.Framework.Ultimate V7/packages/ThoughtWorks.QRCode.1.1.0/.signature.p7s Переглянути файл


BIN
Learun.Framework.Ultimate V7/packages/ThoughtWorks.QRCode.1.1.0/ThoughtWorks.QRCode.1.1.0.nupkg Переглянути файл


BIN
Learun.Framework.Ultimate V7/packages/ThoughtWorks.QRCode.1.1.0/lib/ThoughtWorks.QRCode.dll Переглянути файл


Завантаження…
Відмінити
Зберегти