This commit is contained in:
hodong13 2020-11-16 08:42:59 +00:00
parent fe7c42f2b0
commit a20782f806
14 changed files with 659 additions and 201 deletions

View File

@ -44,6 +44,7 @@ namespace NP.Base
ViewBag.SSUIP = GetUserIP();
ViewBag.SiteTitle = "영남건설기술교육원";
ViewBag.AssignLogo = string.Empty;
ViewBag.isPayTest = GetConfig("ispaytest");
var suiv = TopMenuNo == 1 ? SUI : SUIF;
var suitv = TopMenuNo == 1 ? SUIT : SUIFT;
//디버그로그
@ -52,9 +53,14 @@ namespace NP.Base
var rtn = System.Threading.Tasks.Task.Run(async () => Console.WriteLine(await Dao.Log(
new NP.Model.PageLog() { uno = SUserInfo.UserNo, uip = GetUserIP(), logsite = 1, loginfo = Request.Url.ToString() + Request.Params.ToString() })));
}
if (filterContext.HttpContext.Request.Cookies[TopMenuNo == 1 ? SUI : SUIF] != null)
var newck = filterContext.HttpContext.Request.Cookies[suiv];
if (TopMenuNo == 2 && newck == null)
{
var sui = DecString(filterContext.HttpContext.Request.Cookies[suiv].Value).Split('$');
newck = filterContext.HttpContext.Request.Cookies[SUIFCROOM];
}
if (newck != null)
{
var sui = DecString(newck.Value).Split('$');
//var sui = DecString("kMA1yvFp2GPs5aP8fUuRwYCWEamo5aHhb1Mlg6m+T9ef07yi4y+7K11xRQqyQHgI/gjzLYLNrqEIGd1GYUIKjZp5iLFJY+jdFoO95T9LrVdk6reEo8Yz4aToiMV67F3citUUG+Kuw1aUngmft+OKZg==x").Split('$');
if (sui.Length > 8 && sui[0] == SUIDATE)
{
@ -312,8 +318,13 @@ namespace NP.Base
{
Response.Cookies[suitv].Value = null;
}
if (Request.Cookies[SUIFCROOM] != null)
{
Response.Cookies[SUIFCROOM].Value = null;
}
Response.Cookies[suiv].Expires = DateTime.Now.AddDays(-1);
Response.Cookies[suitv].Expires = DateTime.Now.AddDays(-1);
Response.Cookies[SUIFCROOM].Expires = DateTime.Now.AddDays(-1);
}
else
{

View File

@ -30,10 +30,11 @@ namespace NP.Base
_sip = value;
}
}
public const String SUI = "KFCFSUI";
public const String SUIT = "KFCFSUIT";
public const String SUIF = "KFCFSUIF";
public const String SUIFT = "KFCFSUIFT";
public const String SUI = "NPTECHSUI";
public const String SUIT = "NPTECHSUIT";
public const String SUIF = "NPTECHSUIF";
public const String SUIFCROOM = "NPTECHSUIFCROOM";
public const String SUIFT = "NPTECHSUIFT";
private const String SUIDATE = "190517";
public NP.Model.SSUserInfo SUserInfo = new Model.SSUserInfo();
@ -872,7 +873,7 @@ namespace NP.Base
}
protected void AuthCookie(bool isFront)
{
Response.Cookies.Add(new System.Web.HttpCookie(isFront?SUIF:SUI
var c = new System.Web.HttpCookie(isFront ? SUIF : SUI
, EncString(SUIDATE + "$" + SUserInfo.UserNo + "$" +
SUserInfo.UserName.Replace("$", "") + "$" +
SUserInfo.UserType + "$" +
@ -880,9 +881,29 @@ namespace NP.Base
SUserInfo.UserInfo + "$" +
SUserInfo.LoginKey + "$" +
DateTime.Now.ToString("yyMMddHHmmss") + "$" +
SUserInfo.LoginIP)));
Response.Cookies.Add(new System.Web.HttpCookie(TopMenuNo == 1 ? SUIT : SUIFT, EncString(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))));
SUserInfo.LoginIP) + ";SameSite=None; Secure");
Response.Cookies.Add(c);
var c2 = new System.Web.HttpCookie(TopMenuNo == 1 ? SUIT : SUIFT, EncString(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
Response.Cookies.Add(c2);
if (isFront)
{
AuthCookieCroom();
}
}
protected void AuthCookieCroom()
{
var c = new System.Web.HttpCookie(SUIFCROOM
, EncString(SUIDATE + "$" + SUserInfo.UserNo + "$" +
SUserInfo.UserName.Replace("$", "") + "$" +
SUserInfo.UserType + "$" +
SUserInfo.ASNo + "$" +
SUserInfo.UserInfo + "$" +
SUserInfo.LoginKey + "$" +
DateTime.Now.ToString("yyMMddHHmmss") + "$" +
SUserInfo.LoginIP));
Response.Cookies.Add(c);
var c2 = new System.Web.HttpCookie(SUIFT, EncString(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
Response.Cookies.Add(c2);
}
protected bool IsEmail(string email)
{

View File

@ -163,114 +163,49 @@ namespace NP.Base.Controllers
[HttpPost]
public JsonResult PayStart(VMPay vm)
{
vm.PPLog = Dao.Get<PPLog>("pay.pplogs", new Hashtable() { { "pplno", vm.pplno }, { "userno", SUserInfo.UserNo } }).First();
vm.PayItems = new List<PayItem>() { };
foreach (var d in vm.items.Split(';'))
{
var dd = d.Split(':');
vm.PayItems.Add(new PayItem() { ptype = GetInt(dd[0]), itemno = GetLong(dd[1]), pcnt = GetInt(dd[2]), userno = vm.isgroup == 0 || dd[0] == "2" ? SUserInfo.UserNo : GetInt(dd[3]), isrebate = GetInt(dd[4]), fgno = dd[5] == "0" ? (Int64?)null : GetLong(dd[5]) });
vm.PayItems.Add(new PayItem() { ptype = GetInt(dd[0]), itemno = GetLong(dd[1]), pcnt = GetInt(dd[2]), userno = vm.isgroup == 0 || dd[0] == "2" ? SUserInfo.UserNo : GetInt(dd[3]), isrebate = GetInt(dd[4]), fgno = dd[5] == "0" ? (Int64?)null : GetLong(dd[5]),
rbank = vm.PPLog.rbankname, rbankaccnum = vm.PPLog.rbankacc, tbankuser = vm.PPLog.rbankowner });
}
if (vm.isgroup == 1)
{
//단체 검증
//신청가능확인(기간,제한인원,동일강좌,유사강좌)
var lects = Dao.Get<Lect>("pay.cmcheck.forgrouppay", new Hashtable() { { "cmno", vm.PayItems.Where(w => w.ptype == 0).First().itemno },
{"usernos", "," + string.Join(",", vm.PayItems.Where(w=>w.ptype == 0).Select(s=>s.userno)) + "," },{ "userno", SUserInfo.UserNo} });
if (lects.Count() < 1)
{
//수강신청기간이 아님
return JsonBack(new JsonRtn() { code = 1000, msg = "수강신청기간이 아닙니다.", obj = 0 });
}
else if(lects.First().quota !=0 && (vm.PayItems.Count() + lects.Where(w=>w.cmno == vm.PayItems.Where(s=>s.ptype==0).First().itemno ).Count()) > lects.First().quota)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "신청인원이 제한인원을 초과했습니다. [" + "제한인원 : "+ lects.First().quota + "명]", obj = 0 });
}
else if (lects.Where(w => w.ispaied == 1).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "이미 개별 신청한 강좌입니다. [" + string.Join(", ", lects.Where(w => w.ispaied == 1).Select(s => s.username)) + "]", obj = 0 });
}
else if (lects.First().quota != 0 && lects.Where(w => w.ispaied == 1).Count() + vm.PayItems.Where(w => w.ptype == 0).Count() >= lects.First().quota)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "제한인원을 초과한 강좌입니다. [" + string.Join(", ", lects.Where(w => w.ispaied == 1).Select(s => s.username)) + "]", obj = 0 });
}
foreach (var pi in vm.PayItems.Where(w => w.ptype == 0))
{
pi.rstime = lects.Where(w => w.cmno == pi.itemno).First().rstime;
pi.retime = lects.Where(w => w.cmno == pi.itemno).First().retime;
pi.orgamt = lects.Where(w => w.cmno == pi.itemno).First().outfee;
pi.discamt = lects.Where(w => w.cmno == pi.itemno).First().outfee - lects.Where(w => w.cmno == pi.itemno).First().payamt;
pi.payamt = lects.Where(w => w.cmno == pi.itemno).First().payamt;
}
}
else
{
if (vm.ispaycert)
if (vm.PayItems.Where(w => w.ptype == 0).Count() > 0)
{
//자격증강좌
vm.PayItems = Dao.Get<PayItem>("pay.payitems.forcertpay", new System.Collections.Hashtable() { { "payno", vm.payno }, { "userno", SUserInfo.UserNo } });
//개별 검증
//신청가능확인(기간,제한인원)
var lects = Dao.Get<Lect>("pay.cmcheck.forpay", new Hashtable() { { "cmno", vm.PayItems.Where(w=>w.ptype == 4).First().itemno }, { "userno", SUserInfo.UserNo } });
//신청가능확인(기간,제한인원,동일강좌,유사강좌)
var lects = Dao.Get<Lect>("pay.cmcheck.forpay", new Hashtable() { { "cmnos", string.Join(",", vm.PayItems.Where(w => w.ptype == 0).Select(s => s.itemno)) }, { "userno", SUserInfo.UserNo } });
if (lects.Count() < 1)
{
//수강신청기간이 아님
return JsonBack(new JsonRtn() { code = 1000, msg = "수강신청기간이 아닙니다.", obj = 0 });
}
else if (lects.Where(w => w.status == 4).Count() != 1)
else if (lects.Where(w => w.status > 0).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "결제가능한 상태가 아닙니다.", obj = 0 });
return JsonBack(new JsonRtn() { code = 1000, msg = "이미 신청한 강좌입니다. [" + string.Join(", ", lects.Where(w => w.status > 0).Select(s => s.cname)) + "]", obj = 0 });
}
else if (lects.Where(w => w.quota != 0 && (w.quota + 1) <= w.countlect).Count() > 0)
else if (lects.Where(w => w.quota != 0 && w.quota <= w.countlect).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "제한인원을 초과한 강좌입니다.", obj = 0 });
return JsonBack(new JsonRtn() { code = 1000, msg = "제한인원을 초과한 강좌입니다. [" + string.Join(", ", lects.Where(w => w.quota != 0 && w.quota <= w.countlect).Select(s => s.cname)) + "]", obj = 0 });
}
else if (lects.Select(s => s.cmno).Count() != vm.PayItems.Where(w => w.ptype == 4).Count())
else if (lects.Select(s => s.cmno).Count() != vm.PayItems.Where(w => w.ptype == 0).Count())
{
return JsonBack(new JsonRtn() { code = 1000, msg = "구매상품이 올바르지 않습니다.", obj = 0 });
}
}
else if (vm.ispayexam)
{
vm.PayItems = Dao.Get<PayItem>("pay.payitems.forexampay", new System.Collections.Hashtable() { { "exno", vm.exno }, { "userno", SUserInfo.UserNo } });
//개별 검증
//신청가능확인(기간,제한인원)
if (vm.PayItems.Where(w=>w.rstime < DateTime.Now && w.retime > DateTime.Now).Count() != 1)
foreach (var pi in vm.PayItems.Where(w => w.ptype == 0))
{
//수강신청기간이 아님
return JsonBack(new JsonRtn() { code = 1000, msg = "신청기간이 아닙니다.", obj = 0 });
}
}
else
{
if (vm.PayItems.Where(w => w.ptype == 0).Count() > 0)
{
//개별 검증
//신청가능확인(기간,제한인원,동일강좌,유사강좌)
var lects = Dao.Get<Lect>("pay.cmcheck.forpay", new Hashtable() { { "cmnos", string.Join(",", vm.PayItems.Where(w => w.ptype == 0).Select(s => s.itemno)) }, { "userno", SUserInfo.UserNo } });
if (lects.Count() < 1)
{
//수강신청기간이 아님
return JsonBack(new JsonRtn() { code = 1000, msg = "수강신청기간이 아닙니다.", obj = 0 });
}
else if (lects.Where(w => w.status > 0).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "이미 신청한 강좌입니다. [" + string.Join(", ", lects.Where(w => w.status > 0).Select(s => s.cname)) + "]", obj = 0 });
}
else if (lects.Where(w => w.quota != 0 && w.quota <= w.countlect).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "제한인원을 초과한 강좌입니다. [" + string.Join(", ", lects.Where(w => w.quota != 0 && w.quota <= w.countlect).Select(s => s.cname)) + "]", obj = 0 });
}
else if (lects.Select(s => s.cmno).Count() != vm.PayItems.Where(w => w.ptype == 0).Count())
{
return JsonBack(new JsonRtn() { code = 1000, msg = "구매상품이 올바르지 않습니다.", obj = 0 });
}
foreach (var pi in vm.PayItems.Where(w => w.ptype == 0))
{
pi.rstime = lects.Where(w => w.cmno == pi.itemno).First().rstime;
pi.retime = lects.Where(w => w.cmno == pi.itemno).First().retime;
pi.orgamt = lects.Where(w => w.cmno == pi.itemno).First().outfee;
pi.discamt = lects.Where(w => w.cmno == pi.itemno).First().outfee - lects.Where(w => w.cmno == pi.itemno).First().payamt;
pi.payamt = lects.Where(w => w.cmno == pi.itemno).First().payamt;
}
pi.rstime = lects.Where(w => w.cmno == pi.itemno).First().rstime;
pi.retime = lects.Where(w => w.cmno == pi.itemno).First().retime;
pi.orgamt = lects.Where(w => w.cmno == pi.itemno).First().infee;
pi.discamt = lects.Where(w => w.cmno == pi.itemno).First().infee - lects.Where(w => w.cmno == pi.itemno).First().payamt;
pi.payamt = lects.Where(w => w.cmno == pi.itemno).First().payamt;
}
}
}
@ -292,86 +227,86 @@ namespace NP.Base.Controllers
if (vm.ispaycert)
{
//자격증강좌 결제 시작
vm.Pay = new Pay()
{
payno = vm.payno,
ptype = vm.ptype,
isdvr = vm.PayItems.Where(w => w.ptype == 2).Count() > 0 ? 1 : 0,
uno = SUserInfo.UserNo,
uip = GetUserIP(),
userno = SUserInfo.UserNo,
deliamt = vm.isdvr == 1 && vm.PayItems.Where(w => w.ptype == 2).Count() > 0 ? GetInt(GetConfig("deliveramt")) : 0
};
if (vm.Pay.ptype == 3)
{
//가상계좌 결제 시 ?일동안만 입금가능 / 수강신청중 빠른 것
vm.Pay.paylimit = Convert.ToDateTime(DateTime.Now.AddDays(paylimitday).ToString("yyyy-MM-dd")).AddSeconds(-1);
//if (vm.PayItems.Where(w => w.ptype == 4).First().retime < vm.Pay.paylimit)
//{
// vm.Pay.paylimit = Convert.ToDateTime(vm.PayItems.Where(w => w.ptype == 4).First().retime.Value.AddDays(1).ToString("yyyy-MM-dd")).AddSeconds(-1);
//}
vm.Pay.acceptmethod = "vbank(" + vm.Pay.paylimit.Value.ToString("yyyyMMddHHmm") + ")";
}
if (Dao.Save("pay.paycert.paystart", vm.Pay) > 0)
{
vm.Pay.payamt = vm.PayItems.Sum(s => s.payamt2);
if (vm.Pay.isdvr == 1)
{
vm.Pay.payamt += GetInt(GetConfig("deliveramt"));
try
{
vm.PayDVR.payno = vm.Pay.payno;
vm.PayDVR.isdvr = vm.isdvr;
vm.PayDVR.uno = SUserInfo.UserNo; vm.PayDVR.uip = GetUserIP();
Dao.Save("pay.paydvr.in", vm.PayDVR);
}
catch (Exception exx) { SetError("배송정보입력오류: " + vm.Pay.payno + ": " + exx.Message); }
}
var pginfos = GetConfig("pginfo").Split('|');
string timeTemp = "" + DateTime.UtcNow.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
vm.Pay.timestamp = timeTemp.Split('.')[0];
System.Security.Cryptography.SHA256Managed sha256Managed = new System.Security.Cryptography.SHA256Managed();
vm.Pay.signature = ComputeHash(string.Format("oid={0}&price={1}&timestamp={2}", pginfos[4] + vm.Pay.payno, vm.Pay.payamt, vm.Pay.timestamp));
vm.Pay.oid2 = pginfos[4];
return JsonBack(new JsonRtn() { code = 1000, obj = vm.Pay });
}
//vm.Pay = new Pay()
//{
// payno = vm.payno,
// ptype = vm.ptype,
// isdvr = vm.PayItems.Where(w => w.ptype == 2).Count() > 0 ? 1 : 0,
// uno = SUserInfo.UserNo,
// uip = GetUserIP(),
// userno = SUserInfo.UserNo,
// deliamt = vm.isdvr == 1 && vm.PayItems.Where(w => w.ptype == 2).Count() > 0 ? GetInt(GetConfig("deliveramt")) : 0
//};
//if (vm.Pay.ptype == 3)
//{
// //가상계좌 결제 시 ?일동안만 입금가능 / 수강신청중 빠른 것
// vm.Pay.paylimit = Convert.ToDateTime(DateTime.Now.AddDays(paylimitday).ToString("yyyy-MM-dd")).AddSeconds(-1);
// //if (vm.PayItems.Where(w => w.ptype == 4).First().retime < vm.Pay.paylimit)
// //{
// // vm.Pay.paylimit = Convert.ToDateTime(vm.PayItems.Where(w => w.ptype == 4).First().retime.Value.AddDays(1).ToString("yyyy-MM-dd")).AddSeconds(-1);
// //}
// vm.Pay.acceptmethod = "vbank(" + vm.Pay.paylimit.Value.ToString("yyyyMMddHHmm") + ")";
//}
//if (Dao.Save("pay.paycert.paystart", vm.Pay) > 0)
//{
// vm.Pay.payamt = vm.PayItems.Sum(s => s.payamt2);
// if (vm.Pay.isdvr == 1)
// {
// vm.Pay.payamt += GetInt(GetConfig("deliveramt"));
// try
// {
// vm.PayDVR.payno = vm.Pay.payno;
// vm.PayDVR.isdvr = vm.isdvr;
// vm.PayDVR.uno = SUserInfo.UserNo; vm.PayDVR.uip = GetUserIP();
// Dao.Save("pay.paydvr.in", vm.PayDVR);
// }
// catch (Exception exx) { SetError("배송정보입력오류: " + vm.Pay.payno + ": " + exx.Message); }
// }
// var pginfos = GetConfig("pginfo").Split('|');
// string timeTemp = "" + DateTime.UtcNow.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
// vm.Pay.timestamp = timeTemp.Split('.')[0];
// System.Security.Cryptography.SHA256Managed sha256Managed = new System.Security.Cryptography.SHA256Managed();
// vm.Pay.signature = ComputeHash(string.Format("oid={0}&price={1}&timestamp={2}", pginfos[4] + vm.Pay.payno, vm.Pay.payamt, vm.Pay.timestamp));
// vm.Pay.oid2 = pginfos[4];
// return JsonBack(new JsonRtn() { code = 1000, obj = vm.Pay });
//}
}
else if (vm.ispayexam)
{
//자격증시험 결제 진행
vm.Pay = new Pay()
{
ptype = vm.ptype,
isexam = 1,
uno = SUserInfo.UserNo,
uip = GetUserIP(),
ispg = 1,
userno = SUserInfo.UserNo,
orgamt = vm.PayItems.Sum(s => s.orgamt),
discamt = vm.PayItems.Sum(s => s.discamt),
payamt = vm.PayItems.Sum(s => s.payamt),
PIs = vm.PayItems
};
if (vm.Pay.ptype == 3)
{
//가상계좌 결제 시 ?일동안만 입금가능 / 수강신청중 빠른 것
vm.Pay.paylimit = Convert.ToDateTime(DateTime.Now.AddDays(paylimitday).ToString("yyyy-MM-dd")).AddSeconds(-1);
//if (vm.PayItems.Where(w => w.retime != null && w.retime < vm.Pay.paylimit).Count() > 0)
//{
// vm.Pay.paylimit = Convert.ToDateTime(vm.PayItems.Where(w => w.retime != null && w.retime < vm.Pay.paylimit).Min(m => m.retime).Value.AddDays(1).ToString("yyyy-MM-dd")).AddSeconds(-1);
//}
vm.Pay.acceptmethod = "vbank(" + vm.Pay.paylimit.Value.ToString("yyyyMMddHHmm") + ")";
}
if (Dao.PayIn(vm.Pay) > 0)
{
var pginfos = GetConfig("pginfo").Split('|');
string timeTemp = "" + DateTime.UtcNow.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
vm.Pay.timestamp = timeTemp.Split('.')[0];
System.Security.Cryptography.SHA256Managed sha256Managed = new System.Security.Cryptography.SHA256Managed();
vm.Pay.signature = ComputeHash(string.Format("oid={0}&price={1}&timestamp={2}", pginfos[4] + vm.Pay.payno, vm.Pay.payamt, vm.Pay.timestamp));
vm.Pay.oid2 = pginfos[4];
return JsonBack(new JsonRtn() { code = 1000, obj = vm.Pay });
}
//vm.Pay = new Pay()
//{
// ptype = vm.ptype,
// isexam = 1,
// uno = SUserInfo.UserNo,
// uip = GetUserIP(),
// ispg = 1,
// userno = SUserInfo.UserNo,
// orgamt = vm.PayItems.Sum(s => s.orgamt),
// discamt = vm.PayItems.Sum(s => s.discamt),
// payamt = vm.PayItems.Sum(s => s.payamt),
// PIs = vm.PayItems
//};
//if (vm.Pay.ptype == 3)
//{
// //가상계좌 결제 시 ?일동안만 입금가능 / 수강신청중 빠른 것
// vm.Pay.paylimit = Convert.ToDateTime(DateTime.Now.AddDays(paylimitday).ToString("yyyy-MM-dd")).AddSeconds(-1);
// //if (vm.PayItems.Where(w => w.retime != null && w.retime < vm.Pay.paylimit).Count() > 0)
// //{
// // vm.Pay.paylimit = Convert.ToDateTime(vm.PayItems.Where(w => w.retime != null && w.retime < vm.Pay.paylimit).Min(m => m.retime).Value.AddDays(1).ToString("yyyy-MM-dd")).AddSeconds(-1);
// //}
// vm.Pay.acceptmethod = "vbank(" + vm.Pay.paylimit.Value.ToString("yyyyMMddHHmm") + ")";
//}
//if (Dao.PayIn(vm.Pay) > 0)
//{
// var pginfos = GetConfig("pginfo").Split('|');
// string timeTemp = "" + DateTime.UtcNow.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
// vm.Pay.timestamp = timeTemp.Split('.')[0];
// System.Security.Cryptography.SHA256Managed sha256Managed = new System.Security.Cryptography.SHA256Managed();
// vm.Pay.signature = ComputeHash(string.Format("oid={0}&price={1}&timestamp={2}", pginfos[4] + vm.Pay.payno, vm.Pay.payamt, vm.Pay.timestamp));
// vm.Pay.oid2 = pginfos[4];
// return JsonBack(new JsonRtn() { code = 1000, obj = vm.Pay });
//}
}
else
{
@ -382,19 +317,22 @@ namespace NP.Base.Controllers
uno = SUserInfo.UserNo,
uip = GetUserIP(),
ispg = 1,
isexam = vm.ispaycart?2:0,
isexam = vm.ispaycart ? 2 : 0,
isgroup = vm.isgroup,
userno = SUserInfo.UserNo,
orgamt = vm.PayItems.Sum(s => s.orgamt),
discamt = vm.PayItems.Sum(s => s.discamt),
deliamt = vm.isdvr == 1 && vm.PayItems.Where(w => w.ptype == 2).Count() > 0 ? GetInt(GetConfig("deliveramt")) : 0,
payamt = vm.PayItems.Sum(s => s.payamt) + (vm.isdvr == 1 && vm.PayItems.Where(w => w.ptype == 2).Count() > 0 ? GetInt(GetConfig("deliveramt")) : 0),
iscashrct = vm.ptype == 1 ? 0 : vm.iscashrct,
cashrcthp = vm.ptype == 1 ? null : vm.cashrcthp,
pplno = vm.pplno,
PIs = vm.PayItems
};
if (vm.Pay.isdvr == 1)
{
vm.PayDVR.isdvr = vm.isdvr;
vm.Pay.PayDVR = vm.PayDVR;
//vm.PayDVR.isdvr = vm.isdvr;
//vm.Pay.PayDVR = vm.PayDVR;
}
if (vm.Pay.ptype == 3 && vm.Pay.payamt > 0)
{
@ -421,8 +359,8 @@ namespace NP.Base.Controllers
string timeTemp = "" + DateTime.UtcNow.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
vm.Pay.timestamp = timeTemp.Split('.')[0];
System.Security.Cryptography.SHA256Managed sha256Managed = new System.Security.Cryptography.SHA256Managed();
vm.Pay.signature = ComputeHash(string.Format("oid={0}&price={1}&timestamp={2}", pginfos[4] + vm.Pay.payno, vm.Pay.payamt, vm.Pay.timestamp));
vm.Pay.oid2 = pginfos[4];
vm.Pay.signature = ComputeHash(string.Format("oid={0}&price={1}&timestamp={2}", GetConfig("PAYMENT_CLASSIFICATION") + vm.Pay.payno, vm.Pay.payamt, vm.Pay.timestamp));
vm.Pay.oid2 = GetConfig("PAYMENT_CLASSIFICATION");
return JsonBack(new JsonRtn() { code = 1000, obj = vm.Pay });
}
}

