using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using XPayClientNet; using JsonFx.Json; public partial class payres : System.Web.UI.Page { protected String configPath; //ȯ°æÆÄÀÏ À§Ä¡ protected String CST_PLATFORM; protected String CST_MID; protected String LGD_MID; protected String LGD_PAYKEY; protected String DB_AMOUNT; //DB³ª ¼¼¼Ç¿¡¼­ °¡Á®¿Â ±Ý¾× (ÃÖÁ¾ °áÁ¦±Ý¾×üũ½Ã »ç¿ë) //MMSó¸® Ç׸ñ protected String MM_OID; //û±¸ID (20ÀÚ¸®) CREATE_GB+CREATEDATE+CREATE_SEQ+COMPCODE protected String MM_COMPCODE; //ÇнÀ°üÄÚµå protected String MM_MEMNO; //ȸ¿øÄÚµå protected String MM_MID_GB; //ºÐÇÒÁ¤»ê »ç¾÷À屸ºÐ : ¨çº»»ç(»óǰ,´ë³³½Ã):1, ¨èÇнÀ°ü:2, ¨éºÐÇÒÁ¤»ê:3 protected String MM_INSTEAD_PAY_YN; //ÇнÀ°ü¿¡¼­ ´ë³³½Ã¿¡¸¸ »ç¿ë ±âº»°ª : N, ´ë³³½Ã: Y protected String MM_ROW_INPUT_IP; //Á¢¼ÓÀÚ IPÁ¤º¸ protected string MM_SAVEAMT; //Àû¸³±Ý »ç¿ë protected string MM_BOOKAMT; //±³Àç°áÁ¦±Ý¾× protected void Page_Load(object sender, EventArgs e) { /* ¡Ø Áß¿ä * ȯ°æ¼³Á¤ ÆÄÀÏÀÇ °æ¿ì ¹Ýµå½Ã ¿ÜºÎ¿¡¼­ Á¢±ÙÀÌ °¡´ÉÇÑ °æ·Î¿¡ µÎ½Ã¸é ¾ÈµË´Ï´Ù. * ÇØ´ç ȯ°æÆÄÀÏÀÌ ¿ÜºÎ¿¡ ³ëÃâÀÌ µÇ´Â °æ¿ì ÇØÅ·ÀÇ À§ÇèÀÌ Á¸ÀçÇϹǷΠ¹Ýµå½Ã ¿ÜºÎ¿¡¼­ Á¢±ÙÀÌ ºÒ°¡´ÉÇÑ °æ·Î¿¡ µÎ½Ã±â ¹Ù¶ø´Ï´Ù. * ¿¹) [Window °è¿­] C:\inetpub\wwwroot\lgdacom ==> Àý´ëºÒ°¡(À¥ µð·ºÅ丮) */ XPayClient xpay = new XPayClient(); try { if (!IsPostBack) { configPath = "C:\\lgdacom"; //LGÀ¯Ç÷¯½º¿¡¼­ Á¦°øÇÑ È¯°æÆÄÀÏ À§Ä¡¸¦ ÁöÁ¤ÇØ ÁÖ¼¼¿ä. /* * [ÃÖÁ¾°áÁ¦¿äû ÆäÀÌÁö(STEP2-2)] * * ¸Å´º¾ó "5.1. Smart XPay °áÁ¦ ¿äû ÆäÀÌÁö °³¹ß"ÀÇ "´Ü°è 5. ÃÖÁ¾ °áÁ¦ ¿äû ¹× ¿äû °á°ú ó¸®" ÂüÁ¶ * LGÀ¯Ç÷¯½ºÀ¸·Î ºÎÅÍ ³»·Á¹ÞÀº LGD_PAYKEY(ÀÎÁõKey)¸¦ °¡Áö°í ÃÖÁ¾ °áÁ¦¿äû.(ÆÄ¶ó¹ÌÅÍ Àü´Þ½Ã POST¸¦ »ç¿ëÇϼ¼¿ä) */ /* ************************************************* * 1.ÃÖÁ¾°áÁ¦ ¿äû(¼öÁ¤ÇÏÁö ¸¶¼¼¿ä) - BEGIN * (´Ü, ÃÖÁ¾ ±Ý¾×üũ¸¦ ¿øÇϽô °æ¿ì ±Ý¾×üũ ºÎºÐ ÁÖ¼®À» Á¦°Å ÇÏ½Ã¸é µË´Ï´Ù.) ************************************************* */ MM_OID = Request.Params.Get("MM_OID"); MM_COMPCODE = Request.Params.Get("MM_COMPCODE"); MM_MEMNO = Request.Params.Get("MM_MEMNO"); MM_MID_GB = Request.Params.Get("MM_MID_GB"); MM_INSTEAD_PAY_YN = Request.Params.Get("MM_INSTEAD_PAY_YN"); MM_SAVEAMT = Request.Params.Get("MM_SAVEAMT"); MM_BOOKAMT = Request.Params.Get("MM_BOOKAMT"); //MM_ROW_INPUT_IP = Request.Params.Get("MM_ROW_INPUT_IP"); CST_PLATFORM = CodeHelper.RequestStr(Request.Params.Get("CST_PLATFORM"), Request.Url.Host == "mms.moumou.co.kr" ? "service" : "test"); CST_MID = Request.Params.Get("CST_MID"); LGD_MID = (("test".Equals(CST_PLATFORM.Trim())) ? "t" : "") + CST_MID; LGD_PAYKEY = Request.Params.Get("LGD_PAYKEY"); DB_AMOUNT = Request.Params.Get("LGD_AMOUNT"); //¹Ýµå½Ã À§º¯Á¶°¡ ºÒ°¡´ÉÇÑ °÷(DB³ª ¼¼¼Ç)¿¡¼­ ±Ý¾×À» °¡Á®¿À½Ê½Ã¿ä. // (1) XpayClientÀÇ »ç¿ëÀ» À§ÇÑ xpay °´Ã¼ »ý¼º // (2) Init: XPayClient ÃʱâÈ­(ȯ°æ¼³Á¤ ÆÄÀÏ ·Îµå) // configPath: ¼³Á¤ÆÄÀÏ // CST_PLATFORM: - test, service °ª¿¡ µû¶ó lgdacom.confÀÇ test_url(test) ¶Ç´Â url(srvice) »ç¿ë // - test, service °ª¿¡ µû¶ó Å×½ºÆ®¿ë ¶Ç´Â ¼­ºñ½º¿ë ¾ÆÀ̵ð »ý¼º xpay.Init(configPath, CST_PLATFORM); try { // (3) Init_TX: ¸Þ¸ð¸®¿¡ mall.conf, lgdacom.conf ÇÒ´ç ¹× Æ®·£Àè¼ÇÀÇ °íÀ¯ÇÑ Å° TXID »ý¼º xpay.Init_TX(LGD_MID); xpay.Set("LGD_TXNAME", "PaymentByKey"); xpay.Set("LGD_PAYKEY", LGD_PAYKEY); //±Ý¾×À» üũÇϽñ⠿øÇÏ´Â °æ¿ì ¾Æ·¡ ÁÖ¼®À» Ç®¾î¼­ ÀÌ¿ëÇϽʽÿä. xpay.Set("LGD_AMOUNTCHECKYN", "Y"); xpay.Set("LGD_AMOUNT", DB_AMOUNT); } catch (Exception err) { // LG U+ API »ç¿ë ºÒ°¡, ¼³Á¤ÆÄÀÏ È®ÀÎ µî ÇÊ¿ä(¿¹¿Üó¸®) Response.Write("ȯ°æÆÄÀÏÀÇ °æ·Î°¡ À߸ø µÇ¾ú½À´Ï´Ù. configPathÀÇ °æ·Î¸¦ È®ÀÎÇØ Áֽñ⠹ٶø´Ï´Ù."); Response.Write(err.Message); return; } /* ************************************************* * 1.ÃÖÁ¾°áÁ¦ ¿äû(¼öÁ¤ÇÏÁö ¸¶¼¼¿ä) - END ************************************************* */ /* * 2. ÃÖÁ¾°áÁ¦ ¿äû °á°ú ó¸® * * ÃÖÁ¾ °áÁ¦¿äû °á°ú ¸®ÅÏ ÆÄ¶ó¹ÌÅÍ´Â ¿¬µ¿¸Þ´º¾óÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù. */ // (4) TX: lgdacom.conf¿¡ ¼³Á¤µÈ URL·Î ¼ÒÄÏ Åë½ÅÇÏ¿© ÃÖÁ¾ ÀÎÁõ¿äû, °á°ú°ªÀ¸·Î true, false ¸®ÅÏ Account_BLL bll = new Account_BLL(); Tablet_BLL bll2 = new Tablet_BLL(); if (xpay.TX()) { if (Request.Url.Host != "mms.moumou.co.kr") { //1)°áÁ¦°á°ú È­¸éó¸®(¼º°ø,½ÇÆÐ °á°ú 󸮸¦ ÇϽñ⠹ٶø´Ï´Ù. Response.Write("°áÁ¦¿äûÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù.
"); Response.Write("TX Response_code : " + xpay.m_szResCode + "
"); //Åë½Å ÀÀ´äÄÚµå("0000" ÀÏ ¶§ Åë½Å ¼º°ø) Response.Write("TX Response_msg : " + xpay.m_szResMsg + "

"); Response.Write("°Å·¡¹øÈ£ : " + xpay.Response("LGD_TID", 0) + "
"); Response.Write("»óÁ¡¾ÆÀ̵ð : " + xpay.Response("LGD_MID", 0) + "
"); Response.Write("»óÁ¡ÁÖ¹®¹øÈ£ : " + xpay.Response("LGD_OID", 0) + "
"); Response.Write("°áÁ¦±Ý¾× : " + xpay.Response("LGD_AMOUNT", 0) + "
"); Response.Write("°á°úÄÚµå : " + xpay.Response("LGD_RESPCODE", 0) + "
"); //LGD_RESPCODE °áÁ¦¿äû ÀÀ´äÄÚµå Response.Write("°á°ú¸Þ¼¼Áö : " + xpay.Response("LGD_RESPMSG", 0) + "

"); Response.Write("ÁÖ¹®¹øÈ£: " + MM_OID + "
"); Response.Write("Àû¸³±Ý:" + MM_SAVEAMT + "
"); Response.Write("[°áÁ¦¿äû °á°ú ÆÄ¶ó¹ÌÅÍ]
"); } String response = ""; for (int i = 0; i < xpay.ResponseCount(); i++) { for (int j = 0; j < xpay.ResponseNameCount(); j++) { response += xpay.ResponseName(j) + " : "; response += xpay.Response(xpay.ResponseName(j), i) + "
"; } } //Response.Write(response); // (5) DB¿¡ ¿äû °á°ú ó¸® if ("0000".Equals(xpay.m_szResCode)) { // Åë½Å»óÀÇ ¹®Á¦°¡ ¾øÀ»½Ã // ÃÖÁ¾°áÁ¦¿äû °á°ú ¼º°ø DBó¸®(LGD_RESPCODE °ª¿¡ µû¶ó °áÁ¦°¡ ¼º°øÀÎÁö, ½ÇÆÐÀÎÁö DBó¸®) //Response.Write("ÃÖÁ¾°áÁ¦¿äû °á°ú ¼º°ø DBó¸®ÇϽñ⠹ٶø´Ï´Ù.
"); //DBó¸® ±¸Çö ºÎºÐ(¹«¹«) //½Å°áÁ¦ > üũ > ÁÖ¹®¼­ »ý¼º ParentsApp_DAL dal = new ParentsApp_DAL(); int res = dal.SelectOrderCnt(MM_OID, MM_COMPCODE, MM_MEMNO); if (res == 0) { XDataPacket dp2 = new XDataPacket(); dp2.Add("IN_COMPCODE", MM_COMPCODE); dp2.Add("IN_MEMNO", MM_MEMNO); dp2.Add("IN_ORDER_CNT", DBNull.Value); dp2.Add("IN_PAY_MONTHS", DBNull.Value); dp2.Add("IN_BOOK_AMT", DBNull.Value); dp2.Add("IN_STUDY_AMT", DBNull.Value); dp2.Add("IN_ORDER_KEY", MM_OID); dp2.Add("OUT_ORDER_KEY", DBNull.Value); dal.AddOrder(dp2); } string lgd_payType = xpay.Response("LGD_PAYTYPE", 0); XDataPacket dp = new XDataPacket(); dp.Add("ERROR_CODE", DBNull.Value); dp.Add("ERROR_VALUE", DBNull.Value); dp.Add("IN_MM_ORDER_KEY", MM_OID); dp.Add("IN_MM_MID_GB", MM_MID_GB);//Á¤»ê´ë»ó±¸ºÐ (º»»ç:1, ÇнÀ°ü:2, ºÐÇÒÁ¤»ê:3) dp.Add("IN_MM_PAY_GB", "1");//°áÁ¦±¸ºÐ(1:°áÁ¦,2:Ãë¼Ò,3:Ä«µåȯºÒ,4:Çö±Ý°áÁ¦) dp.Add("IN_PAY_REQUEST_NO", xpay.Response("LGD_OID", 0)); dp.Add("IN_PAY_CONFIRM_NO", xpay.Response("LGD_TID", 0)); dp.Add("IN_PAY_DATE", xpay.Response("LGD_PAYDATE", 0)); dp.Add("IN_PAY_TOOL", CodeHelper.GetPayType(lgd_payType)); dp.Add("IN_INSTEAD_PAY_YN", MM_INSTEAD_PAY_YN); dp.Add("IN_PAY_CANCEL_AMT", xpay.Response("LGD_AMOUNT", 0));//Ãë¼Ò±Ý¾×, °áÁ¦½Ã »ç¿ëÇÏÁö ¾ÊÀ½ dp.Add("IN_CASH_RECEIPT_YN", "N"); //ÀÛ¾÷¿¹Á¤(Çö±Ý¿µÁÖÁõ¹ßÇà¿©ºÎ) dp.Add("IN_COMPANY_CODE", lgd_payType == "SC0010" ? xpay.Response("LGD_CARDACQUIRER", 0) : xpay.Response("LGD_FINANCECODE", 0)); //°áÁ¦±â°üÄÚµå dp.Add("IN_ACCOUNT_NO", xpay.Response("LGD_ACCOUNTNUM", 0)); //°¡»ó°èÁ dp.Add("IN_ROW_INPUT_IP", MM_ROW_INPUT_IP); // 1.Àû¸³±Ý ¾÷µ¥ÀÌÆ® ó¸® (ù¹øÂ° ÁÖ¹®¼­¿¡ ´ëÇØ¼­¸¸ Àû¸³±Ý Àû¿ë) - 2016.05.16 ¼ÛÁÖÇå // 2.°áÁ¦Á¤º¸ DBó¸® (¿¡·¯¸Þ¼¼Áö ¹Ýȯ) int saveresult; string result = ""; Boolean isDBOK = false; // ±³ÀçºÎºÐ¸¸ ó¸® // Àû¸³±Ý ó¸® if (MM_OID.Substring(0, 1) == "1") { saveresult = dal.UpdateSaveAmt(MM_SAVEAMT, MM_BOOKAMT, MM_OID.Substring(0, 20)); } result = bll.AddOnlinePayment(dp); //±³Àç ºÎºÐ¸¸ ó¸® if (MM_OID.Substring(0, 1) == "1") { // 2016.05.30 Çкθð¾Û°áÁ¦°ÇÀÇ °æ¿ì payment¿¡ system_gb='E' ·Î ¾÷µ¥ÀÌÆ® ó¸®ÇÑ´Ù. bll.SetOnlineSystemGB(MM_OID.Substring(0, 20)); } //ÃÖÁ¾°áÁ¦¿äû °á°ú¸¦ DBó¸®ÇÕ´Ï´Ù. (°áÁ¦¼º°ø ¶Ç´Â ½ÇÆÐ ¸ðµÎ DBó¸® °¡´É) //»óÁ¡³» DB¿¡ ¾î¶°ÇÑ ÀÌÀ¯·Î 󸮸¦ ÇÏÁö ¸øÇѰæ¿ì false·Î º¯°æÇØ ÁÖ¼¼¿ä. isDBOK = string.IsNullOrEmpty(result); //DBó¸® ½ÇÆÐ½Ã false·Î º¯°æÇØ ÁÖ¼¼¿ä. if (!isDBOK) { xpay.Rollback("»óÁ¡ DBó¸® ½ÇÆÐ·Î ÀÎÇÏ¿© Rollback ó¸® [TID:" + xpay.Response("LGD_TID", 0) + ",MID:" + xpay.Response("LGD_MID", 0) + ",OID:" + xpay.Response("LGD_OID", 0) + "]"); //Response.Write("TX Rollback Response_code = " + xpay.Response("LGD_RESPCODE", 0) + "
"); //Response.Write("TX Rollback Response_msg = " + xpay.Response("LGD_RESPMSG", 0) + "

"); ShowErrorResult(xpay.m_szResCode, result, xpay.Response("LGD_PAYTYPE", 0)); if ("0000".Equals(xpay.m_szResCode)) { Response.Write("ÀÚµ¿Ãë¼Ò°¡ Á¤»óÀûÀ¸·Î ¿Ï·á µÇ¾ú½À´Ï´Ù.
"); } else { Response.Write("ÀÚµ¿Ãë¼Ò°¡ Á¤»óÀûÀ¸·Î 󸮵ÇÁö ¾Ê¾Ò½À´Ï´Ù.
"); } } else { //ÇҺΰ³¿ù ¾÷µ¥ÀÌÆ® ó¸® bll2.UpdatePayMonth(xpay.Response("LGD_CARDINSTALLMONTH", 0), MM_OID); } } else { //ÃÖÁ¾°áÁ¦¿äû °á°ú ½ÇÆÐ DBó¸® //Response.Write("ÃÖÁ¾°áÁ¦¿äû °á°ú ½ÇÆÐ DBó¸®ÇϽñ⠹ٶø´Ï´Ù.
"); // DBó¸® ±¸Çö ºÎºÐ(¹«¹«) //ShowErrorResult(xpay.m_szResCode, xpay.m_szResMsg, xpay.Response("LGD_PAYTYPE", 0)); CodeHelper.AddOnlinePaymentError(xpay.Response("LGD_OID", 0), xpay.m_szResCode, xpay.m_szResMsg); } } else { //2)API ¿äû½ÇÆÐ È­¸éó¸® //Response.Write("°áÁ¦¿äûÀÌ ½ÇÆÐ ÇÏ¿´½À´Ï´Ù.
"); //Response.Write("TX Response_code : " + xpay.m_szResCode + "
"); //Response.Write("TX Response_msg : " + xpay.m_szResMsg + "
"); ShowErrorResult(xpay.m_szResCode, xpay.m_szResMsg, xpay.Response("LGD_PAYTYPE", 0)); //DB ó¸® ±¸Çö ºÎºÐ(¹«¹«) CodeHelper.AddOnlinePaymentError(xpay.Response("LGD_OID", 0), xpay.m_szResCode, xpay.m_szResMsg); } //È­¸é¼³Á¤(ÁÖ¹®³»¿ª) lblLGD_BUYER.Text = Request.Params.Get("LGD_BUYER"); lblLGD_PRODUCTINFO.Text = Request.Params.Get("LGD_PRODUCTINFO"); lblLGD_AMOUNT.Text = Request.Params.Get("LGD_AMOUNT"); int amt = CodeHelper.RequestInt(lblLGD_AMOUNT.Text, 0); lblLGD_AMOUNT.Text = string.Format(@"{0:###,###}¿ø", amt); lblLGD_OID.Text = Request.Params.Get("LGD_OID"); //È­¸é¼³Á¤(°áÁ¦³»¿ª) string payType = CodeHelper.GetPayType(xpay.Response("LGD_PAYTYPE", 0), true); //lblLGD_PAYTYPE.Text = string.Format("{0} (°áÁ¦{1})", payType, Request.Params.Get("LGD_RESPCODE")); lblLGD_PAYTYPE.Text = string.Format("{0} (°áÁ¦¿Ï·á)", payType); lblLGD_FINANCENAME.Text = xpay.Response("LGD_FINANCENAME", 0); lblLGD_ACCOUNTNUM.Text = CodeHelper.RequestStr(xpay.Response("LGD_CARDNUM", 0), xpay.Response("LGD_ACCOUNTNUM", 0)); string payDate = xpay.Response("LGD_PAYDATE", 0); if (payDate.Length == 14) lblLGD_PAYDATE.Text = string.Format("{0}-{1}-{2} {3}:{4}:{5}", payDate.Substring(0, 4), payDate.Substring(4, 2), payDate.Substring(6, 2), payDate.Substring(8, 2), payDate.Substring(10, 2), payDate.Substring(12)); amt = CodeHelper.RequestInt(xpay.Response("LGD_AMOUNT", 0), 0); lblLGD_AMOUNT_PAY.Text = string.Format(@"{0:###,###}¿ø", amt); lblLGD_CARDINSTALLMONTH.Text = (xpay.Response("LGD_CARDINSTALLMONTH", 0) == "00") ? "ÀϽúÒ" : xpay.Response("LGD_CARDINSTALLMONTH", 0) + "°³¿ù"; } } catch (Exception ex) { string msg = string.Empty; xpay.Rollback("»óÁ¡ DBó¸® ½ÇÆÐ·Î ÀÎÇÏ¿© Rollback ó¸® [TID:" + xpay.Response("LGD_TID", 0) + ",MID:" + xpay.Response("LGD_MID", 0) + ",OID:" + xpay.Response("LGD_OID", 0) + "]"); msg = "MMS ½Ã½ºÅÛÀå¾Ö·Î ÀÎÇÏ¿© °áÁ¦Ãë¼Òó¸®"; if ("0000".Equals(xpay.m_szResCode)) { msg += "=> ÀÚµ¿Ãë¼Ò°¡ Á¤»óÀûÀ¸·Î ¿Ï·á µÇ¾ú½À´Ï´Ù.." + ex.Message; } else { msg += "=> ÀÚµ¿Ãë¼Ò°¡ Á¤»óÀûÀ¸·Î 󸮵ÇÁö ¾Ê¾Ò½À´Ï´Ù.."; } AppLog.WriteAppException(ex); ShowErrorResult(xpay.m_szResCode, msg, xpay.Response("LGD_PAYTYPE", 0)); } } ///

/// ¿¡·¯Ã³¸® È­¸éó¸® /// /// ¿¡·¯ÄÚµå /// ¿¡·¯¸Þ¼¼Áö /// °áÁ¦¹æ½Ä private void ShowErrorResult(string errCode, string errMsg, string payType) { pnlOK.Visible = false; pnlErr.Visible = true; payType = CodeHelper.GetPayType(payType, true); lblLGD_PAYTYPE_Err.Text = string.Format("{0} (°áÁ¦½ÇÆÐ)", payType); lblErrMsg.Text = string.Format("[¿¡·¯ÄÚµå:{0}]{1}", errCode, errMsg); } }