("pay.payitems", vm.Pay.payno);
- return View("PayReturn", vm);
- //}
- //SetError("모바일결제오류02: " + noti.Split('|')[1] + ": ");
- //vm.Pay = new Pay() { payno = 0, payresultmsg = "결제사 승인오류발생" };
- }
- }
- catch (Exception ex)
- {
- SetError("모바일결제오류01: " + noti.Split('|')[1] + ": " + ex.Message);
- vm.Pay = new Pay() { payno = 0, payresultmsg = "결제사 연결중 오류발생" };
- }
- }
- else
- {
- vm.Pay = new Pay() { payno = 0, payresultmsg = Request["P_RMESG1"] + "
결제완료화면에서 이전화면으로 돌아가면서 이동하면 발생하는 경우일 수 있습니다." };
- }
+ //2)API 요청실패 화면처리
+ vm.Pay.payresult = "0:결제요청실패(" + xpay.m_szResCode + ")";
+ vm.Pay.cancelresult = xpay.m_szResMsg;
}
}
- return View("PayReturn", vm);
+ return View("ApplyComplete", vm);
}
}
}
diff --git a/FO/Views/Course/ApplyComplete.cshtml b/FO/Views/Course/ApplyComplete.cshtml
index 274c3d4..c8c6539 100644
--- a/FO/Views/Course/ApplyComplete.cshtml
+++ b/FO/Views/Course/ApplyComplete.cshtml
@@ -1,86 +1,103 @@
- @*강좌번호*@
-
-
신청완료
-
-
-신청강좌
-
-@if (Model.CM.applicableCM == "정상접수")
+@model NP.Model.VMPay
+@*
+
신청@(Model.Pay.payresult.Substring(0, 1) == "1" ? "완료" : "실패")
+ *@
+@if (Model.Pay.payresult.Substring(0, 1) != "1")
{
- 결제정보
-
-
-
- | 구매금액 |
- 원 |
-
-
- | 지불방법 |
- 카드결제 |
-
-
- | 입금계좌 |
- 국민은행 | 계좌번호 | (주)이니시스 |
-
-
- | 주문접수일 |
- 2017-10-16 12ㅣ00 (만료일: 2018-10-16 12:00) |
-
-
- | 주문상태 |
- 결제완료 |
-
-
-
+ 결제실패
+
+ @(!string.IsNullOrEmpty(Model.Pay.cancelresult) ? Model.Pay.cancelresult : Model.Pay.payresult.Substring(1))
+
}
else
{
-
-
위 강좌의 대기접수가 완료되었습니다.
-
(대기인원 : @Model.CM.standbyPerson명)
-
※ 결원 발생 시 대기신청 차례에 따라 교육생 연락처로 연락드릴 예정입니다.
-
※ 교육비 결제는 마이페이지 학습현황의 학습대기에서 가능하며 교육비결제 완료 후 학습을 시작할 수 있습니다.
-
-
- - 마이페이지
- - 계속 신청하기
+ 신청강좌
+
+ if (Model.Pay.isready == 0)
+ {
+ 결제정보
+
+
+
+ | 구매금액 |
+ @Model.Pay.payamt.ToString("#,0") 원 |
+
+
+ | 지불방법 |
+ @Model.Pay.ptypename |
+
+ @if (Model.Pay.ptype == 3)
+ {
+
+ | 입금계좌 |
+
+ @Model.Pay.vactbankname | @Model.Pay.vactnum | @Model.Pay.vactname
+ |
+
+
+ | 주문접수일 |
+ @DateTime.Now.ToString("yyyy-MM-dd HH:mm") (만료일: @Model.Pay.paylimit.Value.ToString("yyyy-MM-dd HH:mm")) |
+
+ }
+
+ | 주문상태 |
+ @Model.Pay.pstatusname |
+
+
+
+
+ }
+ else
+ {
+
+
위 강좌의 대기접수가 완료되었습니다.
+
(대기인원 : @Model.Pay.ccount.ToString("#,0")명)
+
※ 결원 발생 시 대기신청 차례에 따라 교육생 연락처로 연락드릴 예정입니다.
+
※ 교육비 결제는 마이페이지 학습현황의 학습대기에서 가능하며 교육비결제 완료 후 학습을 시작할 수 있습니다.
+
+
+ }
}
-
diff --git a/FO/Views/Course/ApplyPay.cshtml b/FO/Views/Course/ApplyPay.cshtml
index 60e4018..9e04d4f 100644
--- a/FO/Views/Course/ApplyPay.cshtml
+++ b/FO/Views/Course/ApplyPay.cshtml
@@ -136,7 +136,8 @@
if (capResult.obj == 0) {
var resultmsg = capResult.msg;
if (resultmsg.indexOf("buyertel")) {
- msg("개인정보에 휴대폰 번호를 입력해주세요.");
+ //msg("개인정보에 휴대폰 번호를 입력해주세요.");
+ msg(capResult.msg || "이미 신청한 강좌인지 확인해주세요.");
} else {
msg(capResult.msg);
}
diff --git a/FO/Views/Course/XpayREQ.cshtml b/FO/Views/Course/XpayREQ.cshtml
index c6c8da6..d5ac701 100644
--- a/FO/Views/Course/XpayREQ.cshtml
+++ b/FO/Views/Course/XpayREQ.cshtml
@@ -43,7 +43,6 @@ else
function payment_return() {
var fDoc;
fDoc = lgdwin.contentWindow || lgdwin.contentDocument;
- alert(1);
document.getElementById("LGD_PAYINFO").target = "_self";
if (fDoc.document.getElementById('LGD_RESPCODE').value == "0000") {
document.getElementById("LGD_PAYKEY").value = fDoc.document.getElementById('LGD_PAYKEY').value;
@@ -52,7 +51,7 @@ else
}
else {
document.getElementById("rsMsg").value = fDoc.document.getElementById('rsMsg').value;
- document.getElementById("LGD_PAYINFO").action = "/Course/PayOn";
+ document.getElementById("LGD_PAYINFO").action = "/Course/ApplyPay";
closeIframe();
document.getElementById("LGD_PAYINFO").submit();
}
diff --git a/FO/Views/Home/Index.cshtml b/FO/Views/Home/Index.cshtml
index 310c8ff..f740a50 100644
--- a/FO/Views/Home/Index.cshtml
+++ b/FO/Views/Home/Index.cshtml
@@ -283,6 +283,9 @@
}
}
});
+ if (@Model.isalreadyreq == 1) {
+ msg("이미 신청된 강좌입니다. 메인화면으로 이동되었습니다.");
+ }
});
function schIpt(num, code, name) {
$('#sch' + num).val(code);
diff --git a/FO/Views/My/Ready.cshtml b/FO/Views/My/Ready.cshtml
index 685c9f4..f92e1ee 100644
--- a/FO/Views/My/Ready.cshtml
+++ b/FO/Views/My/Ready.cshtml
@@ -6,7 +6,11 @@
- 결제완료 이전의 신청과정은 즉시 취소하실 수 있습니다.
- 결제완료 이후의 과정들은 결제현황 페이지에서 신청취소 및 환불요청을 해주셔야 합니다.
- - 결제대기중인 과정들은 결제를 완료하셔야 최종 신청이 완료됩니다.
+ - 무통장입금(가상계좌)는 신청기간 내에 입금 완료 되어야 신청이 완료됩니다. (신청 기간이 지나면 자동 취소되고 결제대기 처리됩니다.)
+ -
+ 교육일정 변경은 및 교육취소는 교육시작일 기준 5일전 까지만 가능 합니다.
+ 입교가 확정된 과정에 대하여 미 참석 하실 경우 다음 번 교육신청 시 제한이 될 수 있으니 교육취소 및 변경 기한이 지난 경우에는 교육원으로 연락하여 주시기 바랍니다(1544-77660)
+
@@ -31,17 +35,23 @@
@d.cshapename
@Html.Raw(d.isrebate == 1 ? "환급" : "")
@d.cname
+ @Html.Raw(d.pstatus == 21 ? string.Format("교육비납부", d.payno) : "")
- - @(d.pstatus == 51 ? "심사중" : d.pstatus == 21 ? "결제대기" : d.pstatus == 22 ? "입금대기" : d.pstatus == 1 && d.rfdstatus > 0 ? "환불요청" : d.pstatus == 1 ? "결제완료" : d.rstatus == 1 ? "부분환불" : d.rstatus == 2 ? "전액환불" : "-")
- @Html.Raw(d.pstatus == 21 ? string.Format("- 결제하기
", d.payno):"")
- - 신청(교육)기간 : @d.rstime.Value.ToString("yy/MM/dd") ~ @d.retime.Value.ToString("yy/MM/dd") (@d.sstime.ToString("yy/MM/dd") ~ @d.setime.ToString("yy/MM/dd"))
+ - @(d.pstatus == 55 ? "대기신청" : d.pstatus == 51 ? "심사중" : d.pstatus == 21 ? "결제대기" : d.pstatus == 22 ? "입금대기" : d.pstatus == 1 && d.rfdstatus > 0 ? "환불요청" : d.pstatus == 1 ? "결제완료" : d.rstatus == 1 ? "부분환불" : d.rstatus == 2 ? "전액환불" : "-")
+ -
+ 신청(교육)기간 : @d.rstime.Value.ToString("yy'/'MM'/'dd") ~ @d.retime.Value.ToString("yy'/'MM'/'dd") (@d.sstime.ToString("yy'/'MM'/'dd") ~ @d.setime.ToString("yy'/'MM'/'dd"))
+ @if (d.cshape == 2)
+ {
+ @:| 집체교육기간 : @(d.cmisno == null ? "미정" : ("[" + d.studyplacename + "]" + string.Format("{0}~{1}", d.cmiestart.ToString("yy'/'MM'/'dd"), d.cmieend.ToString("yy'/'MM'/'dd"))))
+ }
+
@(d.isgroup == 0 ? 1 : Model.PIs.Where(w=>w.payno == d.payno && w.itemno == d.itemno).Count())명 |
- @(d.pstatus==51||d.pstatus == 21 || d.pstatus == 22?"취소":"결제상세") |
+ @(d.pstatus == 55 || d.pstatus==51||d.pstatus == 21 || d.pstatus == 22?"취소":"결제상세") |
if (d.isgroup == 1)
{
@@ -65,6 +75,20 @@
}
+@section styles{
+
+}
@section scriptsHeader{
}
diff --git a/FO/Web.config b/FO/Web.config
index f8891c3..b652a79 100644
--- a/FO/Web.config
+++ b/FO/Web.config
@@ -69,7 +69,7 @@
-
+
diff --git a/Model/CM.cs b/Model/CM.cs
index 5203225..406a95b 100644
--- a/Model/CM.cs
+++ b/Model/CM.cs
@@ -438,6 +438,7 @@ namespace NP.Model
///
public int finalcut { get; set; }
public String username { get; set; }
+ public Int64 lectnocheck { get; set; }
}
[Serializable]
diff --git a/Model/Model.csproj b/Model/Model.csproj
index 81e1ae6..52a78cc 100644
--- a/Model/Model.csproj
+++ b/Model/Model.csproj
@@ -65,6 +65,7 @@
+
\ No newline at end of file
diff --git a/Model/PPLog.cs b/Model/PPLog.cs
index 935a47d..63517ea 100644
--- a/Model/PPLog.cs
+++ b/Model/PPLog.cs
@@ -52,6 +52,6 @@ namespace NP.Model
public int? slevel { get; set; }
public Int64 payno { get; set; }
-
+ public int pstatus { get; set; }
}
}
diff --git a/Model/Pay.cs b/Model/Pay.cs
index 2eb39ad..23759a4 100644
--- a/Model/Pay.cs
+++ b/Model/Pay.cs
@@ -21,6 +21,10 @@ namespace NP.Model
/// 결제방식 1:신용카드,2:계좌이체,3:가상계좌,4:현금,5:현금+카드,6:무료,7:대기신청,9:위탁계약
///
public int ptype { get; set; }
+ ///
+ /// 0:정상, 1:대기신청
+ ///
+ public int isready { get; set; }
public String ptypecode
{
get
@@ -92,7 +96,7 @@ namespace NP.Model
///
public int refunding { get; set; }
///
- /// 가상계좌입금만료일 수강신청 또는 가상계좌유효기간 중 빠른시간 가상계좌는 발급일로부터 7일
+ /// 가상계좌입금만료일 수강신청 또는 가상계좌유효기간 중 빠른시간 가상계좌는 발급일로부터 ?일
///
public DateTime? paylimit { get; set; }
public String paylimitymd { get {
@@ -211,7 +215,17 @@ namespace NP.Model
public int iscanceled { get; set; }
public int iscashrct { get; set; }
public String cashrcthp { get; set; }
-
+
+ //public Xpay xpay { get; set; }
+ public String mid { get; set; }
+ ///
+ /// 무결성 검증 필드
+ /// LGD_MID, LGD_TID, MertKey의 조합으로 생성된 인증문자열을 md5로 암호화한 값
+ /// 인증문자열 생성: LGD_MID + LGD_TID + MertKey
+ /// md5로 인증문자열 암호화(authdata): md5(인증문자열)
+ ///
+ public String authdata { get; set; }
+
}
public class PayItem : BaseModel
@@ -466,6 +480,9 @@ namespace NP.Model
public int? infee { get; set; }
public int? outfee { get; set; }
public int ispg { get; set; }
+ public String studyplacename { get; set; }
+ public DateTime cmiestart { get; set; }
+ public DateTime cmieend { get; set; }
}
///
@@ -724,6 +741,7 @@ namespace NP.Model
public class PayItemResult : BaseModel
{
public Int64 payno {get;set;}
+ public Int64 itemno { get; set; }
public int isgroup {get;set;}
public int isexam { get; set; }
public int isdvr {get;set;}
diff --git a/Model/VMHome.cs b/Model/VMHome.cs
index f22bd74..4a9d0ef 100644
--- a/Model/VMHome.cs
+++ b/Model/VMHome.cs
@@ -16,5 +16,6 @@ namespace NP.Model
public IList CMsEtc { get; set; }
public IList Datas { get; set; }
public IList CMInnings { get; set; }
+ public int isalreadyreq { get; set; }
}
}
diff --git a/Model/VMPay.cs b/Model/VMPay.cs
index 4967a9a..4518537 100644
--- a/Model/VMPay.cs
+++ b/Model/VMPay.cs
@@ -59,5 +59,6 @@ namespace NP.Model
public int iscashrct { get; set; }
public String cashrcthp { get; set; }
public System.Collections.Hashtable payParams { get; set; }
+ public CM CM { get; set; }
}
}
diff --git a/Model/Xpay.cs b/Model/Xpay.cs
new file mode 100644
index 0000000..e0989fa
--- /dev/null
+++ b/Model/Xpay.cs
@@ -0,0 +1,301 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+namespace NP.Model
+{
+ ///
+ /// 구LG 현 토스페이먼츠
+ ///
+ [Serializable]
+ public class Xpay
+ {
+ ///
+ /// 토스페이먼츠 결제 서비스 선택(test:테스트, service:서비스)
+ ///
+ public String CST_PLATFORM { get; set; }
+
+ ///
+ /// 상점아이디(토스페이먼츠으로 부터 발급받으신 상점아이디를 입력하세요)
+ ///
+ public String CST_MID { get; set; }
+
+ ///
+ /// 상점아이디(자동생성)
+ /// 테스트 아이디는 't'를 반드시 제외하고 입력하세요.
+ ///
+ public String LGD_MID { get; set; }
+
+ ///
+ /// 주문번호(상점정의 유니크한 주문번호를 입력하세요)
+ ///
+ public String LGD_OID { get; set; }
+
+ ///
+ /// 결제금액("," 를 제외한 결제금액을 입력하세요)
+ ///
+ public String LGD_AMOUNT { get; set; }
+
+ ///
+ /// 구매자명
+ ///
+ public String LGD_BUYER { get; set; }
+
+ ///
+ /// 상품명
+ ///
+ public String LGD_PRODUCTINFO { get; set; }
+
+ ///
+ /// 구매자 이메일
+ ///
+ public String LGD_BUYEREMAIL { get; set; }
+
+ ///
+ /// 타임스탬프
+ ///
+ public String LGD_TIMESTAMP { get; set; }
+
+ ///
+ /// 상점정의 결제수단
+ ///
+ public String LGD_CUSTOM_USABLEPAY { get; set; }
+
+ ///
+ /// 상점정의 결제창 스킨 (red, blue, cyan, green, yellow)
+ ///
+ public String LGD_CUSTOM_SKIN { get; set; }
+
+ ///
+ /// 가상계좌 상점결과전송 NOTE_URL
+ ///
+ public String LGD_CASNOTEURL { get; set; }
+
+ ///
+ /// 해쉬암호데이터
+ ///
+ public String LGD_HASHDATA { get; set; }
+
+ ///
+ /// 결제창 2.0 타입
+ ///
+ public String LGD_CUSTOM_PROCESSTYPE { get; set; }
+
+ ///
+ /// 응답수신페이지
+ ///
+ public String LGD_RETURNURL { get; set; }
+
+ ///
+ /// 사용타입 정보(수정 및 삭제 금지): 이 정보를 근거로 어떤 서비스를 사용하는지 판단할 수 있습니다.
+ ///
+ public String LGD_VERSION { get; set; }
+
+ ///
+ /// 결제창 호출 방식 (수정불가)
+ ///
+ public String LGD_WINDOW_TYPE { get; set; }
+
+ ///
+ /// 카드사 호출 방식 (수정불가)
+ ///
+ public String LGD_CUSTOM_SWITCHINGTYPE { get; set; }
+
+ ///
+ /// 결제창 버전정보
+ ///
+ public String LGD_WINDOW_VER { get; set; }
+
+ ///
+ /// 응답코드: 0000(성공) 그외 실패
+ /// 인증후 자동채움 (수정불가)
+ ///
+ public String LGD_RESPCODE { get; set; }
+
+ ///
+ /// 응답메세지
+ /// 인증후 자동채움 (수정불가)
+ ///
+ public String LGD_RESPMSG { get; set; }
+
+ ///
+ /// 값 P: XPay 실행(PC 결제 모듈): PC용과 모바일용 모듈은 파라미터 및 프로세스가 다르므로 PC용은 PC 웹브라우저에서 실행 필요. "P", "M" 외의 문자(Null, "" 포함)는 모바일 또는 PC 여부를 체크하지 않음
+ ///
+ public String LGD_OSTYPE_CHECK { get; set; }
+
+ ///
+ /// 계좌이체 결제시 사용, ActiveX 사용 여부로 "N" 이외의 값: ActiveX 환경에서 계좌이체 결제 진행(IE)
+ ///
+ public String LGD_ACTIVEXYN { get; set; }
+
+ ///
+ /// 환경파일 위치
+ ///
+ public String configPath;
+
+ public String LGD_DOMAIN_URL { get; set; }
+
+ ///
+ /// 결제창 호출 문자 인코딩방식
+ /// Form submit 방식으로 결제창 호출시 EUC-KR이외의 인코딩을 하는 경우만 사용
+ ///
+ public String LGD_ENCODING { get; set; }
+
+ ///
+ /// 결과수신페이지 호출 문자 인코딩방식
+ /// UTF-8로 넘기면 UTF-8로 인코딩된 값을 LGD_NOTEURL, LGD_CASNOTEURL 에 전달
+ ///
+ public String LGD_ENCODING_NOTEURL { get; set; }
+
+ ///
+ /// 결과수신페이지 호출 문자 인코딩방식
+ /// UTF-8로 넘기면 UTF-8로 인코딩된 값을 LGD_RETURNURL 에 전달
+ ///
+ public String LGD_ENCODING_RETURNURL { get; set; }
+
+ ///
+ /// 결제창 내 신용카드/계좌이체/가상계좌 결제수단을 다시 선택하기 위한 “뒤로가기” 버튼
+ /// 'Y: 뒤로가기 버튼 사용
+ /// N: 뒤로가기 버튼 사용하지 않음
+ ///
+ public String LGD_BACKBTN_YN { get; set; }
+
+ ///
+ /// 구매자명 자동채움
+ /// 결제요청시 구매자명을 결제창에 자동으로 채움 (Y:사용함, 'N':사용안함)
+ ///
+ public String LGD_AUTOFILLYN_BUYER { get; set; }
+
+ ///
+ /// 현금영수증발급사용여부
+ /// Y:사용함, 'N':사용안함
+ ///
+ public String LGD_CASHRECEIPTYN { get; set; }
+
+ ///
+ /// LG유플러스에서 부여한 거래번호
+ ///
+ public String LGD_TID { get; set; }
+
+ ///
+ /// 결제수단코드
+ ///
+ public String LGD_PAYTYPE { get; set; }
+
+ ///
+ /// 거래일시(승인일시/이체일시)
+ ///
+ public String LGD_PAYDATE { get; set; }
+
+ ///
+ /// 결제기관코드(은행코드)
+ ///
+ public String LGD_FINANCECODE { get; set; }
+
+ ///
+ /// 결제기관이름(은행이름)
+ ///
+ public String LGD_FINANCENAME { get; set; }
+
+ ///
+ /// 에스크로 적용여부
+ ///
+ public String LGD_ESCROWYN { get; set; }
+
+ ///
+ /// 계좌번호(무통장입금)
+ ///
+ public String LGD_ACCOUNTNUM { get; set; }
+
+ ///
+ /// 입금총액(무통장입금)
+ ///
+ public String LGD_CASTAMOUNT { get; set; }
+
+ ///
+ /// 현입금액(무통장입금)
+ ///
+ public String LGD_CASCAMOUNT { get; set; }
+
+ ///
+ /// 무통장입금 플래그(무통장입금) - 'R':계좌할당, 'I':입금, 'C':입금취소
+ ///
+ public String LGD_CASFLAG { get; set; }
+
+ ///
+ /// 입금순서(무통장입금)
+ ///
+ public String LGD_CASSEQNO { get; set; }
+
+ ///
+ /// 현금영수증 승인번호
+ ///
+ public String LGD_CASHRECEIPTNUM { get; set; }
+
+ ///
+ /// 현금영수증자진발급제유무 Y: 자진발급제 적용, 그외 : 미적용
+ ///
+ public String LGD_CASHRECEIPTSELFYN { get; set; }
+
+ ///
+ /// 현금영수증 종류 0: 소득공제용 , 1: 지출증빙용
+ ///
+ public String LGD_CASHRECEIPTKIND { get; set; }
+
+ ///
+ /// 입금자명
+ ///
+ public String LGD_PAYER { get; set; }
+
+ ///
+ /// 구매자 ID
+ ///
+ public String LGD_BUYERID { get; set; }
+
+ ///
+ /// 구매자 주소
+ ///
+ public String LGD_BUYERADDRESS { get; set; }
+
+ ///
+ /// 구매자 전화번호
+ ///
+ public String LGD_BUYERPHONE { get; set; }
+
+ ///
+ /// 구매자 주민번호
+ ///
+ public String LGD_BUYERSSN { get; set; }
+
+ ///
+ /// 상품코드
+ ///
+ public String LGD_PRODUCTCODE { get; set; }
+
+ ///
+ /// 수취인
+ ///
+ public String LGD_RECEIVER { get; set; }
+
+ ///
+ /// 수취인 전화번호
+ ///
+ public String LGD_RECEIVERPHONE { get; set; }
+
+ ///
+ /// 배송지
+ ///
+ public String LGD_DELIVERYINFO { get; set; }
+
+ public String LGD_HASHDATA2 { get; set; }
+
+ public String LGD_CLOSEDATE { get; set; }
+
+ public String CST_WINDOW_TYPE { get; set; }
+ public String LGD_PCVIEWYN { get; set; }
+ public String LGD_CUSTOM_FIRSTPAY { get; set; }
+ public String LGD_KVPMISPAUTOAPPYN { get; set; }
+ public String LGD_MTRANSFERAUTOAPPYN { get; set; }
+
+ }
+}