This commit is contained in:
hodong13 2020-12-01 06:50:16 +00:00
parent 02625f336f
commit f85626b127
11 changed files with 185 additions and 160 deletions

View File

@ -607,8 +607,8 @@ namespace NP.BO.Controllers
if (vm.isexceldown == 1)
{
return ExportExcel(
new String[] { "결제번호", "신청자이름", "ID", "회원구분", "회사명", "상품구분", "상품유형","환급여부", "상품명", "교육일정", "결제금액", "결제방법", "입금금액", "환불금액", "신청일", "입금일", "결제상태"},
new String[] { "payno", "username", "userid", "isjoinname", "asname", "ptypename","cshapename" ,"isrebatename", "itemname", "stimeymd", "payamt", "pptypename", "payamt", "refundamt", "cdtymd", "payymd", "pstatusname2"},
new String[] { "결제번호", "신청자이름", "ID", "회원구분", "회사명", "상품구분", "상품유형","환급여부", "상품명", /*"교육일정",*/ "결제금액", "결제방법", "입금금액", "환불금액", "신청일", "입금일", "결제상태"},
new String[] { "payno", "username", "userid", "isjoinname", "asname", "ptypename","cshapename" ,"isrebatename", "itemname", /*"stimeymd",*/ "payamt", "pptypename", "payamt", "refundamt", "cdtymd", "payymd", "pstatusname2"},
vm.PayItems,
"ProductSales_"+DateTime.Now.Year+DateTime.Now.Month+DateTime.Now.Day);
}
@ -645,6 +645,16 @@ namespace NP.BO.Controllers
vm.Pay = Dao.Get<Pay>("cr.pay.forrfd", vm.payno).First();
vm.PayItems = Dao.Get<PayItem>("cr.payitem.forrfd", vm.payno);
vm.PayRfds = Dao.Get<PayRfd>("cr.payrfditems2", vm.rfdno);
vm.FileList = new List<File>() { };
vm.FileList2 = new List<File>() { };
if ((vm.PayRfds.First().fgnor??0) > 0)
{
vm.FileList = GetFiles(vm.PayRfds.First().fgnor.Value);
}
if ((vm.PayRfds.First().fgnob??0) > 0)
{
vm.FileList2 = GetFiles(vm.PayRfds.First().fgnob.Value);
}
return View(vm);
}
public ActionResult refundprint(VMPay vm)

View File