View File

@ -933,8 +933,8 @@ create table payrfd (
rfdno bigint auto_increment not null
,payno bigint not null
,rtext varchar (500)
,bankname varchar (50)
,bankno varbinary (200)
,bankname varchar (50)
,bankno varbinary (200)
,bankowner varchar (50)
,isowner tinyint not null
,rstatus tinyint not null
@ -943,8 +943,8 @@ create table payrfd (
,rreason tinyint not null
,ruser varchar (50) null
,rphone varbinary (200) null
,fgnor bigint not null
,fgnob bigint not null
,fgnor bigint null
,fgnob bigint null
,rback varchar(500) null
,cdt datetime not null,cno bigint not NULL,udt datetime not null,uno bigint not NULL,uip varchar(50) not NULL
,primary key(rfdno));

View File

@ -221,13 +221,13 @@
<select id="pay.cmcheck.forpay" parameterClass="hashtable" resultClass="lect">
select a.cmno,a.cname,a.quota,a.rstime,a.retime
,b.status
,a.infee,a.outfee,case when ua.isjoin=1 then a.infee else a.outfee end payamt
,a.infee,a.outfee,case when ua.isjoin=1 then a.infee else a.infee end payamt
,count(d.userno) countlect
from cm a
inner join users u on u.userno=#userno#
left outer join assign ua on ua.asno=u.asno
left outer join lect b on b.cmno=a.cmno and b.userno =#userno# and b.status &lt; 5 and b.ischanged=0
left outer join lect c on c.cmno=a.cmno and c.status &lt; 5 and c.ischanged=0
left outer join lect c on c.cmno=a.cmno and c.status in (1,2,3,4,6) and c.ischanged=0
left outer join users d on d.userno=c.userno and d.status=1
where
<isNotNull property="cmnos">a.cmno in($cmnos$)</isNotNull>
@ -238,20 +238,20 @@
</select>
<insert id="pay.pay.pgin" parameterClass="pay">
insert into pay(ptype,ispg,isgroup,isexam,userno,username,pstatus,rstatus
,refunding,paylimit,payoktime,pgkey,orgamt,discamt,deliamt,isrefunddvr,payamt,refundamt,isdvr,<include refid="sql.inc"></include>)
,refunding,paylimit,payoktime,pgkey,orgamt,discamt,deliamt,isrefunddvr,payamt,refundamt,isdvr,iscashrct,cashrcthp,pplno,<include refid="sql.inc"></include>)
select #ptype#,#ispg#,#isgroup#,#isexam#,a.userno,a.username,case when #ptype# = 6 then 1 else 0 end,0
,#refunding#,#paylimit#,case when #ptype# = 6 then now() else #payoktime# end,#pgkey#,#orgamt#,#discamt#,#deliamt#,#isrefunddvr#,#payamt#,#refundamt#,#isdvr#,<include refid="sql.inv"></include>
,#refunding#,#paylimit#,case when #ptype# = 6 then now() else #payoktime# end,#pgkey#,#orgamt#,#discamt#,#deliamt#,#isrefunddvr#,#payamt#,#refundamt#,#isdvr#,#iscashrct#,HEX(AES_ENCRYPT(#cashrcthp#, <include refid="sql.digest"></include>)),#pplno#,<include refid="sql.inv"></include>
from users a
where a.userno=#userno#
<selectKey type="post" property="payno" resultClass="long">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="pay.payitem.pgin" parameterClass="pay">
insert into payitem (payno,ptype,pcno,itemno,userno,pstatus,rstatus
,pcnt,orgamt,discamt,payamt,payamtcash,payamtcard,refundamt,refundtime,refundtimereal,refundinfo,isrebate,fgno,<include refid="sql.inc"></include>)
,pcnt,orgamt,discamt,payamt,payamtcash,payamtcard,refundamt,refundtime,refundtimereal,refundinfo,isrebate,rbank,rbankaccnum,tbankuser,fgno,<include refid="sql.inc"></include>)
select #payno#,a.ptype,null,a.itemno,a.userno,case when #ptype# = 6 then 1 else 0 end,0
,a.pcnt,a.orgamt,a.discamt,a.payamt,0,0,0,null,null,null,a.isrebate,ifnull(b.fgno,a.fgno),<include refid="sql.inv"></include>
,a.pcnt,a.orgamt,a.discamt,a.payamt,0,0,0,null,null,null,a.isrebate,a.rbank,HEX(AES_ENCRYPT(a.rbankaccnum, <include refid="sql.digest"></include>)),a.tbankuser,ifnull(b.fgno,a.fgno),<include refid="sql.inv"></include>
from (
<iterate property="PIs" open="" conjunction="union all" close=""> select #PIs[].ptype# ptype,#PIs[].itemno# itemno,#PIs[].userno# userno,#PIs[].pcnt# pcnt,#PIs[].orgamt# orgamt,#PIs[].discamt# discamt,#PIs[].payamt# payamt,#PIs[].isrebate# isrebate,#PIs[].fgno# fgno </iterate>
<iterate property="PIs" open="" conjunction="union all" close=""> select #PIs[].ptype# ptype,#PIs[].itemno# itemno,#PIs[].userno# userno,#PIs[].pcnt# pcnt,#PIs[].orgamt# orgamt,#PIs[].discamt# discamt,#PIs[].payamt# payamt,#PIs[].isrebate# isrebate,#PIs[].rbank# rbank,#PIs[].rbankaccnum# rbankaccnum,#PIs[].tbankuser# tbankuser,#PIs[].fgno# fgno </iterate>
) a
left outer join paycart b on #isexam# = 2 and a.ptype=0 and b.ptype=0 and b.itemno=a.itemno and b.userno=#userno# and b.status=1 and b.ispay=1
</update>
@ -820,7 +820,7 @@
where payno=#payno# and isunpay=1;
</update>
<select id="pay.pplogs" parameterClass="hashtable" resultClass="pplog">
select a.pplno,a.isready,a.cmno,a.cmisno
select a.pplno,a.isready,a.cmno,a.cmisno,a.isrebate,a.rbankname,a.rbankacc,a.rbankowner
,b.payno
from pplog a
left outer join pay b on b.pplno=a.pplno

