Hiện nay, công nghệ thiết bị di động đang trong giai đoạn phát triển vượt bậc ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN NGUYỄN THU HẰNG PHÁT TRIỂN THƢƠNG MẠI ĐIỆN TỬ TRÊN NỀN TẢNG DI ĐỘNG LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN Hà Nội 2015 ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN NGUYỄN THU HẰNG PHÁT TRIỂN THƢƠNG MẠI ĐIỆN TỬ TRÊN NỀN TẢNG DI ĐỘNG Ngành Công nghệ thông tin Chuyên ngành Quản lý Hệ thống thông tin Mã số Chuyên ngành đào tạo thí điểm LUẬN VĂN THẠC SĨ CỒNG NGHỆ THÔNG TIN[.]
ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN NGUYỄN THU HẰNG PHÁT TRIỂN THƢƠNG MẠI ĐIỆN TỬ TRÊN NỀN TẢNG DI ĐỘNG LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN Hà Nội - 2015 ĐẠI HỌC QUỐC GIA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN NGUYỄN THU HẰNG PHÁT TRIỂN THƢƠNG MẠI ĐIỆN TỬ TRÊN NỀN TẢNG DI ĐỘNG Ngành: Công nghệ thông tin Chuyên ngành: Quản lý Hệ thống thông tin Mã số: Chuyên ngành đào tạo thí điểm LUẬN VĂN THẠC SĨ CỒNG NGHỆ THƠNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: TS ĐINH VĂN DŨNG Hà Nội - 2015 i LỜI CAM ĐOAN Tôi xin hƣớng dẫn m đo n đ y ông tr nh nghiên u riêng với thầy giáo Ts Đinh Văn Dũng C số liệu, kết luận thông tin nghiên u đƣ đƣ r luận văn xác, khách quan, trung thự ngu n gố r ràng Hà Nội, Ngày tháng năm 2015 T giả luận văn Nguyễn Thu Hằng ii LỜI CẢM ƠN Để hoàn thành đƣ luận văn em không nhắ đến thầy giáo hƣớng dẫn Ts Đinh Văn Dũng Em xin h n thành ảm ơn hỉ bảo tận t nh định hƣớng nghiên u hỗ tr tạo điều kiện tốt ho em suốt qu tr nh thự đề tài Em xin m ơn quý Thầy Cô Viện Công nghệ thông tin - Đại họ Quố gi Hà Nội tận t nh hỉ bảo truyền đạt tri th kỹ kinh nghiệm quý b u ho em suốt quãng thời gi n em theo họ lớp Thạ sỹ Viện Đ y hành tr ng quý b u để em hoàn thành tốt nhiệm vụ m nh đơn vị m nh ông t bƣớ on đƣờng nghiệp th n Em xin gửi lời ảm ơn chân thành đến thầy gi o Ts Lê Quang Minh thầy khơng ngừng khuyến khí h, hỉ bảo động viên giúp đỡ em qu tr nh hoàn thiện luận văn Em ũng xin gửi lời ảm ơn s u sắ tới qu n t m giúp đỡ tạo điều kiện nh hị bạn bè đ ng nghiệp qu n gi đ nh em suốt qu tr nh thự luận văn Mặ dù nỗ lự ố gắng nhƣng luận văn hắ không tr nh khỏi thiếu s t em mong nhận đƣ thông ảm g p ý tận t nh hỉ bảo thầy ô bạn bè Em xin chân thành ảm ơn! T giả luận văn Nguyễn Thu Hằng quý iii MỤC LỤC MỞ ĐẦU Chƣơng TỔNG QUAN VỀ PHÁT TRIỂN THƢƠNG MẠI ĐIỆN TỬ TRÊN NỀN TẢNG DI ĐỘNG 1.1 Đặt vấn đề .3 1.2 Thƣơng mại di động uộ h mạng Thƣơng mại điện tử .4 1.3 C phƣơng ph p ph t triển phần mềm 1.3.1 Ứng dụng web 1.3.2 Ứng dụng gố 1.3.3 Ứng dụng l i 12 1.4 Nền tảng ph t triển ng dụng di động 12 1.4.1 Môi trƣờng ph t triển tí h h p .12 1.4.2 Ph t triển dự tảng điện to n đ m m y 14 1.4.3 So s nh tảng lập tr nh 14 1.4.4 Nhà ung ấp hỗ tr kho ng dụng .15 1.5 Ứng dụng ông nghệ điện thoại di động .16 1.5.1 Tƣơng t phần ng 16 1.5.2 Lớp trung gi n API 17 1.5.3 Modul h phần ng phụ thuộ 17 1.5.4 Quản lý phiên 18 1.6 Qu tr nh trải nghiệm ngƣời dùng thiết bị 19 1.6.1 Trang Web 19 1.6.2 Tr nh quản lý thiết bị 20 1.6.3 Công nghệ ảm ng tƣơng t .20 1.6.4 Ứng dụng nhập xuất thông tin giọng n i 21 1.6.5 Hệ thống ảm biến hỉ huyển động 22 1.6.6 M y ảnh 22 1.6.7 Bảo mật 22 1.7 Kiểm thử .23 1.8 C ông nghệ x y dựng ng dụng web di động 25 1.8.1 HTML5 25 1.8.2 JQuery 26 Chƣơng THỰC TRẠNG PHÁT TRIỂN DỊCH VỤ VÍ ĐIỆN TỬ TRÊN THIẾT BỊ DI ĐỘNG TẠI MỘT SỐ NƢỚC TRÊN THẾ GIỚI VÀ ĐỊNH HƢỚNG PHÁT TRIỂN CHO VIỆT NAM 28 2.1 Giới thiệu dị h vụ trung gi n th nh to n ví điện tử thiết bị di động 28 iv 2.2 Thƣơng mại di động dị h vụ th nh to n ví điện tử di động số nƣớ giới .33 2.2.1 Ho Kỳ 33 2.2.2 Ấn Độ 41 2.2.3 Trung Quố 46 2.2.4 Kenya 48 2.3 Kết thu đƣ qu điển h nh .49 2.4 Thự trạng ph t triển hệ thống ví điện tử thiết bị di động Việt N m .51 2.5 Định hƣớng ph t triển mô h nh th nh to n ví điện tử thiết bị di động Việt N m 54 Chƣơng XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM VÍ ĐIỆN TỬ TRÊN THIẾT BỊ DI ĐỘNG 69 3.1 Mô tả to n .69 3.2 Biểu đ h hệ thống .69 3.2.1 Biểu đ sử dụng 69 3.2.2 Biểu đ tƣơng t 74 3.2.3 Biểu đ hoạt động .80 3.2.4 Biểu đ trạng th i 82 3.3 Gi o diện h hính hƣơng tr nh thử nghiệm .82 3.4 L i í h việ thự 84 KẾT LUẬN 87 TÀI LIỆU THAM KHẢO 88 PHỤ LỤC 90 v BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT STT Tên viết tắt App Store Chú thích Kho ng dụng Cơ sở liệu CSDL CSS Client Ngôn ngữ quy định h tr nh bày thẻ html tr ng web Máy khách Container Hệ thống vận huyển ĐTDĐ Điện thoại di động GPRS GSM Hybrid App 10 IDE Cascading Style Sheets General Packet Radio Services Global System for Mobile Communications 13 Hệ thống thông tin di động toàn ầu Ứng dụng l i Integrated Development Environment 11 12 Dị h vụ vô tuyến g i tổng h p JDT Java Development Tools NFC Near Field Communication Môi trƣờng ph t triển tí h h p Bộ ơng ụ ph t triển ng dụng phần mềm tảng ngôn ngữ Java Công nghệ gi o tiếp không d y phạm vi tầm ngắn Native app Ứng dụng gố MVC Mơ hình Model-ViewController 15 MCommerce Thƣơng mại di động 16 OTP One Time Password Mật dùng lần 17 OOP Object oriented programming Lập tr nh hƣớng đối tƣ ng 18 PDA Personal Digital Assistant Thiết bị kỹ thuật số hỗ tr nhân 19 TSM Trusted Service Manager Nhà quản lý dị h vụ tin ậy 20 TMĐT Thƣơng mại điện tử 21 Web App Ứng dụng web 22 Server M y h 23 SDLC 14 Software Development Life Cycle Chu tr nh ph t triển phần mềm vi DANH MỤC CÁC HÌNH ẢNH, BẢNG BIỂU, ĐỒ THỊ H nh 1.1: Tỷ lệ d n số Việt N m sử dụng Internet di động .7 H nh 1.2: Tỷ lệ thời gi n Online thiết bị H nh 1.3: Tỷ lệ nh thu từ ng dụng di động .11 H nh 1.4: Biểu đ tăng trƣởng thị trƣờng trò di động Việt N m .11 Hình 1.5: Game Flappy Bird 12 H nh 2.1: Tỷ lệ sở hữu thiết bị di động 33 H nh 2.2: M mu sắm thƣơng mại điện tử từ Q2/2010 34 Hình 2.3: Doanh thu Tablet smartphone 34 H nh 2.4: Tỷ lệ huyển đổi 35 H nh 2.5: Do nh thu từ Sm rtphone t blet .35 H nh 2.6: Số lƣ ng ngƣời dùng Sm rtphone t blet 36 H nh 2.7: Thời gi n trự tuyến kh h hàng 36 H nh 2.8: Tỷ lệ truy ập website 36 H nh 2.9: Tỷ lệ sử dụng dị h vụ 37 H nh 2.10: Tỷ lệ t m kiếm di động 37 H nh 2.11: Đ nh gi trự tuyến .38 H nh 2.12: Đ nh gi trự tiếp 38 H nh 2.13: Thị trƣờng th nh to n trự tuyến quố gi Đông N m Á 51 H nh 2.14: Tỷ lệ d n số sử dụng dị h vụ huyển tiền so s nh giữ số nƣớ khu vự 51 H nh 2.15: Tỷ lệ nhận biết ngƣời tiêu dùng Việt N m 52 th nh to n di động 52 H nh 2.16: Ngƣời tiêu dùng lự họn ng dụng th nh to n di động .52 từ ng n hàng nhiều so với ng dụng kh .52 H nh 2.17: C yếu tố thành phần x y dựng hệ thống 56 H nh 2.18: Mơ h nh tí h h p yếu tố định lự họn sử dụng dị h vụ ví di động 57 H nh 2.19: Quy tr nh đăng ký tài khoản 62 H nh 2.20: Quy tr nh đăng nhập hệ thống .63 H nh 2.21: Quy tr nh nạp tiền qu thẻ 64 H nh 2.22: Quy tr nh nạp tiền điểm gi o dị h 65 H nh 2.23: Quy tr nh huyển tiền 66 H nh 2.24: Quy tr nh rút tiền thông qu tài khoản ng n hàng .67 H nh 2.25: Quy tr nh rút tiền trự tiếp 68 H nh 3.1: Biểu đ sử dụng m tổng qu t 69 H nh 3.2: Biểu đ Use se m ph n rã h mu sắm .70 vii H nh 3.3: Biểu đ Use se m H nh 3.4: Biểu đ tr nh tự h H nh 3.5: Biểu đ ộng t h ph n rã h ập nhật thông tin tài khoản .70 Đăng ký .75 Đăng ký 75 H nh 3.6: Biểu đ tr nh tự h Đăng nhập 76 H nh 3.7: Biểu đ ộng t h Đăng nhập 77 H nh 3.8: Biểu đ tr nh tự h mu sắm .77 H nh 3.9: Biểu đ ộng t h mu sắm 78 H nh 3.10: Biểu đ tr nh tự h H nh 3.11: Biểu đ ộng t h Chuyển tiền 78 huyển tiền .79 H nh 3.12: Biểu đ tr nh tự h Cập nhật thông tin tài khoản 79 H nh 3.13: Biểu đ ộng t h p nhật thông tin tài khoản 80 Hình 3.18: Gi o diện đăng nhập 82 Hình 3.19: Gi o diện h mu sắm 83 H nh 3.20: Gi o diện nạp tiền mobile 83 H nh 3.21: Gi o diện mu mã thẻ di động 83 H nh 3.22: Gi o diện nạp tiền g me 84 H nh 3.23: Gi o diện mu mã thẻ g me 84 H nh 3.24: Gi o diện huyển tiền 84 Bảng 2.1: Thống kê quố gi sử dụng dị h vụ ví di động theo mô h nh M Pes .49 Bảng 2.2: Một số tiêu hí ph n tí h .55 Bảng 2.3: T nh n sử dụng hệ thống 61 MỞ ĐẦU Cơ sở khoa học thực tiễn đề tài Ngày n y Thƣơng mại điện tử ph t triển với tố độ nh nh h ng đ ng dần s u vào hầu hết lĩnh vự ngành nghề kh nh u uộ sống nhƣ: Kho họ máy tính, marketing, hành vi khách hàng, tài chính, kinh tế hệ thống quản trị thơng tin, kế tốn, ngân hàng … Thƣơng mại điện tử tảng di động đ ng trở thành xu hƣớng ph t triển góp phần khơng nhỏ hoạt động mua bán, mang lại doanh thu uy tín ho đơn vị kinh doanh Việ tiêu thụ sử dụng điện thoại khơng hỉ với mụ đí h liên lạ đơn nữ mà ịn liên qu n đến hầu hết ơng việ , nhu ầu tất yếu hàng ngày ho nh n Môi trƣờng ng dụng di động tƣơng t phong phú hỗ tr ngƣời sử dụng đ m ng lại nhiều l i í h Những nhà ph t triển di động thƣờng x y dựng theo module, kế thừ tảng sẵn hoặ dùng phƣơng ph p tiếp ận nh nh để triển kh i ng dụng Th h th đặt r ho ph t triển điện thoại di động đ ng trƣớ nhu ầu ạnh tr nh g y gắt thị trƣờng thƣơng mại điện tử di động mà dòng điện thoại di động lại t n khoảng thời gi n ngắn ng i (Trung b nh khoảng s u th ng phiên sản phẩm r đời) Chính v vậy, thiết bị di động phải khơng ngừng thí h ng đổi trƣớ p lự thị trƣờng ông nghệ Nhƣ với ƣu thuận l i r rệt thiết bị di động việ x y dựng ng dụng di động nhằm đƣ nghiệp vụ quy tr nh ông việ thự tế nhằm giải h nh nh h ng thuận tiện trở thành vấn đề đ ng quan tâm Việ nghiên u đề tài: “PHÁT TRIỂN THƢƠNG MẠI ĐIỆN TỬ TRÊN NỀN TẢNG DI ĐỘNG” ần thiết Mục tiêu nghiên cứu Mụ tiêu hung: - Đ nh gi trạng ph t triển Thƣơng mại điện tử gi i đoạn n y tƣơng l i - Nghiên u tổng qu n ph t triển Thƣơng mại điện tử tảng di động - Nghiên u ng dụng dị h vụ ví điện tử thiết bị di động giới Việt N m - Ứng dụng x y dựng hƣơng tr nh thử nghiệm - Đ nh gi hiệu đề xuất hƣớng ph t triển Mụ tiêu ụ thể: Mụ tiêu ụ thể việ x y dựng ph t triển Thƣơng mại điện tử tảng di động nhằm tiếp ận việ đề xuất x y dựng ng dụng ví điện tử thiết bị di động Việt N m M ng lại l i í h thuận tiện ho kh h hàng thự gi o dị h sử dụng dị h vụ tốn nhanh chóng, an tồn thời gi n không gian đị điểm Ứng dụng x y dựng ph t triển dị h vụ ví điện tử di động m ng lại l i í h kinh tế ho nh n tổ h nh nghiệp 100 txt_mu _the_mobile_provider.setText("Thẻ Vietnamobile"); value_provider = 109; break; case 6: txt_mu _the_mobile_provider.setText("Thẻ Gmobile"); value_provider = 117; break; default: break; } return view; } public interface OnBuyCardMobileListener { public void onBuyCardMobileListener(String list_Card); } @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface If not, it throws an exception try { mCallback = (OnBuyCardMobileListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnItemMuaSamSelectedListener"); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 101 bundle = this.getArguments(); } @SuppressWarnings("unchecked") @Override public void onClick(View v) { switch (v.getId()) { case R.id.menh_gia_the_mobile: if(Connectivity.isConnected(getActivity())){ dialog = new Dialog(this.getActivity()); dialog.setContentView(R.layout.dialog_list_view); dialog.setTitle("Chọn mệnh gi "); dialog.show(); list_view = (ListView) dialog.findViewById(R.id.list_dialog); adapter = new Adapter_list_value_code_mobile(this.getActivity(), this getActivity().getResources() getStringArray(R.array.card_mobile_value)); list_view.setAdapter(adapter); list_view.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { txt_menh_gia.setText(arg0.getAdapter().getItem(arg2).toString()); value_code = value_provider + arg2; List params = new ArrayList(); params.add(new BasicNameValuePair("FROM", "ADR")); 102 params.add(new BasicNameValuePair("NAME", "BUY_MOBILE_CARD_REQUEST")); params.add(new BasicNameValuePair("USERNAME", sessionManager.getUserDetails().get("phone_number"))); params.add(new BasicNameValuePair("PASSWORD", sessionManager.getUserDetails().get("password"))); params.add(new BasicNameValuePair("EMAIL", sessionManager.getUserDetails().get("email"))); params.add(new BasicNameValuePair("VALUE_CODE", String.valueOf(value_code))); params.add(new BasicNameValuePair("TOTAL", String.valueOf(toltal))); pro_mua_the_mobile_menh_gia.setVisibility(View.GONE); if (buy_Card_Request_AsyncTask != null && buy_Card_Request_AsyncTask.getStatus() != AsyncTask.Status.FINISHED) { buy_Card_Request_AsyncTask.cancel(true); } buy_Card_Request_AsyncTask = new Buy_Card_Request_AsyncTask(); buy_Card_Request_AsyncTask.execute(params); dialog.dismiss(); } }); }else{ Utility.dialogBox(getString(R.string.thong_bao), getString(R.string.internet), getActivity()); } break; case R.id.so_luong_the_mobile: 103 if(Connectivity.isConnected(getActivity())){ if(value_code!=0){ dialog = new Dialog(this.getActivity()); dialog.setContentView(R.layout.dialog_list_view); di log.setTitle("Chọn mệnh gi thẻ"); dialog.show(); list_view = (ListView) dialog.findViewById(R.id.list_dialog); adapter = new Adapter_list_value_code_mobile(this.getActivity(), this getActivity().getResources() getStringArray(R.array.so_luong)); list_view.setAdapter(adapter); list_view.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { txt_so_luong.setText(arg0.getAdapter().getItem(arg2).toString()); toltal = arg2 + 1; List params = new ArrayList(); params.add(new BasicNameValuePair("FROM", "ADR")); params.add(new BasicNameValuePair("NAME", "BUY_MOBILE_CARD_REQUEST")); params.add(new BasicNameValuePair("USERNAME", sessionManager.getUserDetails().get("phone_number"))); params.add(new BasicNameValuePair("PASSWORD", sessionManager.getUserDetails().get("password"))); params.add(new BasicNameValuePair("EMAIL", sessionManager.getUserDetails().get("email"))); 104 params.add(new BasicNameValuePair("VALUE_CODE", String.valueOf(value_code))); params.add(new BasicNameValuePair("TOTAL", String.valueOf(toltal))); pro_mua_the_mobile_menh_gia.setVisibility(View.GONE); if (buy_Card_Request_AsyncTask != null && buy_Card_Request_AsyncTask.getStatus() != AsyncTask.Status.FINISHED) { buy_Card_Request_AsyncTask.cancel(true); } buy_Card_Request_AsyncTask = new Buy_Card_Request_AsyncTask(); buy_Card_Request_AsyncTask.execute(params); dialog.dismiss(); } }); }else{ Utility.dialogBox(getString(R.string.thong_bao), "Bạn hƣ lòng họn lại!" getA tivity()); } họn mệnh gi vui }else{ Utility.dialogBox(getString(R.string.thong_bao), getString(R.string.internet), getActivity()); } break; case R.id.btn_mua_the_mobile: if(Connectivity.isConnected(getActivity())){ if(Utility.isValidEmail(txt_email_mua_the_mobile.getText())){ if(request){ List params = new ArrayList(); 105 params.add(new BasicNameValuePair("FROM", "ADR")); params.add(new BasicNameValuePair("NAME", "BUY_MOBILE_CARD_CONFIRM")); params.add(new BasicNameValuePair("USERNAME", sessionManager.getUserDetails().get("phone_number"))); params.add(new BasicNameValuePair("PASSWORD", sessionManager.getUserDetails().get("password"))); params.add(new BasicNameValuePair("EMAIL", sessionManager.getUserDetails().get("email"))); params.add(new BasicNameValuePair("VALUE_CODE", String.valueOf(value_code))); params.add(new BasicNameValuePair("TOTAL", String.valueOf(toltal))); if (buy_Card_Confirm_AsyncTask != null && buy_Card_Confirm_AsyncTask.getStatus() != AsyncTask.Status.FINISHED) { buy_Card_Confirm_AsyncTask.cancel(true); } buy_Card_Confirm_AsyncTask = new Buy_Card_Confirm_AsyncTask(); buy_Card_Confirm_AsyncTask.execute(params); }else{ Utility.di logBox(getString(R.string.thong_b o) "Chƣ x gi vui lòng đ i!" getA tivity()); } }else{ Utility.dialogBox(getString(R.string.thong_b o) "Đị getActivity()); } định đƣ mệnh hỉ em il không đúng" 106 }else{ Utility.dialogBox(getString(R.string.thong_bao), getString(R.string.internet), getActivity()); } break; } } @Override public void onDestroy() { // TODO Auto-generated method stub pro_mua_the_mobile_menh_gia.setVisibility(View.GONE); if(progressDialog != null ) progressDialog.dismiss(); if (buy_Card_Request_AsyncTask != null && buy_Card_Request_AsyncTask.getStatus() != AsyncTask.Status.FINISHED) { buy_Card_Request_AsyncTask.cancel(true); } if (buy_Card_Confirm_AsyncTask != null && buy_Card_Confirm_AsyncTask.getStatus() != AsyncTask.Status.FINISHED) { buy_Card_Confirm_AsyncTask.cancel(true); } super.onDestroy(); } class Buy_Card_Request_AsyncTask extends AsyncTask { protected String doInBackground(List params) { try { mStringJson = Utility.makeHttpRequest(Constans.URL, Constans.GET, params[0], Utility.UTF_8); } catch (ClientProtocolException e) { 107 e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return mStringJson; } protected void onPostExecute(String result) { request = true; pro_mua_the_mobile_menh_gia.setVisibility(View.GONE); txt_tong_mua_the_mobile.setVisibility(View.VISIBLE); JSONObject mJsonObject; try { mJsonObject = new JSONObject(result); String status = mJsonObject.getString(Constans.TAG_STATUS); switch (Integer.parseInt(status)) { case Constans.SUCCESSFULL: txt_tong_mua_the_mobile.setText(mJsonObject getString("VALUE")); break; case Constans.NOT_SUCCESSFULL: txt_tong_mua_the_mobile.setText(""); Utility.dialogBox(getString(R.string.thong_bao), mJsonObject.getString("DES"), getActivity()); break; } } catch (JSONException e) { e.printStackTrace(); To st.m keText(getA tivity() "Lỗi" Toast.LENGTH_SHORT) show(); } } @Override 108 protected void onPreExecute() { request = false; pro_mua_the_mobile_menh_gia.setVisibility(View.VISIBLE); txt_tong_mua_the_mobile.setVisibility(View.GONE); } } class Buy_Card_Confirm_AsyncTask extends AsyncTask { protected String doInBackground(List params) { try { mStringJson = Utility.makeHttpRequest(Constans.URL, Constans.GET, params[0], Utility.UTF_8); //mStringJson = Utility.httpPost(Constans.URL, params[0]); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return mStringJson; } protected void onPostExecute(String result) { progressDialog.dismiss(); JSONObject mJsonObject; try { mJsonObject = new JSONObject(result); String status = mJsonObject.getString(Constans.TAG_STATUS); switch (Integer.parseInt(status)) { case Constans.SUCCESSFULL: txt_tong_mua_the_mobile.setText(mJsonObject getString("VALUE")); 109 sessionManager.setBalance(mJsonObject.getString("BALANCE")); mCallback.onBuyCardMobileListener(result); break; case Constans.NOT_SUCCESSFULL: Utility.dialogBox(getString(R.string.thong_bao), mJsonObject.getString("DES"), getActivity()); break; } } catch (JSONException e) { e.printStackTrace(); Utility.dialogBox(getString(R.string.thong_bao), getString(R.string.loi_he_thong), getActivity()); } } @Override protected void onPreExecute() { progressDialog = new ProgressDialog(getActivity()); progressDialog.setIndeterminate(true); progressDialog.setMessage("Loading "); progressDialog.show(); } } } Phụ lục 3: Mã nguồn chức chuyển tiền package com.onpay.fragment.muasam; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.message.BasicNameValuePair; import org.json.JSONException; 110 import org.json.JSONObject; import com.onpay.R; import com.onpay.utility.Connectivity; import com.onpay.utility.Constans; import com.onpay.utility.SessionManager; import com.onpay.utility.Utility; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.View; import android.view.LayoutInflater; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class Fragment_chuyen_tien_thong_tin extends Fragment implements OnClickListener{ Bundle bundle; SessionManager sessionManager; OnConfirmTranferListener mCallback; TextView txt_tai_khoan_duoc_nap; TextView txt_so_tien; Tranfer_Confirm_AsyncTask tranfer_Confirm_AsyncTask; ProgressDialog progressDialog; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view= inflater.inflate(R.layout.fragment_thong_tin_tai_khoan_nhan, container, false); 111 txt_tai_khoan_duoc_nap = (TextView)view.findViewById(R.id.txt_tai_khoan_duoc_nap); TextView txt_full_name = (TextView)view.findViewById(R.id.txt_full_name); TextView txt_email = (TextView)view.findViewById(R.id.txt_email); txt_so_tien = (TextView)view.findViewById(R.id.txt_so_tien); sessionManager = new SessionManager(this.getActivity()); txt_tai_khoan_duoc_nap.setText(bundle.getString("user_name")); txt_full_name.setText(bundle.getString("acc_name")); txt_email.setText(bundle.getString("email")); txt_so_tien.setText(bundle.getString("oncoin") + " OnCoin"); Button btn_xac_nhan_chuyen_tien = (Button)view.findViewById(R.id.btn_xac_nhan_chuyen_tien); btn_xac_nhan_chuyen_tien.setOnClickListener(this); return view; } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub bundle = this.getArguments(); super.onCreate(savedInstanceState); } public interface OnConfirmTranferListener { public void onConfirmTranferListener(String user_game, String provider, String toup_coin, String value, String balance); } @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface If not, it throws an exception 112 try { mCallback = (OnConfirmTranferListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnItemMuaSamSelectedListener"); } } @Override public void onClick(View v) { // TODO Auto-generated method stub if(Connectivity.isConnected(getActivity())){ List params = new ArrayList(); params.add(new BasicNameValuePair("FROM", "ADR")); params.add(new BasicNameValuePair("NAME", "ONCOIN_TRANSFER_CONFIRM")); params.add(new BasicNameValuePair("USERNAME", sessionManager.getUserDetails().get("phone_number"))); params.add(new BasicNameValuePair("PASSWORD", sessionManager.getUserDetails().get("password"))); params.add(new BasicNameValuePair("TO_ACC", bundle.getString("user_name"))); params.add(new BasicNameValuePair("AMOUNT", bundle.getString("oncoin").replace(",", ""))); if (tranfer_Confirm_AsyncTask != null && tranfer_Confirm_AsyncTask.getStatus() != AsyncTask.Status.FINISHED) { tranfer_Confirm_AsyncTask.cancel(true); } tranfer_Confirm_AsyncTask = new Tranfer_Confirm_AsyncTask(); tranfer_Confirm_AsyncTask.execute(params); }else{ Utility.dialogBox(getString(R.string.thong_bao), getString(R.string.internet), getActivity()); } 113 } @Override public void onDestroyView() { // TODO Auto-generated method stub if(progressDialog != null ) progressDialog.dismiss(); if (tranfer_Confirm_AsyncTask != null && tranfer_Confirm_AsyncTask.getStatus() != AsyncTask.Status.FINISHED) { tranfer_Confirm_AsyncTask.cancel(true); } super.onDestroyView(); } class Tranfer_Confirm_AsyncTask extends AsyncTask { protected String doInBackground(List params) { String mStringJson = ""; try { mStringJson = Utility.makeHttpRequest(Constans.URL, Constans.GET, params[0], Utility.UTF_8); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return mStringJson; } protected void onPostExecute(String result) { JSONObject mJsonObject; progressDialog.dismiss(); try { mJsonObject = new JSONObject(result); 114 String status = mJsonObject.getString(Constans.TAG_STATUS); switch (Integer.parseInt(status)) { case Constans.SUCCESSFULL: mCallback.onConfirmTranferListener(bundle.getString("user_name"), bundle.getString("acc_name"), bundle.getString("email"), bundle.getString("oncoin"), mJsonObject.getString("BALANCE")); sessionManager.setBalance(mJsonObject.getString("BALANCE")); break; case Constans.NOT_SUCCESSFULL: Utility.dialogBox(getString(R.string.thong_bao), mJsonObject.getString("DES"), getActivity()); break; } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Utility.di logBox(getString(R.string.thong_b o) "Lỗi hệ thống!" getA tivity()); } } @Override protected void onPreExecute() { //pro_mua_the_mobile_menh_gia.setVisibility(View.VISIBLE); progressDialog = new ProgressDialog(getActivity()); progressDialog.setIndeterminate(true); progressDialog.setMessage("Loading "); progressDialog.show(); } } } ... thể sử dụng để tăng nh số b n hàng mCommer e: - Số h liệu nh n ung ấp thẻ kh h hàng trung thành - Giảm gi gửi tới kh h hàng thông qu SMS - Tặng phiếu mu hàng phiếu giảm gi - Tạo ng dụng liên qu... phát tri? ??n ứng dụng di động 1.4.1 Mơi trƣờng phát tri? ??n tích hợp Mơi trƣờng ph t tri? ??n tí h h p (IDEs) ung ấp tảng ho nhà ph t tri? ??n để x y dựng tri? ??n kh i ng dụng nhiều tầng E lipse tảng ph t tri? ??n... nh ắm thêm tiêu huẩn đ ông ụ ph t tri? ??n J v (JDT) Ví dụ: Cơng ụ ph t tri? ??n Android (ADT) ph t tri? ??n phần mềm (SDK) thể đƣ ắm vào mã ngu n mở E lipse IDE để ph t tri? ??n ng dụng ndroid mà hạy thiết