예제 #1
0
        // 구매시 구매 리스트 정보 생성(return 값은 주문 번호)
        public int PostInsertPurchaseListToID(SH_Pur_Delivery delivery, IMP_RValue rvalue, string p_p_point, string p_id, string p_isuser) // 유저 아이디 , 비회원 회원 상태 확인
        {
            var          dataString  = JsonConvert.SerializeObject(delivery);
            JObject      jo          = JObject.Parse(dataString);
            var          dataString2 = JsonConvert.SerializeObject(rvalue);
            JObject      jo2         = JObject.Parse(dataString2);
            UTF8Encoding encoder     = new UTF8Encoding();

            int    result = -1;
            string str    = @"{";

            str += "delivery:" + jo.ToString();
            str += ",rvalue:" + jo2.ToString();
            str += ",p_p_point:'" + p_p_point;
            str += "',p_id:'" + p_id;
            str += "',p_isuser:'******'}";

            JObject jo3 = JObject.Parse(str);

            byte[] data = encoder.GetBytes(jo3.ToString()); // a json object, or xml, whatever...

            HttpWebRequest request = WebRequest.Create(Global.WCFURL + "SH_InsertPurchaseListToID") as HttpWebRequest;

            request.Method        = "POST";
            request.ContentType   = "application/json";
            request.ContentLength = data.Length;

            request.GetRequestStream().Write(data, 0, data.Length);

            try
            {
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
                    }
                    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                    {
                        // readdata
                        var readdata = reader.ReadToEnd();
                        result = JsonConvert.DeserializeObject <int>(readdata);
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
                return(result);
            }
        }