View File

@ -8,6 +8,8 @@ using NP.Model;
using NP.Base;
using System.Collections;
using XPayClientNet;
namespace NP.FO.Controllers
{
public class CourseController : FOOpenBaseController
@ -836,17 +838,17 @@ namespace NP.FO.Controllers
{
return Redirect("/");
}
var ppl = Dao.Get<PPLog>("pay.pplogs", new Hashtable() { { "pplno", vm.pplno }, { "userno", SUserInfo.UserNo } }).FirstOrDefault();
if (ppl == null)
vm.PPLog = Dao.Get<PPLog>("pay.pplogs", new Hashtable() { { "pplno", vm.pplno }, { "userno", SUserInfo.UserNo } }).FirstOrDefault();
if (vm.PPLog == null)
{
return Redirect("/");
}
if (ppl.payno > 0)
if (vm.PPLog.payno > 0)
{
//새로고침?
return RedirectPermanent("/Course/ApplyComplete?payno=" + ppl.payno);
return RedirectPermanent("/Course/ApplyComplete?payno=" + vm.PPLog.payno);
}
if (ppl.isready == 1)
if (vm.PPLog.isready == 1)
{
//대기접수로 결제 및 신청데이터 생성
var payitems = new List<PayItem>() { };
@ -860,12 +862,12 @@ namespace NP.FO.Controllers
pcnt = 1,
payamt = 0,
isready = 1,
cmisno = ppl.cmisno,
cmisno = vm.PPLog.cmisno,
uno = SUserInfo.UserNo,
uip = uip
});
//정가확인
var cms = Dao.Get<CM>("cm.cms.forpay", new Hashtable() { { "userno", SUserInfo.UserNo }, { "cmno", ppl.cmno } });
var cms = Dao.Get<CM>("cm.cms.forpay", new Hashtable() { { "userno", SUserInfo.UserNo }, { "cmno", vm.PPLog.cmno } });
var pi = payitems.First();
pi.orgamt = cms.Where(w => w.cmno == pi.itemno).First().fee;
var pay = new Pay()
@ -891,7 +893,8 @@ namespace NP.FO.Controllers
}
return Redirect("/");
}
vm.CM = Dao.Get<CM>("cm.cms", new System.Collections.Hashtable() { { "cmno", ppl.cmno } }).First();
vm.CM = Dao.Get<CM>("cm.cms", new System.Collections.Hashtable() { { "cmno", vm.PPLog.cmno } }).First();
vm.User = Dao.Get<Users>("users.users", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo } }).First();
return View(vm);
}
@ -903,10 +906,183 @@ namespace NP.FO.Controllers
}
vm.PayItem = Dao.Get<PayItem>("pay.payresult", new Hashtable() { { "payno", vm.payno }, { "userno", SUserInfo.UserNo } }).First();
vm.CM = Dao.Get<CM>("cm.cms", new System.Collections.Hashtable() { { "cmno", vm.PayItem.itemno } }).FirstOrDefault();
//여기해보자
return View(vm);
}
public ActionResult XpayREQ(VMPay vm)
{
ViewBag.ismain = true;
string configPath = GetConfig("lgdacomConfigPath");
string CST_PLATFORM = GetConfig("CST_PLATFORM");
string CST_MID = GetConfig("CST_MID");
string LGD_MID = (("test".Equals(CST_PLATFORM.Trim())) ? "t" : "") + CST_MID;
string LGD_TIMESTAMP = "";
string LGD_HASHDATA = "";
string LGD_OID = Request["LGD_OID"];
string LGD_AMOUNT = Request["LGD_AMOUNT"];
vm.payParams = new Hashtable();
vm.payParams.Add("CST_PLATFORM", CST_PLATFORM);
vm.payParams.Add("CST_MID", CST_MID);
vm.payParams.Add("LGD_MID", LGD_MID);
vm.payParams.Add("LGD_OID", LGD_OID);
vm.payParams.Add("LGD_BUYER", Request["LGD_BUYER"]);
vm.payParams.Add("LGD_PRODUCTINFO", Request["LGD_PRODUCTINFO"]);
vm.payParams.Add("LGD_AMOUNT", LGD_AMOUNT);
vm.payParams.Add("LGD_BUYEREMAIL", Request["LGD_BUYEREMAIL"]);
vm.payParams.Add("LGD_RETURNURL", (GetConfig("fronturl") + "/Course/XpayReturnURL"));
vm.payParams.Add("LGD_ENCODING", GetConfig("LGD_ENCODING"));
vm.payParams.Add("LGD_ENCODING_NOTEURL", GetConfig("LGD_ENCODING"));
vm.payParams.Add("LGD_ENCODING_RETURNURL", GetConfig("LGD_ENCODING"));
vm.payParams.Add("LGD_BACKBTN_YN", GetConfig("LGD_BACKBTN_YN"));
vm.payParams.Add("LGD_CASNOTEURL", GetConfig("LGD_CASNOTEURL"));
vm.payParams.Add("LGD_AUTOFILLYN_BUYER", GetConfig("LGD_AUTOFILLYN_BUYER"));
vm.payParams.Add("LGD_ESCROW_USEYN", GetConfig("LGD_ESCROW_USEYN"));
vm.payParams.Add("LGD_CASHRECEIPTYN", GetConfig("LGD_CASHRECEIPTYN"));
vm.payParams.Add("LGD_DOMAIN_URL", "xpayvvip");
vm.payParams.Add("LGD_CUSTOM_PROCESSTYPE", "TWOTR");
if (Request["ptype"] == "3")
{
vm.payParams.Add("LGD_CLOSEDATE", Request["LGD_CLOSEDATE"]);
}
String OSTYPE = Request["LGD_OSTYPE_CHECK"];
vm.payParams.Add("LGD_OSTYPE_CHECK", OSTYPE);
vm.payParams.Add("LGD_CUSTOM_SWITCHINGTYPE", Request["LGD_CUSTOM_SWITCHINGTYPE"]);
vm.payParams.Add("LGD_VERSION", Request["LGD_VERSION"]);
vm.payParams.Add("LGD_CUSTOM_SKIN", Request["LGD_CUSTOM_SKIN"]);
if (OSTYPE == "P")
{
vm.payParams.Add("LGD_WINDOW_TYPE", Request["LGD_WINDOW_TYPE"]);
vm.payParams.Add("LGD_CUSTOM_USABLEPAY", Request["LGD_CUSTOM_USABLEPAY"]);
}
else if (OSTYPE == "M")
{
vm.payParams.Add("CST_WINDOW_TYPE", Request["CST_WINDOW_TYPE"]);
vm.payParams.Add("LGD_PCVIEWYN", Request["LGD_PCVIEWYN"]);
vm.payParams.Add("LGD_CUSTOM_FIRSTPAY", Request["LGD_CUSTOM_FIRSTPAY"]);
//iOS 연동시 필수
vm.payParams.Add("LGD_MPILOTTEAPPCARDWAPURL", ""); //iOS 롯데앱카드 스키마 등록
/*
****************************************************
* ISP(/BC) - BEGIN
****************************************************
*/
vm.payParams.Add("LGD_KVPMISPWAPURL", "");
vm.payParams.Add("LGD_KVPMISPCANCELURL", "");
/*
****************************************************
* ISP(/BC) - END
****************************************************
*/
/*
****************************************************
* - BEGIN
****************************************************
*/
vm.payParams.Add("LGD_MTRANSFERWAPURL", "");
vm.payParams.Add("LGD_MTRANSFERCANCELURL", "");
/*
****************************************************
* - END
****************************************************
*/
/*
****************************************************
* OS별 ISP(/),
****************************************************
- : A ()
- iOS: N
- iOS일 , N으로
*/
vm.payParams.Add("LGD_KVPMISPAUTOAPPYN", Request["LGD_KVPMISPAUTOAPPYN"]);
vm.payParams.Add("LGD_MTRANSFERAUTOAPPYN", Request["LGD_MTRANSFERAUTOAPPYN"]);
}
// (1) XpayClient의 사용을 위한 xpay 객체 생성
XPayClient xpay = new XPayClient();
// (2) Init: XPayClient 초기화(환경설정 파일 로드)
// configPath: 설정파일
// CST_PLATFORM: - test, service 값에 따라 lgdacom.conf의 test_url(test) 또는 url(srvice) 사용
// - test, service 값에 따라 테스트용 또는 서비스용 아이디 생성
xpay.Init(configPath, CST_PLATFORM);
/*
*************************************************
* 2. MD5 ( ) - BEGIN
*
* MD5 .
*************************************************
*/
try
{
// (3) Init_TX: 메모리에 mall.conf, lgdacom.conf 할당 및 트랜잭션의 고유한 키 TXID 생성
xpay.Init_TX(LGD_MID);
LGD_TIMESTAMP = xpay.GetTimeStamp();
LGD_HASHDATA = xpay.GetHashData(LGD_MID, LGD_OID, LGD_AMOUNT, LGD_TIMESTAMP);
}
catch (Exception err)
{
//LGD_HASHDATA 추출 오류
SetError(err.Message);
return null;
}
/*
*************************************************
* 2. MD5 ( ) - END
*************************************************
*/
vm.payParams.Add("LGD_TIMESTAMP", LGD_TIMESTAMP);
vm.payParams.Add("LGD_HASHDATA", LGD_HASHDATA);
//수정 불가 ( 인증 후 자동 셋팅 )
vm.payParams.Add("LGD_RESPCODE", "");
vm.payParams.Add("LGD_RESPMSG", "");
vm.payParams.Add("LGD_PAYKEY", "");
//nptech 추가 파라미터
vm.payParams.Add("items", Request["items"]);
vm.payParams.Add("rsMsg", "");
Session.Add("PAYREQ_MAP", vm.payParams);
return View(vm);
}
public ActionResult XpayReturnURL(VMPay vm)
{
ViewBag.ismain = true;
String LGD_RESPCODE = Request["LGD_RESPCODE"];
String LGD_RESPMSG = Request["LGD_RESPMSG"];
//S053 사용자가 결제를 취소했습니다.
vm.payParams = new Hashtable();
vm.payParams = (Hashtable)Session["PAYREQ_MAP"];
vm.payParams.Remove("LGD_RESPCODE");
vm.payParams.Remove("LGD_RESPMSG");
vm.payParams.Add("LGD_RESPCODE", LGD_RESPCODE);
vm.payParams.Add("LGD_RESPMSG", LGD_RESPMSG);
if (LGD_RESPCODE == "0000")
{
vm.payParams.Remove("LGD_PAYKEY");
vm.payParams.Add("LGD_PAYKEY", Request["LGD_PAYKEY"]);
}
else
{
vm.payParams.Remove("rsMsg");
vm.payParams.Add("rsMsg", "[" + LGD_RESPCODE + "]" + LGD_RESPMSG);
SetError("[" + LGD_RESPCODE + "]" + LGD_RESPMSG);
}
return View(vm);
}
}
}

