// 구매시 구매 리스트 정보 생성(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); } }
// 포인트 충전 및 적립되는 프로시저 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사 연결 } }
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]; // 구매 성공시 상품 수량 마이너스 할 것. } // 결제 완료 페이지 이동 // 장바구니 리스트, 유저 아이디, 날짜, 배송정보 }