예제 #2
0
        // 포인트 충전 및 적립되는 프로시저
        public bool PostInsertPointChargeToID(IMP_RValue rvalue, string pl_index)
        {
            var          dataString = JsonConvert.SerializeObject(rvalue);
            JObject      jo         = JObject.Parse(dataString);
            UTF8Encoding encoder    = new UTF8Encoding();

            bool   isbool = false;
            string str    = @"{";

            str += "rvalue:" + jo.ToString();
            str += ",pl_index:'" + pl_index;
            str += "'}";

            JObject jo2 = JObject.Parse(str);

            byte[] data = encoder.GetBytes(jo2.ToString()); // a json object, or xml, whatever...

            HttpWebRequest request = WebRequest.Create(Global.WCFURL + "PT_InsertPointChargeToID") as HttpWebRequest;

            request.Method        = "POST";
            request.ContentType   = "application/json";
            request.ContentLength = data.Length;

            request.GetRequestStream().Write(data, 0, data.Length);


            try
            {
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
                    }
                    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                    {
                        // readdata
                        var readdata = reader.ReadToEnd();
                        isbool = JsonConvert.DeserializeObject <bool>(readdata);
                    }
                }
                return(isbool);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
                return(isbool);
            }
        }
        // 주문 내역을 가져옴
        public void GetOrderInfo(string imp_uid)
        {
            HttpWebRequest request = WebRequest.Create("https://api.iamport.kr/payments/" + imp_uid + "?_token=" + token) as HttpWebRequest;

            request.Method = "GET";

            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
                }
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    var readdata = reader.ReadToEnd();
                    // 결제 신청 후 파라미터값 확인
                    var     test      = JsonConvert.DeserializeObject(readdata);
                    JObject applyJObj = JObject.Parse(test.ToString());
                    imp_rvalue = new IMP_RValue
                    {
                        SH_IMP_UID        = applyJObj["response"]["imp_uid"].ToString(),
                        SH_MERCHANT_UID   = applyJObj["response"]["merchant_uid"].ToString(),
                        SH_PAY_METHOD     = applyJObj["response"]["pay_method"].ToString(),
                        SH_BANK_NAME      = applyJObj["response"]["bank_name"].ToString(),
                        SH_CARD_NAME      = applyJObj["response"]["card_name"].ToString(),
                        SH_NAME           = applyJObj["response"]["name"].ToString(),
                        SH_AMOUNT         = applyJObj["response"]["amount"].ToString(),
                        SH_BUYER_NAME     = applyJObj["response"]["buyer_name"].ToString(),
                        SH_BUYER_EMAIL    = applyJObj["response"]["buyer_email"].ToString(),
                        SH_BUYER_TEL      = applyJObj["response"]["buyer_tel"].ToString(),
                        SH_BUYER_ADDR     = applyJObj["response"]["buyer_addr"].ToString(),
                        SH_BUYER_POSTCODE = applyJObj["response"]["buyer_postcode"].ToString(),
                        SH_STATUS         = applyJObj["response"]["status"].ToString(), // ready(미결제), paid(결제완료), cancelled(결제취소, 부분취소포함), failed(결제실패)
                    };
                    //string test = JsonConvert.DeserializeObject<string>(readdata);
                }
            }
        }
        public async void PurchaseSuccessProcessAsync(IMP_RValue rvalue) // 결제가 진행되었을 경우
        {
            #region 네트워크 상태 확인
            var current_network = Connectivity.NetworkAccess; // 현재 네트워크 상태
            if (current_network != NetworkAccess.Internet)    // 네트워크 연결 불가
            {
                await App.Current.MainPage.DisplayAlert("알림", "네트워크에 연결할 수 없습니다. 고객센터에 문의해주세요.", "확인");

                return;
            }
            #endregion
            #region 네트워크 연결 가능
            else
            {
                // ready(미결제), paid(결제완료), cancelled(결제취소, 부분취소포함), failed(결제실패)
                if (rvalue.SH_STATUS == "paid")                                                         // 결제 완료 상태라면 포인트 페이지에서 결제 진행
                {
                    if (PT_DB.PostInsertPointChargeToID(rvalue, pp.PT_POINT_INDEX.ToString()) == false) // 포인트 인덱스
                    {
                        await App.Current.MainPage.DisplayAlert("알림", "포인트 충전에 실패했습니다. 다시 한번 시도해주십시오.", "확인");

                        return;
                    }
                }
                else
                {
                    await App.Current.MainPage.DisplayAlert("알림", "포인트 충전에 실패했습니다. 다시 한번 시도해주십시오.", "확인");

                    return;
                }
                await App.Current.MainPage.DisplayAlert("알림", "포인트 충전에 성공했습니다.", "확인");

                await Navigation.PopAsync();
            }
            #endregion
        }
        private async void ConfirmBtn_ClickedAsync(object sender, EventArgs e)
        {
            if (Global.b_guest_login == true)
            {
                await App.Current.MainPage.DisplayAlert("알림", "회원 가입 후에 이용해주세요!.", "확인");

                return;
            }
            if (payOption == "Card")
            {
                if (account_picker.SelectedIndex == -1)
                {
                    await App.Current.MainPage.DisplayAlert("알림", "결제 카드가 선택되지 않았습니다.", "확인");

                    return;
                }
                if (priceEntry.Text == "")
                {
                    await App.Current.MainPage.DisplayAlert("알림", "충전 금액이 입력되지 않았습니다.", "확인");

                    return;
                }

                IMPParam param = new IMPParam
                {
                    pg             = "inicis",
                    pay_method     = "card",
                    merchant_uid   = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss"),
                    name           = "포인트 충전 " + int.Parse(priceEntry.Text).ToString("N0"),
                    amount         = int.Parse(priceEntry.Text),
                    buyer_email    = Global.user.EMAIL /*이메일*/,
                    buyer_name     = Global.ID /*아이디*/,
                    buyer_tel      = Global.user.PHONENUM /*휴대폰번호*/,
                    buyer_addr     = Global.adress.ROADADDR /*배송지*/,
                    buyer_postcode = Global.adress.ZIPNO.ToString()/*우편번호*/
                };

                IMP_RValue rvalue = new IMP_RValue
                {
                    SH_BUYER_EMAIL    = Global.user.EMAIL /*이메일*/,
                    SH_BUYER_NAME     = Global.ID /*아이디*/,
                    SH_BUYER_TEL      = Global.user.PHONENUM /*휴대폰번호*/,
                    SH_BUYER_ADDR     = Global.adress.ROADADDR /*배송지*/,
                    SH_BUYER_POSTCODE = Global.adress.ZIPNO.ToString() /*우편번호*/,
                    SH_PAY_METHOD     = "account", // 계좌이체(무통장입금)
                    //SH_MERCHANT_UID = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss"),
                    SH_NAME         = "포인트 충전 " + int.Parse(priceEntry.Text).ToString("N0"),
                    SH_AMOUNT       = priceEntry.Text /*충전포인트(입금금액)*/,
                    SH_STATUS       = "입금대기",
                    SH_POINT_INDEX  = pp.PT_POINT_INDEX.ToString(),                  // 포인트 인덱스
                    SH_BANK_ACC_NUM = (account_picker.SelectedIndex + 1).ToString(), // 등록된 계좌 넘버 저장
                    SH_FAIL_DETAIL  = "",                                            // 실패사유
                };
                #region 네트워크 상태 확인
                var current_network = Connectivity.NetworkAccess; // 현재 네트워크 상태
                if (current_network != NetworkAccess.Internet)    // 네트워크 연결 불가
                {
                    await App.Current.MainPage.DisplayAlert("알림", "네트워크에 연결할 수 없습니다. 다시 한번 시도해주세요.", "확인");

                    return;
                }
                #endregion
                #region 네트워크 연결 가능
                else
                {
                    if (PT_DB.PostInsertPointChargeToID(rvalue, pp.PT_POINT_INDEX.ToString()) == false)  // 포인트 인덱스
                    {
                        await App.Current.MainPage.DisplayAlert("알림", "포인트 충전에 실패했습니다. 다시 한번 시도해주십시오.", "확인");

                        return;
                    }
                    else
                    {
                        await App.Current.MainPage.DisplayAlert("알림", "포인트 충전에 성공했습니다.", "확인");

                        await Navigation.PopAsync();
                    }
                }
                #endregion

                //await Navigation.PushAsync(new IMPHybridWebView(param, this)); // PG사 연결
            }
        }