View File

@ -160,8 +160,9 @@
<Private>True</Private>
<HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
</Reference>
<Reference Include="XPayClientNet">
<HintPath>..\..\LMS_TSTI\Source\Reference\XPayClientNet.dll</HintPath>
<Reference Include="XPayClientNet, Version=2.0.1.9, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\References\XPayClientNet.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
@ -661,6 +662,9 @@
<Content Include="Views\My\MyAssInfo.cshtml" />
<Content Include="Views\Course\ApplyEdu.cshtml" />
<Content Include="Views\Course\ApplyComplete.cshtml" />
<Content Include="Views\Course\ApplyPay.cshtml" />
<Content Include="Views\Course\XpayREQ.cshtml" />
<Content Include="Views\Course\XpayReturnURL.cshtml" />
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />

View File

@ -0,0 +1,175 @@
@model NP.Model.VMCourse
<form id="mform" name="mform" method="post" action="/Course/XpayREQ">
<input type="hidden" name="cmno" id="cmno" value="@Model.cmno" /> @*강좌번호*@
<input type="hidden" name="stringval" id="stringval" value="@Model.stringval" /> @*법정교육/기타교육*@
<input type="hidden" name="stringval2" id="stringval2" value="@Model.stringval2" />@*교육유형*@
<input type="hidden" name="stringval3" id="stringval3" value="@Model.stringval3" />@*기술인분류*@
<input type="hidden" name="stringval4" id="stringval4" value="@Model.stringval4" />@*교육목적*@
<input type="hidden" name="stringval5" id="stringval5" value="@Model.stringval5" />@*등급*@
<input type="hidden" name="stringval6" id="stringval6" value="@Model.stringval6" />@*직무분야*@
<input type="hidden" name="cmisno" id="cmisno" />
<input type="hidden" name="isrebate" id="isrebate" />
<input type="hidden" name="applicableCM" id="applicableCM" />
<h4 class="clsTitle">신청강좌</h4>
<ul class="smtList mt0">
<li>
<ul class="smtlChk">
<li>
@if (Model.CM.cshape == 0)
{
<p><label>@(Model.CM.tseq)기 <span class='gry'>@(Model.CM.rsrename) (@(Model.CM.rsretimeToDay)일) </span> @Model.CM.cname<span class='red'> | @(Model.CM.infee)원</span></label></p>
}
else if (Model.CM.cshape == 1)
{
<p><label>@(Model.CM.tseq)기 <span class='blu'>[@(Model.CM.studyplacename) 교육장] </span><span class='gry'>@Model.CM.rsrename (@(Model.CM.rsretimeToDay)일) </span> @Model.CM.cname<span class='red'> | @(Model.CM.infee)원</span></label></p>
}
else if (Model.CM.cshape == 2)
{
<p><label>@(Model.CM.tseq)기 <span class='gry'>@(Model.CM.rsrename) (@(Model.CM.rsretimeToDay)일) </span> @Model.CM.cname<span class='red'> | @(Model.CM.infee)원 ※ 집체교육 선택 필수</span></label></p>
}
</li>
</ul>
<div class="apyCost">
결제금액 : <span class="red">@Model.CM.infee</span> 원
</div>
</li>
</ul>
<h4 class="clsTitle">결제방법</h4>
<ul class="apyRdo">
<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>
</ul>
<div id="cashbox" style="display:none">
<h4 class="clsTitle">현금영수증 발행여부</h4>
<ul class="apyRdo">
<li><input type="radio" name="iscashrct" id="pay0201" value="0"><label for="pay0201">미발행</label></li>
<li>
<input type="radio" name="iscashrct" id="pay0202" value="1"><label for="pay0202">발행<span class="cashnot hide"> (핸드폰번호 :</span></label>
<ul class="apyPh cashnot hide">
<li>
<select id="hp1">
<option value="">선택</option>
<option value="010">010</option>
</select>
</li>
<li>-</li>
<li><input type="tel" id="hp2" maxlength="4" /></li>
<li>-</li>
<li><input type="tel" id="hp3" maxlength="4" /></li>
</ul>
<span class="cashnot hide">)</span>
</li>
</ul>
</div>
<ul class="clsBtn society">
<li><a href="#" onclick="save()">수강신청</a></li>
<li><a href="/">취소</a></li>
</ul>
@Html.HiddenFor(m => m.payno)
@Html.HiddenFor(m => m.exno)
@Html.Hidden("pplno", Model.PPLog.pplno)
<input type="hidden" name="cashrcthp" id="cashrcthp" />
<input type="hidden" name="items" value="@string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", 0, Model.CM.cmno, 1, ViewBag.SSUserNo, Model.PPLog.isrebate, 0, "")" />
<!-- Xpay 결제 start -->
<input type="hidden" name="LGD_CLOSEDATE" id="LGD_CLOSEDATE" value="">
<input type="hidden" name="LGD_OID" id="LGD_OID" value="">
<input type="hidden" name="LGD_AMOUNT" id="LGD_AMOUNT" value="">
<input type="hidden" name="LGD_OSTYPE_CHECK" id="LGD_OSTYPE_CHECK" value="">
<input type="hidden" name="LGD_CUSTOM_SWITCHINGTYPE" id="LGD_CUSTOM_SWITCHINGTYPE" value="">
<input type="hidden" name="LGD_VERSION" id="LGD_VERSION" value="">
<input type="hidden" name="LGD_CUSTOM_SKIN" id="LGD_CUSTOM_SKIN" value="">
<input type="hidden" name="CST_WINDOW_TYPE" id="CST_WINDOW_TYPE" value="">
<input type="hidden" name="LGD_PCVIEWYN" id="LGD_PCVIEWYN" value="">
<input type="hidden" name="LGD_CUSTOM_FIRSTPAY" id="LGD_CUSTOM_FIRSTPAY" value="">
<input type="hidden" name="LGD_KVPMISPAUTOAPPYN" id="LGD_KVPMISPAUTOAPPYN" value="">
<input type="hidden" name="LGD_MTRANSFERAUTOAPPYN" id="LGD_MTRANSFERAUTOAPPYN" value="">
<input type="hidden" name="LGD_WINDOW_TYPE" id="LGD_WINDOW_TYPE" value="">
<input type="hidden" name="LGD_CUSTOM_USABLEPAY" id="LGD_CUSTOM_USABLEPAY" value="">
<input type="hidden" name="LGD_BUYER" id="LGD_BUYER" value="@Model.User.username">
<input type="hidden" name="LGD_PRODUCTINFO" id="LGD_PRODUCTINFO" value="@(Model.CM.cname.Replace(",", " "))">
<input type="hidden" name="LGD_BUYEREMAIL" id="LGD_BUYEREMAIL" value="@Model.User.email">
<!-- Xpay 결제 end -->
</form>
@section scriptsHeader{
<style type="text/css">
.hide{display: none;}
</style>
}
<script type="text/javascript">
$(document).ready(function () {
$("input[name='ptype']").on("change", function () {
$("#cashbox").hide();
if ($(this).val() == 3) {
$("#cashbox").show();
}
});
$("input[name='iscashrct']").on("change", function () {
if ($(this).val() == 1) {
$(".cashnot").removeClass("hide");
} else {
$(".cashnot").addClass("hide");
}
});
});
function save() {
$("#cashrcthp").val("");
if ($("input[name='ptype']:checked").length > 0 && $("input[name='ptype']:checked").val() == 1) {
$("#pay0201").prop("checked", true);
} else if ($("input[name='ptype']:checked").length > 0 && $("input[name='ptype']:checked").val() == 3 && $("input[name='iscashrct']:checked").length == 1 && $("input[name='iscashrct']:checked").val() == 1) {
$("#cashrcthp").val($("#hp1").val() + $("#hp2").val() + $("#hp3").val());
}
if ($("input[name='ptype']:checked").length < 1) {
msg("결제방법을 선택해주세요.");
} else if ($("input[name='ptype']:checked").val() == 3 && $("input[name='iscashrct']:checked").length < 1) {
msg("현금영수증 발행여부를 선택해주세요.");
} else if ($("input[name='ptype']:checked").val() == 3 && $("input[name='iscashrct']:checked").val() == 1 && !ismobilenumber($("#cashrcthp").val())) {
msg("현금영수증 발행 핸드폰번호를 올바르게 입력해주세요.");
} else {
cap("/fcommon/paystart", "mform", "cbsave");
}
}
function cbsave() {
if (capResult.code == 1000) {
if (capResult.obj == 0) {
var resultmsg = capResult.msg;
if (resultmsg.indexOf("buyertel")) {
msg("개인정보에 휴대폰 번호를 입력해주세요.");
} else {
msg(capResult.msg);
}
}
else {
if (capResult.obj.ptype == 6 || capResult.obj.ptype == 7) {
location.href = "@Model.viewname4?payno=" + capResult.obj.payno + "&absptype=" + capResult.obj.ptype;
}
else {
setv("LGD_OID", capResult.obj.oid2 + capResult.obj.payno);
setv("LGD_CLOSEDATE", capResult.obj.paylimityyyyMMddHHmmss);
setv("LGD_AMOUNT", capResult.obj.payamt);
setv("LGD_OSTYPE_CHECK", ismobile() ? "M" : "P");
setv("LGD_CUSTOM_SWITCHINGTYPE", ismobile() ? "SUBMIT" : "IFRAME");
setv("LGD_VERSION", ismobile() ? "ASPNET_Non-ActiveX_SmartXPay" : "ASPNET_Non-ActiveX_Standard");
setv("LGD_CUSTOM_SKIN", ismobile() ? "SMART_XPAY2" : "red");
var paymentMethod = $(':radio[name="ptype"]:checked').val() == 1 ? "SC0010" : $(':radio[name="ptype"]:checked').val() == 2 ? "SC0030" : $(':radio[name="ptype"]:checked').val() == 3 ? "SC0040" : "-";
if (ismobile()) {
setv("CST_WINDOW_TYPE", "submit");
setv("LGD_PCVIEWYN", "N");
setv("LGD_CUSTOM_FIRSTPAY", paymentMethod);
setv("LGD_KVPMISPAUTOAPPYN", checkMobile());
setv("LGD_MTRANSFERAUTOAPPYN", checkMobile());
} else {
setv("LGD_WINDOW_TYPE", "iframe");
setv("LGD_CUSTOM_USABLEPAY", paymentMethod);
}
document.getElementById('mform').submit();
}
}
} else {
msgadmin();
}
}
</script>