@ -35,11 +35,11 @@
@Html.HiddenFor(m => m.stringval5)
<label><input type="checkbox" name="pstatus" value="21" @(sv3.Contains(",21,") ? "checked" : "") /> 결제대기</label>&nbsp;&nbsp;
<label><input type="checkbox" name="pstatus" value="22" @(sv3.Contains(",22,") ? "checked" : "") /> 입금대기</label>&nbsp;&nbsp;
<label><input type="checkbox" name="pstatus" value="1" @(sv3.Contains(",1,") ? "checked" : "") /> 결제완료</label>&nbsp;&nbsp;
<label><input type="checkbox" name="pstatus" value="1" @(sv3.Contains(",1,") ? "checked" : "") /> 완료</label>&nbsp;&nbsp;
<label><input type="checkbox" id="chkisrefundcall" @(Model.stringval4 != null ? "checked" : "") /> 환불요청</label>&nbsp;&nbsp;
<label><input type="checkbox" name="rstatus" value="1" @((Model.stringval5 ?? "").Contains("1") ? "checked" : "") /> 부분환불</label>&nbsp;&nbsp;
<label><input type="checkbox" name="rstatus" value="2" @((Model.stringval5 ?? "").Contains("2") ? "checked" : "") /> 전액환불</label>&nbsp;&nbsp;
<label><input type="checkbox" name="pstatus" value="41,42,43" @(sv3.Contains(",41,") ? "checked" : "") /> 결제취소</label>&nbsp;&nbsp;
<label><input type="checkbox" name="pstatus" value="41,42,43" @(sv3.Contains(",41,") ? "checked" : "") /> 취소</label>&nbsp;&nbsp;
</td>
</tr>
<tr>
@ -49,10 +49,10 @@
<label><input type="checkbox" name="ptype" value="1" @(sv7.Contains(",1,") ? "checked" : "") /> 신용카드</label>&nbsp;&nbsp;
<label><input type="checkbox" name="ptype" value="2" @(sv7.Contains(",2,") ? "checked" : "") /> 계좌이체</label>&nbsp;&nbsp;
<label><input type="checkbox" name="ptype" value="3" @(sv7.Contains(",3,") ? "checked" : "") /> 가상계좌</label>&nbsp;&nbsp;
<label><input type="checkbox" name="ptype" value="4" @(sv7.Contains(",4,") ? "checked" : "") /> 금</label>&nbsp;&nbsp;
<label><input type="checkbox" name="ptype" value="5" @(sv7.Contains(",5,") ? "checked" : "") /> 현금+카드</label>&nbsp;&nbsp;
<label><input type="checkbox" name="ptype" value="4" @(sv7.Contains(",4,") ? "checked" : "") /> 무통장입금</label>&nbsp;&nbsp;
@*<label><input type="checkbox" name="ptype" value="5" @(sv7.Contains(",5,") ? "checked" : "") /> 현금+카드</label>&nbsp;&nbsp;*@
<label><input type="checkbox" name="ptype" value="6" @(sv7.Contains(",6,") ? "checked" : "") /> 무료</label>&nbsp;&nbsp;
<label><input type="checkbox" name="ptype" value="9" @(sv7.Contains(",9,") ? "checked" : "") /> 위탁계약</label>&nbsp;&nbsp;
@*<label><input type="checkbox" name="ptype" value="9" @(sv7.Contains(",9,") ? "checked" : "") /> 위탁계약</label>&nbsp;&nbsp;*@
</td>
</tr>
<tr>
@ -61,24 +61,24 @@
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":미수상태;1:미수결제;2:미수입금" }, { "name", "stringval18" }, { "selected", Model.stringval18 } })
</td>
</tr>
<tr>
@*<tr>
<th>회사정보</th>
<td class="text-left">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":회원구분;1:회원사;0:비회원사" }, { "name", "stringval8" }, { "selected", Model.stringval8 } })
@Html.Partial("./Partial/Text", Model.stringval9, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval9", Value = Model.stringval9, PH = "회사명 검색", CssClass = "" }))
@Html.Partial("./Partial/Text", Model.stringval10, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval10", Value = Model.stringval10, PH = "사업자등록번호 검색", CssClass = "" }))
</td>
</tr>
</tr>*@
<tr>
<th>결제상품</th>
<td class="text-left">
@Html.HiddenFor(m => m.stringval14)
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":상품구분;0:강좌;1:패키지;2:교재;3:시험;4:자격증강좌" }, { "name", "stringval11" }, { "selected", Model.stringval11 } })
@*@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":상품구분;0:강좌;1:패키지;2:교재;3:시험;4:자격증강좌" }, { "name", "stringval11" }, { "selected", Model.stringval11 } })*@
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":상품유형;0:온라인;1:오프라인;2:혼합" }, { "name", "stringval12" }, { "selected", Model.stringval12 } })
@Html.Partial("./Partial/Select", Model.CGs, new ViewDataDictionary { { "name", "stringval13" }, { "selected", Model.stringval13 }, { "df", ":-과정분류" } })&nbsp;&nbsp;
<label><input type="checkbox" name="rebate" value="1" @(sv14.Contains(",1,") ? "checked" : "") /> 환급</label>&nbsp;&nbsp;
@*<label><input type="checkbox" name="rebate" value="1" @(sv14.Contains(",1,") ? "checked" : "") /> 환급</label>&nbsp;&nbsp;
<label><input type="checkbox" name="rebate" value="0" @(sv14.Contains(",0,") ? "checked" : "") /> 비환급</label>&nbsp;&nbsp;
<label><input type="checkbox" name="stringval17" value="1" @(Model.stringval17 != null ? "checked" : "") /> 단체결제</label>&nbsp;&nbsp;
<label><input type="checkbox" name="stringval17" value="1" @(Model.stringval17 != null ? "checked" : "") /> 단체결제</label>&nbsp;&nbsp;*@
</td>
</tr>
<tr>
@ -108,6 +108,7 @@
<th width="100">결제번호</th>
<th width="200">신청자(ID)<br />회사명</th>
<th>상품명</th>
<th>수강일</th>
<th>결제금액<br />(결제방법)</th>
<th>입금금액<br />(환불금액)</th>
<th>신청/승인일</th>
@ -121,15 +122,16 @@
<tr>
<td><input type="checkbox" class="autocheck" value="@d.userno" data-userno="@d.userno" /></td>
<td>@d.payno</td>
<td>@string.Format("{0}({1}){2}", d.username, d.userid, d.isgroup == 1 && d.ccount > 1 ? string.Format(" 외 {0}명", d.ccount - 1) : "")<br /><span class="isjoin@(d.isjoin)">@(d.isjoin == 1 ? "정" : "비")</span>]@(d.asname ?? "-")</td>
<td>@string.Format("{0}({1}){2}", d.username, d.userid, d.isgroup == 1 && d.ccount > 1 ? string.Format(" 외 {0}명", d.ccount - 1) : "")<br />@*<span class="isjoin@(d.isjoin)">@(d.isjoin == 1 ? "정" : "비")</span>]*@@(d.asname ?? "-")</td>
<td class="link">
<a href="#" onclick="gopay(@d.isexamready, @d.payno, @d.userno)">
<span class="piptype piptype@(d.ptype)">@d.ptypename</span>
@*<span class="piptype piptype@(d.ptype)">@d.ptypename</span>*@
@Html.Raw(d.ptype == 0 || d.ptype == 1 || d.ptype == 4 ? string.Format("&nbsp;<span class=\"cshape\">{0}</span>", d.cshapename) : "")
@Html.Raw(d.isrebate == 1 && (d.ptype == 0 || d.ptype == 1 || d.ptype == 4) ? "&nbsp;<span class=\"isrebate\">환급</span>" : "")
@*@Html.Raw(d.isrebate == 1 && (d.ptype == 0 || d.ptype == 1 || d.ptype == 4) ? "&nbsp;<span class=\"isrebate\">환급</span>" : "")*@
&nbsp;@d.itemname@(d.ccount > 1 ? string.Format(" 외 {0} 건", d.ccount - 1) : "")
</a>
</td>
<td>@d.sstime.ToString("yy-MM-dd")~<span style="display: inline-block">@d.setime.ToString("yy-MM-dd")</span></td>
<td>@d.payamt.ToString("#,0")<br />(@(d.pptype == 0 ? "미정" : d.pptypename))</td>
<td class="link" style="text-align: right !important;"><a href="#" onclick="gorefund(@d.payno, @d.pstatus)">@(d.pstatus == 1 ? d.payamt.ToString("#,0") : "0")<br /><span class="red">(@(d.refundamt.ToString("#,0")))</span></a></td>
<td>@d.cdtymd</td>