예제 #6
0
        public async void PurchaseSuccessProcessAsync(IMP_RValue rvalue) // 결제가 진행되었을 경우
        {
            int userCheck = 0;

            if (Global.b_user_login == true)
            {
                userCheck = 1;
            }
            else
            {
                userCheck = 2;                                                  // 회원상태 ( 1: 회원 2: 비회원)
            }
            // IMPParam으로 결제 신청한 뒤 돌아오는 리턴 값을 결제 내역 데이터베이스에 저장
            SH_Pur_Delivery delivery = new SH_Pur_Delivery
            {
                SH_PUR_DELIVERY_PAY    = DeliveryPrice /*배송비*/,
                SH_PUR_DELIVERY_OPTION = DeliveryOption,            /*선불착불*/
                SH_PUR_DELIVERY_DETAIL = MyDeliveryLabel.Text,      /*배송선택사항*/
                SH_PUR_DELIVERY_ADRESS = AdressLabel.Text,          /*배송지*/
                SH_PUR_DELIVERY_PHONE  = MyPhoneLabel.Text,         /*휴대폰번호*/
                SH_PUR_DELIVERY_STATE  = "상품준비중",                   /*배송상태*/
                SH_PUR_DELIVERY_NUMBER = "0",                       /*송장번호*/
                SH_PUR_DELIVERY_ZIPNO  = myAdress.ZIPNO.ToString(), /*우편번호*/
            };


            int OrderIndex = SH_DB.PostInsertPurchaseListToID(
                delivery,
                rvalue /*IMP_RValue*/,
                MyUsePoint.ToString() /*사용포인트*/,
                ShopOrderPage_ID /*아이디*/,
                userCheck.ToString() /*비회원상태확인*/);

            if (OrderIndex == -1)
            {
                await DisplayAlert("알림", "오류가 발생했습니다. 다시 한번 시도해주십시오.", "확인"); return;
            }
            else
            {
                for (int i = 0; i < basketList.Count; i++)
                {
                    if (SH_DB.SH_UpdateProductCountToIndex(basketList[i].SH_PRODUCT_INDEX.ToString(), basketList[i].SH_BASKET_COUNT.ToString()) == false)
                    {
                        await DisplayAlert("알림", "구매 가능한 수량이 부족합니다.", "확인"); return;
                    }

                    // 구매 목록에 장바구니에 저장했던 상품들 추가
                    if (SH_DB.PostInsertProductToPurchaseList(basketList[i].SH_HOME_INDEX.ToString(),
                                                              basketList[i].SH_BASKET_IMAGE,
                                                              basketList[i].SH_BASKET_COUNT.ToString(),
                                                              basketList[i].SH_BASKET_COLOR,
                                                              basketList[i].SH_BASKET_SIZE,
                                                              basketList[i].SH_BASKET_NAME,
                                                              basketList[i].SH_BASKET_ID,
                                                              OrderIndex.ToString(),
                                                              basketList[i].SH_BASKET_PRICE.ToString(),
                                                              basketList[i].SH_PRODUCT_INDEX.ToString()) == false)
                    {
                        await DisplayAlert("알림", "오류가 발생했습니다. 다시 한번 시도해주십시오.", "확인"); return;
                    }
                    if (SH_DB.PostDeleteBasketListToBasket(basketList[i].SH_BASKET_INDEX.ToString()) == false)
                    {
                        await DisplayAlert("알림", "장바구니의 내용을 갱신하는 도중 문제가 발생했습니다. 다시 한번 시도해주십시오.", "확인"); return;
                    }
                }
                if (MyUsePoint != 0)
                {
                    if (basketList.Count != 0)
                    {
                        PT_DB.PostInsertPointWithDrawToID(basketList[0].SH_BASKET_NAME + "외 " + (basketList.Count - 1).ToString() + "개 상품 구매",
                                                          "",                    /*은행*/
                                                          "",                    /*계좌번호*/
                                                          "",                    /*예금주*/
                                                          ShopOrderPage_ID,      /*아이디*/
                                                          MyUsePoint.ToString(), /*사용포인트*/
                                                          PT_DB.PostSearchPointListToID(ShopOrderPage_ID).PT_POINT_INDEX.ToString() /*포인트 리스트의 인덱스*/,
                                                          "출금완료"
                                                          );
                    }
                    else
                    {
                        PT_DB.PostInsertPointWithDrawToID(basketList[0].SH_BASKET_NAME + "상품 구매",
                                                          "",                    /*은행*/
                                                          "",                    /*계좌번호*/
                                                          "",                    /*예금주*/
                                                          ShopOrderPage_ID,      /*아이디*/
                                                          MyUsePoint.ToString(), /*사용포인트*/
                                                          PT_DB.PostSearchPointListToID(ShopOrderPage_ID).PT_POINT_INDEX.ToString() /*포인트 리스트의 인덱스*/,
                                                          "출금완료"
                                                          );
                    }
                }
                await DisplayAlert("알림", "결제 성공", "확인");

                BasketTabPage.isOpenPage = false;
                await Navigation.PopToRootAsync();

                MainPage mp = (MainPage)Xamarin.Forms.Application.Current.MainPage.Navigation.NavigationStack[0];

                // 구매 성공시 상품 수량 마이너스 할 것.
            }
            // 결제 완료 페이지 이동
            // 장바구니 리스트, 유저 아이디, 날짜, 배송정보
        }