View File

@ -0,0 +1,61 @@
@model NP.Model.VMPay
@if (ViewBag.isPayTest == "1")
{
//테스트일 경우
<script language="javascript" src="https://pretest.tosspayments.com:9443/xpay/js/xpay_crossplatform.js" type="text/javascript"></script>
}
else
{
//서비스일 경우
<script language="javascript" src="https://xpayvvip.tosspayments.com/xpay/js/xpay_crossplatform.js" type="text/javascript"></script>
}
<br />
<div style="border: 1px solid #ddd; color: red; font-weight: bold; font-size: 13px; text-align: center; padding: 15px;">결제 진행중입니다. 잠시만 기다려주세요.</div>
<br />
<form method="post" id="LGD_PAYINFO" action="">
@foreach (System.Collections.DictionaryEntry data in Model.payParams)
{
<input type="hidden" name="@data.Key" id="@data.Key" value="@data.Value" /><br />
@*@(data.Key + "-" + data.Value)*@
}
</form>
<script>
$(function () {
launchCrossPlatform();
});
/* 수정불가 */
function launchCrossPlatform() {
if (ismobile()) {
lgdwin = open_paymentwindow(document.getElementById('LGD_PAYINFO'), val("CST_PLATFORM"), val("CST_WINDOW_TYPE"));
} else {
lgdwin = openXpay(document.getElementById('LGD_PAYINFO'), val("CST_PLATFORM"), val("LGD_WINDOW_TYPE"), null, "", "");
}
}
/* FORM 명만 수정 가능 */
function getFormObject() {
return document.getElementById("LGD_PAYINFO");
}
/* 인증결과 처리 */
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;
document.getElementById("LGD_PAYINFO").action = "/Course/OnPayReturn";
document.getElementById("LGD_PAYINFO").submit();
}
else {
document.getElementById("rsMsg").value = fDoc.document.getElementById('rsMsg').value;
document.getElementById("LGD_PAYINFO").action = "/Course/PayOn";
closeIframe();
document.getElementById("LGD_PAYINFO").submit();
}
}
</script>