View File

@ -9,7 +9,7 @@
<section class="panel panel-default">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 환불요청이력<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<thead><tr><th>요청일</th><th>상품</th><th>환불사유</th><th>접수상태</th><th>상세보기</th><th>요청서</th></tr></thead>
<thead><tr><th>요청일</th><th>상품</th><th>환불사유</th><th>접수상태</th><th>상세보기</th>@*<th>요청서</th>*@</tr></thead>
<tbody>
@foreach (var rfdno in Model.PayRfds.Select(s => s.rfdno).Distinct())
{
@ -30,7 +30,7 @@
<td class="left">@r.rtext</td>
<td class="text-center">@r.rstatusname</td>
<td class="link text-center"><a href="#" class="btn btn-xxs btn-default" onclick="viewrfd(0, @r.rfdno)">조회</a></td>
<td class="link text-center"><a href="#" class="btn btn-xxs btn-default" onclick="viewrfd(1, @r.rfdno)">인쇄</a></td>
@*<td class="link text-center"><a href="#" class="btn btn-xxs btn-default" onclick="viewrfd(1, @r.rfdno)">인쇄</a></td>*@
</tr>
}
</tbody>
@ -72,11 +72,11 @@
<div style="padding: 5px 10px; text-align: right;">
<label><input type="checkbox" id="iscanceled" @(Model.Pay.rstatus > 0 ? "disabled":"") /> 수동취소완료</label>
<a href="#" class="btn btn-primary" onclick="save();">신청과정 환불상태 저장</a><br />
<p style="color:red;">※ 이니시스 상점에서 직접 취소한 경우에 수동취소완료를 체크해주세요.</p>
<p style="color:red;">※ LG유플러스 상점에서 직접 취소한 경우에 수동취소완료를 체크해주세요.</p>
</div>
}
</section>
<section class="panel panel-default">
<section class="panel panel-default" style="display: none;">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 교재 및 기타<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<colgroup>

View File

@ -43,7 +43,7 @@
}
else if (p.ptype == 3 && p.pstatus == 22 && p.ispg == 1 && p.isunpay == 0)
{
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", "1:신용카드;2:계좌이체;3:가상계좌;4:현금;5:현금+카드;6:무료;9:위탁계약" }, { "name", "ptype2" }, { "style", "width:100%;" },{ "selected", Model.Pay.ptype} })
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", "1:신용카드2:계좌이체;3:가상계좌;4:무통장입금;6:무료" }, { "name", "ptype2" }, { "style", "width:100%;" },{ "selected", Model.Pay.ptype} })
}
else
{
@ -94,7 +94,7 @@
@:@(p.payoktime == null ? "" : p.payoktime.Value.ToString("yyyy-MM-dd HH:mm:ss"))
}
</td>
<th>이니시스코드</th>
<th>LG유플러스 코드</th>
<td>@(p.ispg == 0 ? "수동결제" : p.pgkey)</td>
</tr>
</table>

View File