View File

@ -0,0 +1,41 @@
@{
Layout = null;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<script type="text/javascript" src="/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="/js/site.js"></script>
<script type="text/javascript">
function setLGDResult() {
if (ismobile()) {
document.getElementById('LGD_PAYINFO').submit();
} else {
parent.payment_return();
}
try {
} catch (e) {
alert(e.message);
}
}
</script>
</head>
<body onload="setLGDResult()">
<br />
<div style="border: 1px solid #ddd; color: red; font-weight: bold; font-size: 13px; text-align: center; padding: 15px;">결제 진행중입니다. 잠시만 기다려주세요.</div>
<br />
<form method="post" name="LGD_PAYINFO" id="LGD_PAYINFO" action="/Course/OnPayReturn">
@if (Model.payParams != null)
{
foreach (System.Collections.DictionaryEntry data in Model.payParams)
{
<input type="hidden" name="@data.Key" id="@data.Key" value="@data.Value" /><br />
}
}
</form>
</body>
</html>

View File

@ -44,7 +44,7 @@
<add key="thumbnailexe" value="D:\\dev_tool\\ffmpeg.exe" />
<!--개발자pc결제테스트를 위한 서브도메인 무효화 변수-->
<add key="ispaytest" value="0" />
<add key="ispaytest" value="1" />
<add key="isdevtest" value="0" />
<add key="deliveramt" value="2500" />
<!--0:pc결제 url | 1:mid | 2:hashed signkey | 3:취소모듈비밀번호 | 4:거래번호앞두자리-->
@ -58,6 +58,25 @@
<!--<add key="pginfomobile" value="https://edu.kfcf.or.kr|/Account/PayVBankMoneyMobile" />-->
<add key="pgroot" value="D:\INIpay50_ASP" />
<!-- 토스페이먼츠(구LG Xpay) 결제 시작 -->
<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="https://kdh.nptc.kr:8082/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" />
<!-- 토스페이먼츠(구LG Xpay) 결제 종료 -->
</appSettings>
<!-- to see logging output in the attached debugger -->
<common>
@ -112,7 +131,8 @@
<!--<sessionState cookieless="UseCookies" regenerateExpiredSessionId="false" mode="StateServer" compressionEnabled="true" stateConnectionString="tcpip=localhost:42424" timeout="10" cookieName="tssc" />-->
<sessionState cookieless="UseCookies" cookieName="kfcf" mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="60" />
<!--<sessionState cookieless="UseCookies" cookieName="kfcf" mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="60" />-->
<sessionState cookieless="UseCookies" cookieName="yicte" mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="60" />
<!--<sessionState cookieless="UseCookies" cookieName="kfcff" mode="Off" stateConnectionString="tcpip=xxx.xxx.xxx:42424" timeout="60" />-->

View File

@ -209,6 +209,9 @@ namespace NP.Model
public int exno { get; set; }
public long rfdno { get; set; }
public int iscanceled { get; set; }
public int iscashrct { get; set; }
public String cashrcthp { get; set; }
}
public class PayItem : BaseModel
@ -457,6 +460,9 @@ namespace NP.Model
return sstime.ToString("yyyy-MM-dd") + " ~ " + setime.ToString("yyyy-MM-dd");
}
}
public String rbank { get; set; }
public String rbankaccnum{ get; set; }
public String tbankuser{ get; set; }
}
/// <summary>

View File

@ -49,5 +49,6 @@ namespace NP.Model
public Int64 pplno { get; set; }
public Int64 payno { get; set; }
public PayItem PayItem { get; set; }
public PPLog PPLog { get; set; }
}
}

View File

@ -52,6 +52,10 @@ namespace NP.Model
public IList<PayCart> PayCarts { get; set; }
public int isexamready { get; set; }
public int userno { get; set; }
public Int64 pplno { get; set; }
public PPLog PPLog { get; set; }
public int iscashrct { get; set; }
public String cashrcthp { get; set; }
public System.Collections.Hashtable payParams { get; set; }
}
}