@ -3,64 +3,68 @@
Layout = "~/Views/Shared/_PopupLayout.cshtml";
var r = Model.PayRfds.First();
}
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 상품선택<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<colgroup><col style="width: 150px" /><col /></colgroup>
<tr><th>신청기관</th><td>@r.asname</td></tr>
<tr><th>신청자</th><td>@Html.Raw(string.Format("{0}({1})<br />Tel: {2} (Mobile: {3})", r.username, r.userid, r.telno, r.mobile))</td></tr>
<tr>
<th>결제상품명</th>
<td>
<ul>
@foreach (var d in Model.PayItems)
{
<li style="margin-bottom: 5px; font-weight: bold;">@d.itemname @(Model.Pay.isgroup == 1 && d.ptype != 2 ? d.username:"")(@d.payamt.ToString("#,0")원)<br /></li>
}
</ul>
</td>
</tr>
<tr><th>결제금액</th><td>@Model.Pay.payamt.ToString("#,0")원</td></tr>
@if (Model.Pay.refundamt > 0)
{
<tr><th>환불완료금액</th><td>@Model.Pay.refundamt.ToString("#,0")원</td></tr>
}
<tr><th>환불요청일</th><td>@r.cdtymdhms</td></tr>
<tr>
<th>환불요청상품</th>
<td>
<ul>
@foreach (var d in Model.PayRfds)
{
<li style="margin-bottom: 5px; font-weight: bold;">@d.itemname @(Model.Pay.isgroup == 1 && d.ptype != 2 ? d.username : "")(@d.payamt.ToString("#,0")원)</li>
}
</ul>
</td>
</tr>
<tr><th>환불요청사유</th><td>@r.rtext</td></tr>
<tr style="@(Model.Pay.ptype==1 ? "display:none;" : "")"><th>개인계좌환불여부</th><td>@Html.Partial("./Partial/Radio", r.isowner, new ViewDataDictionary() { { "valuetext", "1:예;0:아니오" }, { "checked", r.isowner }, { "name", "isowner" } })</td>
<tr><th>환불금액</th><td><input id="ramt" type="text" class="form-control disp-init dev int text-right" value="@((r.ramt??Model.PayRfds.Sum(s=>s.payamt)).ToString("#,0"))" />원</td></tr>
<tr style="@(Model.Pay.ptype==1 ? "display:none;" : "")">
<th>환불계좌</th>
<td>
은행명: <input id="bankname" type="text" class="form-control disp-init dev" value="@r.bankname" /><br />
계좌주: <input id="bankowner" type="text" class="form-control disp-init dev" value="@r.bankowner" />&nbsp;&nbsp;&nbsp;
계좌번호: <input id="bankno" type="text" class="form-control disp-init dev" value="@r.bankno" />
</td>
</tr>
<tr><th>접수상태</th>
<td>
@if (r.rstatus == 0)
{
@Html.Partial("./Partial/Radio", r.rstatus, new ViewDataDictionary() { { "valuetext", "0:접수;2:완료;1:반려" }, { "checked", r.rstatus }, { "name", "rstatus" } })
}
else
{
@:@(r.rstatus == 1 ? "반려" : "완료")
}
</td></tr>
<tr><th>총결제액/입금일</th><td>@Model.Pay.payamt.ToString("#,0")원 (@Model.Pay.payoktime.Value.ToString("yy-MM-dd HH:mm"))</td></tr>
<tr><th>결제방법</th><td>@Model.Pay.ptypename @(Model.Pay.ispg == 1 ? "(PG)" : "")</td></tr>
<tr><th>요청강좌</th><td>@Model.PayRfds.First().itemname (@Model.PayRfds.First().payamt.ToString("#,0")원)</td></tr>
</table>
<br />
<form id="mform" name="mform">
<input type="hidden" name="rfdno" value="@r.rfdno" />
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 환불정보<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<colgroup><col style="width: 150px" /><col /></colgroup>
<tr><th>환불은행</th><td><input id="bankname" name="bankname" type="text" class="form-control disp-init dev" value="@r.bankname" /></td></tr>
<tr><th>예금주</th><td><input id="bankowner" name="bankowner" type="text" class="form-control disp-init dev" value="@r.bankowner" /></td></tr>
<tr><th>환불계좌</th><td><input id="bankno" name="bankno" type="text" class="form-control disp-init dev" value="@r.bankno" /></td></tr>
<tr><th>개인계좌여부</th><td>@Html.Partial("./Partial/Radio", r.isowner, new ViewDataDictionary() { { "valuetext", "1:예;0:아니오" }, { "checked", r.isowner }, { "name", "isowner" } })</td></tr>
<tr><th>담당자</th><td><input id="ruser" name="ruser" type="text" class="form-control disp-init dev" value="@r.ruser" /></td></tr>
<tr><th>담당자연락처</th><td><input id="rphone" name="rphone" type="text" class="form-control disp-init dev" value="@r.rphone" /></td></tr>
<tr><th>환불사유</th><td>@Html.Partial("./Partial/Radio", r.rreason, new ViewDataDictionary() { { "valuetext", "0:교육취소;1:과정변경;2:과입금;9:기타" }, { "checked", r.rreason }, { "name", "rreason" } })</td></tr>
<tr><th>메모</th><td><textarea class="form-control" style="height: 80px; resize: none;" id="rtext" name="rtext">@r.rtext</textarea></td></tr>
</table>
<br />
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 첨부서류<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<colgroup><col style="width: 150px" /><col /></colgroup>
<tr>
<th>환불신청서</th>
<td>
@Html.Partial("./Partial/File", Model.FileList, new ViewDataDictionary {
{ "name", "fgno" },{"value", 0 },{ "fname", "file"},
{"width", null },{"folder", "Resume" },{"filecount", 5 },
{"readmode", 1 },{"hidemode", 0 },
{ "isimage", 0 },{ "imageid", "" },{ "dftsrc", "" },
{ "fileext", "" }
})
</td>
</tr>
<tr>
<th>통장사본</th>
<td>
@Html.Partial("./Partial/File", Model.FileList2, new ViewDataDictionary {
{ "name", "fgno2" },{"value", 0 },{ "fname", "file2"},
{"width", null },{"folder", "Resume" },{"filecount", 5 },
{"readmode", 1 },{"hidemode", 0 },
{ "isimage", 0 },{ "imageid", "" },{ "dftsrc", "" },
{ "fileext", "" }
})
</td>
</tr>
</table>
<br />
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 검토결과<span class=""></span></strong></header>
<table class="regtable" style="margin-top: 0;">
<colgroup><col style="width: 150px" /><col /></colgroup>
<tr><th>검토상태</th><td>@Html.Partial("./Partial/Radio", r.rstatus, new ViewDataDictionary() { { "valuetext", "0:접수(검토중);2:환불완료;1:환불거절" }, { "checked", r.rstatus }, { "name", "rstatus" } })</td></tr>
<tr><th>검토의견</th><td><input type="text" class="form-control" id="rback" name="rback" value="@r.rback" /></td></tr>
</table>
</form>
@if (r.rstatus == 0)
{
<div style="padding: 5px 10px; text-align: right;"><a href="#" class="btn btn-primary" onclick="save();">저장</a></div>
<div style="padding: 5px 10px; text-align: center"><a href="#" class="btn btn-primary" onclick="save();">저장</a></div>
}
<br /><br /><br />
@section styles{
@ -97,7 +101,7 @@
}
}
function gosave() {
capp("/acommon/payrfdsave", { rfdno: @r.rfdno, ramt: getint(val("ramt")), isowner: getrv("isowner"), bankname: val("bankname"), bankowner: val("bankowner"), bankno: val("bankno"), rstatus: getrv("rstatus") }, "cbsave");
cap("/acommon/payrfdsave", "mform", "cbsave");
}
function cbsave() {
if (capResult.code == 1000) {

View File

@ -55,7 +55,23 @@
<!--<add key="configpath" value="Product" />-->
<!--<add key="configpath" value="ProductDev" />-->
<add key="configpath" value="Staging" />
<add key="configpath" value="Staging" />
<add key="lgdacomConfigPath" value="D:\3rdparti\lgdacomyicte" />
<add key="CST_MID" value="yicte2000" />
<!--상점아이디-->
<add key="CST_PLATFORM" value="test" />
<!--test, service-->
<add key="LGD_ENCODING" value="UTF-8" />
<add key="LGD_BACKBTN_YN" value="N" />
<add key="LGD_CASNOTEURL" value="http://kdh.nptc.kr:8084/Account/XPayVBankMoney" />
<!--가상계좌 입금통보 URL-->
<add key="LGD_AUTOFILLYN_BUYER" value="Y" />
<add key="LGD_CASHRECEIPTYN" value="Y" />
<add key="LGD_ESCROW_USEYN" value="N" />
<add key="PAYMENT_CLASSIFICATION" value="te" />
<add key="LGD_MERTKEY" value="e988951b7fe0b7f25ebaa07e54824365" />
</appSettings>
<common>
<logging>

View File

@ -127,6 +127,9 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
<Reference Include="XPayClientNet">
<HintPath>..\References\XPayClientNet.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Controller\ACommonCC.cs" />

View File

@ -10,6 +10,7 @@ using NP.Base.Auth;
using NP.Base.ENUM;
using System.Net.Http;
using XPayClientNet;
namespace NP.Base.Controllers
{
@ -629,95 +630,66 @@ namespace NP.Base.Controllers
{
try
{
#region
//if (Request["ctype"] == "0")
//{
// //일괄취소
// INIPAY50Lib.INItx50 INIpay = new INIPAY50Lib.INItx50();
// int intPInst = INIpay.Initialize("");
// INIpay.SetField(ref intPInst, "pgid", "IniTechPG_");
// INIpay.SetField(ref intPInst, "spgip", "203.238.3.10");//예비 PG IP (고정)
// INIpay.SetField(ref intPInst, "mid", GetConfig("pginfo").Split('|')[1]);//상점아이디
// INIpay.SetField(ref intPInst, "type", "CANCEL");
//
// //**************************************************************************************************
// //* admin 은 키패스워드 변수명입니다. 수정하시면 안됩니다. 1111의 부분만 수정해서 사용하시기 바랍니다.
// //* 키패스워드는 상점관리자 페이지(https://iniweb.inicis.com)의 비밀번호가 아닙니다. 주의해 주시기 바랍니다.
// //* 키패스워드는 숫자 4자리로만 구성됩니다. 이 값은 키파일 발급시 결정됩니다.
// //* 키패스워드 값을 확인하시려면 상점측에 발급된 키파일 안의 readme.txt 파일을 참조해 주십시오.
// //**************************************************************************************************
// INIpay.SetField(ref intPInst, "admin", GetConfig("pginfo").Split('|')[3]);
// INIpay.SetField(ref intPInst, "tid", Request["tid"]);//취소할 거래번호(TID)
// INIpay.SetField(ref intPInst, "msg", "test");//취소 사유
// INIpay.SetField(ref intPInst, "cancelreason", "1");//취소 코드
// INIpay.SetField(ref intPInst, "debug", "false");//로그모드("true"로 설정하면 상세한 로그를 남김)
// INIpay.SetField(ref intPInst, "merchantreserved", "예비");//예비
// //5. 취소 요청 #
// INIpay.StartAction(ref intPInst);
// //6. 취소 결과 #
// String ResultCode = INIpay.GetResult(ref intPInst, "resultcode");//결과코드 ("00"이면 취소성공)
// String ResultMsg = INIpay.GetResult(ref intPInst, "resultmsg");//결과내용
// String CancelDate = INIpay.GetResult(ref intPInst, "CancelDate");//이니시스 취소날짜
// String CancelTime = INIpay.GetResult(ref intPInst, "CancelTime");//이니시스 취소시각
// String CSHR_CancelNum = INIpay.GetResult(ref intPInst, "CSHR_CancelNum");//현금영수증 취소 승인번호
// //pay 업데이트(rstatus,cshrcancelnum,canceltime,cancelmsg,refundamt)
// //payitem업데이트(일괄취소)
// //lect,exam(일괄취소)
// return JsonBack(new JsonRtn() { code = 1000, obj = ResultCode + ":" + ResultMsg });
//}
//else
//{
#endregion
//부분취소
//INIPAY50Lib.INItx50 INIpay = new INIPAY50Lib.INItx50();
//int intPInst = INIpay.Initialize("");
//INIpay.SetField(ref intPInst, "pgid", "INIpayRPAY");
//INIpay.SetField(ref intPInst, "spgip", "203.238.3.10");//예비 PG IP (고정)
//INIpay.SetField(ref intPInst, "mid", GetConfig("pginfo").Split('|')[1]);//상점아이디
//INIpay.SetField(ref intPInst, "type", "repay");
//
////**************************************************************************************************
////* admin 은 키패스워드 변수명입니다. 수정하시면 안됩니다. 1111의 부분만 수정해서 사용하시기 바랍니다.
////* 키패스워드는 상점관리자 페이지(https://iniweb.inicis.com)의 비밀번호가 아닙니다. 주의해 주시기 바랍니다.
////* 키패스워드는 숫자 4자리로만 구성됩니다. 이 값은 키파일 발급시 결정됩니다.
////* 키패스워드 값을 확인하시려면 상점측에 발급된 키파일 안의 readme.txt 파일을 참조해 주십시오.
////**************************************************************************************************
//INIpay.SetField(ref intPInst, "admin", GetConfig("pginfo").Split('|')[3]);
//INIpay.SetField(ref intPInst, "currency", "WON");
//INIpay.SetField(ref intPInst, "oldTid", p.pgkey);//취소할 원거래번호(TID)
//INIpay.SetField(ref intPInst, "price", p.newrefundamt.ToString());//취소할 금액
//INIpay.SetField(ref intPInst, "confirm_price", (p.payamt - p.refundamt - p.newrefundamt).ToString());//이전승인금액(최초승인금액-부분취소금액)-부분취소금액
////INIpay.SetField(ref intPInst, "Tax", Request["tax"]);//부가세
////INIpay.SetField(ref intPInst, "taxfree", Request["taxfree"]);//비과세
//INIpay.SetField(ref intPInst, "buyeremail", p.email);//취소 사유?
////INIpay.SetField(ref intPInst, "no_acct", Request["kbno"]);//국민은행계좌이체시 취소 환불계좌번호
////INIpay.SetField(ref intPInst, "nm_acct", Request["kbname"]);//국민은행계좌이체시 취소 환불계좌주명
//INIpay.SetField(ref intPInst, "debug", "false");//로그모드("true"로 설정하면 상세한 로그를 남김)
//
////5. 취소 요청 #
//INIpay.StartAction(ref intPInst);
////6. 취소 결과 #
//p.cancelcode = INIpay.GetResult(ref intPInst, "tid");//부분취소거래번호
//String resultcode = INIpay.GetResult(ref intPInst, "resultcode");//결과코드 ("00"이면 취소성공)
//if (resultcode != "00")
//{
// return JsonOK(0);
//}
////String resultmsg = INIpay.GetResult(ref intPInst, "resultmsg");//결과내용
////String otid = INIpay.GetResult(ref intPInst, "PRTC_TID");//원 거래번호
////String cancelamt = INIpay.GetResult(ref intPInst, "PRTC_Price");//부분취소금액
////String finalamt = INIpay.GetResult(ref intPInst, "PRTC_Remains");//재승인금액
////String canceltype = INIpay.GetResult(ref intPInst, "PRTC_Type");//부분취소구분(0:재승인,1:부분취소)
//p.cancelcnt= GetInt(INIpay.GetResult(ref intPInst, "PRTC_Cnt"));//부분취소 요청횟수
//
////pay 업데이트(rstatus,cancelcnt,refundamt)
////payitem 업데이트(rstatus,pgkey,cancelcode,cancelmsg,canceltype,refundamt,refundtime?,refundtimereal?)
////lect,exam(취소)
//
////lect 업데이트
////return JsonBack(new JsonRtn() { code = 1000, obj = resultcode + ":" + resultmsg + ",camt:" + cancelamt + ", famt: " + finalamt + ", ctype: " + canceltype + ", ccount: " + cancelcount });
////}
}catch(Exception ex)
string CST_PLATFORM = GetConfig("CST_PLATFORM");
string CST_MID = GetConfig("CST_MID");
string LGD_MID = (("test".Equals(CST_PLATFORM.Trim())) ? "t" : "") + CST_MID;
XPayClient xpay = new XPayClient();
xpay.Init(GetConfig("lgdacomConfigPath"), CST_PLATFORM);
xpay.Init_TX(LGD_MID);
xpay.Set("LGD_TXNAME", "PartialCancel");
xpay.Set("LGD_TID", p.pgkey);
xpay.Set("LGD_CANCELAMOUNT", p.newrefundamt.ToString());
//xpay.Set("LGD_REMAINAMOUNT", pd.RemainAmount);
//xpay.Set("LGD_CANCELREASON", pd.CancelReason);
//xpay.Set("LGD_RFACCOUNTNUM", pd.RfAccountNum);
//xpay.Set("LGD_RFBANKCODE", pd.RfBankCode);
//xpay.Set("LGD_RFCUSTOMERNAME", pd.RfCustomerName);
//xpay.Set("LGD_RFPHONE", pd.RfPhone);
xpay.Set("LGD_ENCODING", "utf-8");
xpay.Set("LGD_BUYERIP", Request.UserHostAddress);
// 이하 PG 사 연동 전문 종료
/*
* 1.
*/
//xpay.TX() 실행되면 실제 취소 처리가 이루어 집니다.
if (xpay.TX())
{
if ("0000".Equals(xpay.m_szResCode) || "AV11".Equals(xpay.m_szResCode))
{
}
else
{
Response.Write("취소요청이 실패하였습니다. <br>");
return JsonOK(0);
}
}
else
{
//2)API 요청 실패 화면처리
/*
Response.Write("결제 부분취소요청이 실패하였습니다. <br>");
Response.Write("TX Response_code = " + xpay.m_szResCode + "<br>");
Response.Write("TX Response_msg = " + xpay.m_szResMsg + "<p>");
*/
return JsonOK(0);
}
}
catch (Exception ex)
{
SetError(ex.Message);
return JsonOK(0);

View File

@ -1002,7 +1002,7 @@
where exno=#exno# and userno=#userno# and status=1 and payno is null and pino is null and pstatus=4
</update>
<select id="cr.pay.forrfd" parameterClass="long" resultClass="pay">
select a.payno,a.ispg,a.pstatus,a.ptype,a.pgkey,a.isdvr,a.deliamt,a.isrefunddvr,a.payamt,a.refundamt,a.rstatus,a.isgroup,a.iscanceled
select a.payno,a.ispg,a.pstatus,a.ptype,a.pgkey,a.isdvr,a.deliamt,a.isrefunddvr,a.payamt,a.refundamt,a.rstatus,a.isgroup,a.iscanceled,a.payoktime
,b.isdvr isdvr2,b.dvrcode
,CAST(AES_DECRYPT(UNHEX(u.email), <include refid="sql.digest"></include>) AS char) email
from pay a
@ -1048,6 +1048,9 @@
<select id="cr.payrfditems2" parameterClass="long" resultClass="payrfd">
select a.rfdno
,b.rtext,b.rstatus,b.cdt,b.isowner,b.ramt,b.bankname,b.bankowner
,b.rreason,b.ruser,b.fgnor,b.fgnob
,CAST(AES_DECRYPT(UNHEX(b.rphone), <include refid="sql.digest"></include>) AS char) rphone
,b.rback
,CAST(AES_DECRYPT(UNHEX(b.bankno), <include refid="sql.digest"></include>) AS char) bankno
,p.isgroup
,pi.payamt
@ -1056,6 +1059,8 @@
,CAST(AES_DECRYPT(UNHEX(u.telno), <include refid="sql.digest"></include>) AS char) telno
,CAST(AES_DECRYPT(UNHEX(u.mobile), <include refid="sql.digest"></include>) AS char) mobile
,ua.asname
,f1.orgname,f1.fileno
,f2.orgname orgname2,f2.fileno file2
from payrfditem a
inner join payitem pi on pi.pino=a.pino
inner join pay p on p.payno=pi.payno
@ -1067,13 +1072,17 @@
left outer join cg pcg on pcg.cgno=cg.pcgno
left outer join book bk on pi.ptype=2 and bk.bkno=pi.itemno
left outer join exam ex on pi.ptype=3 and ex.exno=pi.itemno
left outer join fileinfo f1 on f1.fgno=b.fgnor and f1.isdel=0
left outer join fileinfo f2 on f2.fgno=b.fgnob and f2.isdel=0
where a.rfdno=#rfdno#
order by a.rfdno desc
</select>
<update id="cr.payrfd.save" parameterClass="hashtable">
update payrfd set <include refid="sql.up"></include>
,isowner=#isowner#,ramt=#ramt#,bankname=#bankname#,bankowner=#bankowner#,bankno=HEX(AES_ENCRYPT(#bankno#, <include refid="sql.digest"></include>))
,rstatus=#rstatus#,statustime=case when rstatus &lt;&gt; #rstatus# then now() else statustime end
,bankname=#bankname#,bankowner=#bankowner#,bankno=HEX(AES_ENCRYPT(#bankno#, <include refid="sql.digest"></include>))
,isowner=#isowner#,ruser=#ruser#,rphone=HEX(AES_ENCRYPT(#rphone#, <include refid="sql.digest"></include>))
,rreason=#rreason#,rtext=#rtext#,rstatus=#rstatus#,rback=#rback#
,statustime=case when rstatus &lt;&gt; #rstatus# then now() else statustime end
where rfdno=#rfdno#
</update>
<select id="cr.payitems.forcheck" parameterClass="string" resultClass="payitem">

View File

@ -467,8 +467,10 @@ namespace NP.FO.Controllers
if (vm.payno > 0 && (vm.absptype == 6 || vm.absptype == 7))
{
//0원강좌 결제
vm.Pay = new Pay() { payno = vm.payno, ptype = vm.absptype, oid2 = (vm.absptype == 6 ? "free" : string.Empty) + vm.payno };
vm.Pay = new Pay() { payno = vm.payno, pstatus = 1, ptype = vm.absptype, oid2 = (vm.absptype == 6 ? "free" : string.Empty) + vm.payno };
vm.Pay.payresult = "1:무료결제완료";
vm.PayItemResults = Dao.Get<PayItemResult>("pay.payitems", vm.Pay.payno);
vm.CM = Dao.Get<CM>("cm.cms", new System.Collections.Hashtable() { { "cmno", vm.PayItemResults.First().itemno } }).FirstOrDefault();
}
else
{

View File

@ -38,8 +38,15 @@
<h4 class="clsTitle">결제방법</h4>
<ul class="apyRdo">
@if (Model.CM.infee > 0)
{
<li><input type="radio" name="ptype" id="pay0101" value="1"><label for="pay0101">신용카드</label></li>
<li><input type="radio" name="ptype" id="pay0102" value="3"><label for="pay0102">무통장입금(가상계좌)</label></li>
}
else
{
<li><input type="radio" name="ptype" id="pay0101" value="6" checked><label for="pay0101">무료</label></li>
}
</ul>
<div id="cashbox" style="display:none">
<h4 class="clsTitle">현금영수증 발행여부</h4>