Phát triển hệ thống thanh toán điện tử qua điện thoại di động sử dụng NFC

100 6 0
Phát triển hệ thống thanh toán điện tử qua điện thoại di động sử dụng NFC

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Ngô Quang Trung PHÁT TRIỂN HỆ THỐNG THANH TOÁN ĐIỆN TỬ QUA ĐIỆN THOẠI DI ĐỘNG SỬ DỤNG NFC Chuyên ngành: Kỹ thuật truyền thông LUẬN VĂN THẠC SĨ KỸ THUẬT Kỹ thuật truyền thông NGƯỜI HƯỚNG DẪN KHOA HỌC : TS Phạm Văn Tiến Hà Nội – Năm 2014 LỜI CAM ĐOAN Tôi Ngô Quang Trung, số hiệu học viên: CB110926, học viên cao học lớp KTTT khóa 2011B Ngƣời hƣớng dẫn TS Phạm Văn Tiến Tơi xin cam đoan tồn nội dung đƣợc trình bày luận văn ―Phát triển hệ thống toán điện tử qua điện thoại di động sử dụng NFC‖ kết trình tìm hiểu nghiên cứu tơi Các liệu đƣợc nêu luận văn hoàn toàn trung thực rõ ràng Mọi thơng tin trích dẫn đƣợc tuân theo luật sở hữu trí tuệ, liệt kê rõ ràng tài liệu tham khảo Tơi xin chịu hồn toàn trách nhiệm với nội dung đƣợc viết luận văn Học viên Ngô Quang Trung MỤC LỤC LỜI CAM ĐOAN MỤC LỤC DANH SÁCH CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG BIỂU .7 DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU CHƢƠNG 1: TỔNG QUAN VỀ THƢƠNG MẠI ĐIỆN TỬ 11 1.1 Tổng quan thƣơng mại điện tử .11 1.1.1 Khái niệm thƣơng mại điện tử 11 a) Khái niệm thƣơng mại điện tử theo nghĩa hẹp: 11 b) Khái niệm thƣơng mại điện tử theo nghĩa rộng 11 1.1.2 Các phƣơng tiện thực thƣơng mại điện tử 13 1.1.3 Hệ thống hoạt động thƣơng mại điện tử .15 1.1.4 Qúa trình phát triển thƣơng mại điện tử 17 1.1.5 Các vấn đề chiến lƣợc thƣơng mại điện tử .18 1.2 Tổng quan toán điện tử .20 1.2.1 Tổng quan toán điện tử 20 1.2.1.1 Cuộc cách mạng toán 20 1.2.1.2 Khái niện toán điện tử .21 1.2.1.3 Quy trình tốn thẻ tín dụng trực tuyến 22 1.2.1.4 Rủi ro chấp nhận toán thẻ trực tuyến .25 1.2.2 Một số hình thức tốn điện tử phổ biến 26 1.2.2.1 Thanh toán dịch vụ PayPal 26 1.2.2.2 Thanh toán điện tử sử dụng thẻ thông minh 26 1.2.2.3 Thanh tốn điện tử thẻ thơng minh 28 1.2.2.4 Thanh toán điện tử thẻ mua hàng .28 CHƢƠNG 2: MỘT SỐ KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ NFC VÀ PHÂN TÍCH MỘT SỐ HỆ ĐIỀU HÀNH DI ĐỘNG CƠ BẢN NHƢ iOS, WINDOWS PHONE 8, ANDROID VÀ BLACKBERRY 10 29 2.1 Phân tích cơng nghệ NFC .29 2.1.1 Mô tả công nghệ .29 2.1.1.1 2.1.2 Khuôn dạng trao đổi liệu NFC 31 2.1.2.1 Mào đầu nghi NDEF (NDEF Record Header) 32 2.1.2.2 Các dạng payload biết (Well-known Type) 33 2.1.2.3 Các khuôn dạng mở rộng 34 2.1.3 Việc ứng dụng công nghệ NFC 34 2.1.3.1 Các trƣờng hợp sử dụng thong dụng 34 2.1.3.2 Chuyển giao kết nối 35 2.1.3.3 Mô Smart Card .35 2.1.4 2.2 Sự phát triển công nghệ NFC .31 Một số công nghệ tƣơng tự 36 2.1.4.1 Barcode 36 2.1.4.2 Bluetooth 37 Phân tích tảng hệ điều hành di động 37 2.2.1 Bố cục .37 2.2.2 Đặc tả ứng dụng mẫu .37 2.2.3 iOS 38 2.2.4 Android 38 2.2.4.1 Phân tích API 39 2.2.4.2 Triển khai thực 42 2.2.5 Windows Phone 42 2.2.5.1 Phân tích API 43 2.2.5.2 Triển khai nguyên mẫu 45 2.2.6 BlackBerry 10 45 2.2.6.1 Phân tích API 46 2.2.6.2 2.2.7 Triển khai nguyên mẫu 49 So sánh tàng 49 CHƢƠNG 3: PHÂN TÍCH, THIẾT KẾ PHẦN MỀM THANH TỐN ĐIỆN TỬ TRÊN NỀN TẢNG ANDROID ỨNG DỤNG CÔNG NGHỆ NFC CHO CÁC HỆ THỐNG THANH TOÁN ĐIỆN TỬ .52 3.1 Giới thiệu chƣơng trình hỗ trợ lập trình Eclipse cách cài đặt trình cắm thêm (plug-in widget) cơng cụ phát triển ứng dụng Android (ADT) 52 3.1.1 Cấu trúc Eclipse khái niệm: 52 3.1.1.1 Eclipse Workbench (Bàn làm việc Eclipse): 52 3.1.1.2 Plugins .52 3.1.1.3 Perspective (phối cảnh), views (khung nhìn), editor (trình soạn thảo) 53 3.1.2 Hƣớng dẫn cài đặt Eclipse cơng cụ hỗ trợ lập trình ứng dụng Android 54 3.2 Phân tích cấu trúc ứng dụng tảng hệ điều hành Android 56 3.2.1 Thuật ngữ Android 57 3.2.2 Phân tích dự án ứng dụng mẫu ―Hello Android‖ 58 3.3 3.2.2.1 Tạo Thiết bị ảo Android .58 3.2.2.2 Tạo dự án Android 59 3.2.2.3 Các widget Android 63 Thiết kế hệ thống toán điện tử NFC Payment 64 3.3.1 Thiết kế module ứng dụng quản lý liệu thiết bị di động hệ điều hành Android 65 3.3.1.1 Thiết kế hệ sở liệu hƣớng đối tƣợng chƣơng trình 65 3.3.1.2 Thiết kế lƣu đồ thuật tốn chƣơng trình 67 3.3.1.3 Thiết kế cửa sổ log-in: .67 3.3.1.4 Thiết kế cửa sổ tạo tài khoản ngƣời sử dụng mới: 68 3.3.1.5 Thiết kế cửa sổ tạo sở liệu thẻ mới: 68 3.3.2 Thiết kế Server quản lý tài khoản Khách hàng Client quản lý bán hang máy tính 69 CHƢƠNG 4: XÂY DỰNG HỆ THỐNG THANH TOÁN ĐIỆN TỬ NFC PAYMENT .70 4.1 Xây dựng Server quản lý tài khoản Khách hàng Client bán hàng .70 4.1.1 Xây dựng Server quản lý tài khoản Khách hàng 70 4.1.2 Xây dựng Client bán hàng 71 4.2 Xây dựng ứng dụng khách hàng thiết bị di động hệ điều hành Android 73 4.2.1 Xây dựng sở liệu 73 4.2.1.1 Xây dựng sở liệu ngƣời dùng 73 4.2.1.2 Xây dựng sở liệu ngƣời thẻ 78 4.2.2 Xây dựng Activity ứng dụng .84 4.2.2.1 Xây dựng Activity log-in 84 4.2.2.2 Xây dựng Activity tạo tài khoản ngƣời dùng (Insert_New_User) 88 4.2.2.3 Xây dựng Activity tạo sở liệu thẻ (Insert_New_Card): 90 4.2.2.4 Xây dựng Activity thiết lập kết nối NFC P2P với Client: .93 4.3 Xây dựng chƣơng trình ghi URL lên NFC Tag 96 KẾT LUẬN 98 TÀI LIỆU THAM KHẢO 99 DANH SÁCH CÁC TỪ VIẾT TẮT NFC: Near Field Communication RFID: Radio Frequency Identification NDEF: NFC Data Exchange Format TNF: Type Name Format QR Code:Quick Response Code ADT:Android Development Tools Android SDK: AndroidSoftware Development Kit Eclipse IDE: Eclipse Integrated Development Environment AVD:Android Virtual Device OECD:Organization for Economic Co-operation and Development UNCTAD: United Nations Conference on Trade and Development WTO: World Trade Organization AEC: Association for Electronic Commerce ATM: Automatic Teller Machine ECMA: European Computer Manufacturers Association ISO: International Organization for Standardization URI: Uniform Resource Identifier MIME: Multipurpose Internet Mail Extensions DANH MỤC CÁC BẢNG BIỂU Bảng 2.1: NDEF Record Flags 32 Bảng 2.2: Giá trị trƣờng TNF 34 Bảng 2.3: dạng ghi định nghĩa trƣớc 34 DANH MỤC CÁC HÌNH VẼ Hình 1.1 Ứng dụng Thƣơng mại điện tử giai đoạn chuỗi giá trị 15 Hình 1.2 Sơ đồ phát triển kinh doanh 18 Hình 1.3 Các bƣớc triển khai thƣơng mại điện tử 19 Hình 1.4 Quy trình tốn điện tử thẻ tín dụng qua mạng 23 Hình 2.1: Ví dụ QR Code 36 Hình 2.2: Tỉ lệ sử dụng phiên hệ điều hành Android 39 Hình 3.1 Giao diện Eclipse 53 Hình 3.2 Java Perspective 54 Hình 3.3 Java Browsing Perspective 54 Hình 3.4 Debug Sperpective .54 Hình 3.5 Cài đặt Android Development Tools 55 Hình 3.6 Kết nối Android SDK với Eclipse IDE 56 Hình 3.7 Tạo dự án Android .60 Hình 3.8 Các nội dung dự án Hello Android 61 Hình 3.9 Giao diện ngƣời dùng cho tệp main.xml 62 Hình 3.10 Cấu trúc thƣ mục dự án Android .63 Hình 3.11 Hệ thống phân cấp widget Android 64 Hình 3.12 kịch 1: tốn điện tử qua NFC Phone .65 Hình 3.13 kịch 2: khách hang check NFC Poster .65 Hình 3.14: Thực thể ngƣời sử dụng thuộc tính 66 Hình 3.15: Thực thể thẻ thuộc tính 66 Hình 3.16: Mối quan hệ thực thể ngƣời sử dụng thực thể thẻ .66 Hình 3.17: lƣu đồ thuật tốn chƣơng trình 67 Hình 3.18: thiết kế hình log-in 68 Hình 3.19: thiết kế cửa sổ tạo tài khoản ngƣời sử dụng 68 Hình 3.20: thiết kế cửa sổ tạo thẻ 69 Hình 4.1: Giao diện Client bán hàng 73 MỞ ĐẦU Trong năm gần đây, Công nghệ thông tin Thƣơng mại điện tử xâm nhập vào góc cạnh đời sống xã hội nói chung doanh nghiệp nói riêng Đối với doanh nghiệp, Thƣơng mại điện tử góp phần hình thành mơ hình kinh doanh mới, giảm chi phí, nâng cao hiệu kinh doanh Đối với ngƣời tiêu dùng, Thƣơng mại điện tử giúp mua sắm thuận tiện hàng hóa dịch vụ toàn giới Theo nghĩa hẹp, thƣơng mại điện tử việc mua bán hàng hóa dịch vụ thông qua phƣơng tiện điện tử mạng viễn thơng, đặc biệt máy tính Internet Theo nghĩa rộng, thƣơng mại điện tử việc thực phần hay toàn hoạt động kinh doanh bao gồm marketing, bán hàng, phân phối tốn thơng qua phƣơng tiện điện tử Thanh tốn khâu hồn thiện quy trình kinh doanh việc đẩy nhanh q trình quay vịng vốn, vấn đề quan trọng doanh nghiệp Lợi ích to lơn mà thƣơng mại điện tử đem lại cho doanh nghiệp phƣơng thức tốn điện tử an tồn nhanh chóng Thanh tốn điện tử vấn đề cố lõi thƣơng mại điện tử Thiếu hạ tầng tốn, chƣa thể có thƣơng mại điện tử hồn chỉnh Do vậy, hệ thống tốn điện tử tâm điểm phát triển nhằm phục vụ khách hàng tốt với chi phí thấp Những cải tiến tốn hàng hóa dịch vụ hứa hẹn đem lại hội kinh doanh cho doanh nghiệp Các phƣơng thức toán trực tuyến phổ biến bao gồm: Thẻ tốn, Ví điện tử, Thẻ mua hàng Trong thẻ toán đƣợc coi phƣơng tiện phổ biến nhất, đặc biệt thẻ tín dụng tính tiện lợi phổ dụng (nhất Mỹ nƣớc phát triển) Ba loại thẻ toán phổ biến gồm: thẻ tín dụng (credit card, thẻ cho phép chủ thẻ chi tiêu tới hạn mức tín dụng định), thẻ ghi nợ (debit card, thẻ chi tiêu dựa số dƣ tài khoản thẻ hay tài khoản tiền gửi) thẻ mua hàng (charge card, thẻ cho phép chủ thẻ chi tiêu tiến hành tốn khoản chi tiêu định kỳ, thƣờng vào cuối tháng) Đối với toán điện tử, sở hạ tầng điện tử viễn thông công nghệ thông tin yếu tố then chốt cho thành cơng tính hiệu phƣơng thức toán Cùng với bùng nổ thiết bị di động, thƣơng mại điện tử toán điện tử tảng thiết bị di động ngày trở nên phổ biến Năm 2002 Phillips Sony phát triển công nghệ NFC(Near Field Communication) kết hợp với thiết bị di động tạo nhiều tính năng, ứng dụng cho thiết bị di động, đáng ý khả cho phép thiết bị di động trở thành ví điện tử, thay cho loại thẻ toán phổ biến Trong số hệ điều hành di động hỗ trợ công nghệ NFC, Android hệ điều hành hỗ trợ tốt cho việc phát triển ứng dụng kết hợp công nghệ NFC Căn thê xu phát triển đó, Luận văn thực nghiên cứu thiết kế hệ thống toán điện tử ứng dụng công nghệ NFC tảng hệ điều hành di động Android Mục đích đề tài tìm hiểu sở lý thuyết thƣơng mại điện tử, tốn điện tử cơng nghệ NFC, từ thiết kế, xây dựng hệ thống tốn điện tử ứng dụng công nghệ NFC tảng hệ điều hành di động Android Trong trình thực luận văn, dù gặp nhiều khó khăn tiếp cận đề tài hƣớng nghiên cứu nhƣng nhận đƣợc giúp đỡ nhiệt tình TS Phạm Văn Tiến ngƣời chịu trách nhiệm hƣớng dẫn làm luận văn tốt nghiệp Hà Nội, ngày 18 tháng năm 2014 Ngô Quang Trung 10 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); } } } }); btn_login_cancel.setOnClickListener(new OnClickListener() { @Override publicvoid onClick(View v) { System.exit(0); } }); btn_login_newuser.setOnClickListener(new OnClickListener() { @Override publicvoid onClick(View v) { AlertDialog.Builder alert = new AlertDialog.Builder(context); alert.setTitle("Lost of Data Warning!");//Set Alert dialog title here alert.setMessage("Create new user you will lost all of your credit card information, are you sure ?"); alert.setPositiveButton("NEW USER", new DialogInterface.OnClickListener() { @Override publicvoid onClick(DialogInterface dialog, int which) { db_pass.deleteTable_user(); db_card.delete_table_card(); //============================ Boolean iscreated = db_pass.isCreated(); Boolean iscreated_card = db_card.isCreated(); if (iscreated_card) { 86 Toast.makeText(context, "Error!! chua drop cong card table", Toast.LENGTH_LONG).show(); System.exit(0); } else { Toast.makeText(context, "drop cong card table", Toast.LENGTH_LONG).show(); } if (iscreated) { Toast.makeText(context, "Error!! chua drop cong user table! Please relog in!", Toast.LENGTH_LONG).show(); System.exit(0); } else { //Neu drop user va card thanhcongthitao user moivatao card moi Toast.makeText(context, "drop cong user Toast.LENGTH_LONG).show(); Intent intent = new Intent(getApplicationContext(),Insert_new_user.class); intent.addCategory(Intent.CATEGORY_HOME); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); } //============================= } }); alert.setNegativeButton("BACK", new DialogInterface.OnClickListener() { @Override publicvoid onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub 87 table", dialog.cancel(); } }); AlertDialog alertdialog = alert.create(); alertdialog.show(); } }); dialog.show(); } } - Trong thủ tục đăng nhập ứng dụng đƣợc thực ngƣời dùng bấm nút OK (hàm btn_login_ok.setOnClickListener(new OnClickListener()) , ứng dụng truy suất sở liệu để lấy thông tin ngƣời dùng xác nhận việc đăng nhập có thành cơng hay khơng - Khi ngƣời dùng đăng nhập thành công, ứng dụng tự động kiểm tra sở liệu thẻ, sở liệu thẻ chƣa tồn tại, ứng dụng tự động chuyển ngƣời dùng sang cửa sổ tạo sở liệu thẻ - Tại ngƣời dùng lựa chọn để tạo tài khoản ngƣời dùng cách bấm vào nút NEWUSER, hàm btn_login_newuser.setOnClickListener(new OnClickListener() đƣợc gọi để thực thủ tục tạo tài khoản mới, để đảm bảo tính bảo mật cho liệu thẻ, ngƣời dùng chọn tạo tài khoản ứng dụng tự động xóa tồn sở liệu thẻ cũ, tạo tài khoản sử dụng ngƣời dùng phải nhập lại tồn sở liệu thẻ 4.2.2.2 Xây dựng Activity tạo (Insert_New_User) package trungnq3.nfc.wallet; publicclass Insert_new_user extends Activity { @Override 88 tài khoản ngƣời dùng publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Context context = this; final Pass_Handler db_pass = new Pass_Handler(context); final Dialog dialog = new Dialog(context); dialog.setContentView(R.layout.input_user); dialog.setCancelable(true); dialog.setTitle("Create new user!"); final EditText password1 = (EditText) dialog.findViewById(R.id.EditText_Pwd1); final EditText password2 = (EditText) dialog.findViewById(R.id.EditText_Pwd2); final EditText username = (EditText) dialog.findViewById(R.id.EditText_user); final Button btn_ok = (Button) dialog.findViewById(R.id.btn_new_user_ok); final Button btn_exit = (Button) dialog.findViewById(R.id.btn_new_user_exit); btn_ok.setOnClickListener(new OnClickListener() { @Override publicvoid onClick(View v) { String strPassword1 = password1.getText().toString(); String strPassword2 = password2.getText().toString(); if (strPassword1.equals(strPassword2)) { final String str_pass1=password1.getText().toString(); final String str_user=username.getText().toString(); db_pass.addUser(new User_Pass(str_user,str_pass1));//add user database User_Pass usr = new User_Pass(); usr = db_pass.getUser(1); String txt_user = "User: "+ usr.getUser() + ", Pass: "+ usr.getPass(); Toast.makeText(context, txt_user, Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(),Insert_new_card.class); intent.addCategory(Intent.CATEGORY_HOME); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 89 startActivity(intent); finish(); } } }); btn_exit.setOnClickListener(new OnClickListener() { @Override publicvoid onClick(View v) { System.exit(0); } }); dialog.show(); } } - Ứng dụng tạo cửa sổ cho phép ngƣời dùng nhập thông tin user name password, ngƣời dùng bấm nút OK ứng dụng thực thủ tục tạo sở liệu tài khoản ngƣời dùng Sau tạo thành cơng sở liệu ngƣời dùng ứng dụng tự động chuyển ngƣời dùng sang cửa sổ tạo sở liệu card ứng tài khoản ngƣời dùng đƣợc tạo 4.2.2.3 Xây dựng Activity tạo sở liệu thẻ (Insert_New_Card): package trungnq3.nfc.wallet; publicclass Insert_new_card extends Activity { /** Called when the activity is first created */ @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Context context = this; final Card_Handler db = new Card_Handler(context); final Dialog dialog = new Dialog(context); 90 dialog.setContentView(R.layout.input_card); dialog.setCancelable(true); dialog.setTitle("Create new card!"); final TextView txt = (TextView) dialog.findViewById(R.id.lst); final EditText e_cardnumber = (EditText) dialog.findViewById(R.id.edit_input_cardnumber); final EditText e_expirydate = (EditText) dialog.findViewById(R.id.edit_input_expirydate); final EditText e_securitycode = (EditText) dialog.findViewById(R.id.edit_input_securitycode); final EditText e_nameoncard = (EditText) dialog.findViewById(R.id.edit_input_nameoncard); final EditText e_cardtype = (EditText) dialog.findViewById(R.id.edit_input_cardtype); Button btn= (Button) dialog.findViewById(R.id.add_btn); boolean iscreated_card = db.isCreated(); if(iscreated_card) { btn.setText("UPDATE"); } btn.setOnClickListener( new View.OnClickListener() { publicvoid onClick(View v) { Log.d("Insert: ", "Inserting "); final String str_e_cardnumber= e_cardnumber.getText().toString(); final String str_e_expirydate = e_expirydate.getText().toString(); final String str_e_securitycode = e_securitycode.getText().toString(); final String str_e_nameoncard = e_nameoncard.getText().toString(); final String str_e_cardtype = e_cardtype.getText().toString(); 91 db.addCard(new Card(Integer.parseInt(str_e_cardnumber),str_e_expirydate,str_e_securitycode,str_ e_nameoncard,str_e_cardtype)); Card cn = new Card(); cn = db.getCard(1); String log = "Id: "+cn.getID()+" ,Cardnumber: " + cn.getCardnumber() + " ,Expirydate: " + cn.getExpirydate() + ", Security code:"+ cn.getSecuritycode()+", Name on card:"+cn.getNameoncard()+ ", Card type:"+cn.getCardtype(); txt.setText(log); Toast.makeText(context, "Create new card successfull!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(),Main_screen_activity.class); intent.addCategory(Intent.CATEGORY_HOME); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); } } ); Button btn2 = (Button) dialog.findViewById(R.id.exit_btn); btn2.setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { boolean iscreated = db.isCreated(); if(!iscreated) { Toast.makeText(context,"You didn't create a card! To use this wallet, please relogin and create a card!",Toast.LENGTH_LONG).show(); } System.exit(0); //Exit application 92 } }); dialog.show(); } } Ứng dụng tạo cửa sổ cho phép ngƣời dùng nhập thông tin thẻ mới, ngƣời dùng bấm nút OK ứng dụng thực thủ tục tạo sở liệu thẻ Sau tạo sở liệu thành cơng ứng dụng tự động chuyển ngƣời dùng cửa sổ ứng dụng 4.2.2.4 Xây dựng Activity thiết lập kết nối NFC P2P với Client: package trungnq3.nfc.wallet; publicclass Main_screen_activity extends Activity CreateNdefMessageCallback, OnNdefPushCompleteCallback{ NfcAdapter mNfcAdapter; TextView mInfoText; final Card_Handler db = new Card_Handler(this); privatefinal Handler mHandler = new Handler() { @Override publicvoid handleMessage(Message msg) { switch (msg.what) { case 1: Toast.makeText(getApplicationContext(), "Message sent!", Toast.LENGTH_LONG).show(); break; } } }; @Override publicvoid onCreate(Bundle savedInstanceState) { 93 implements super.onCreate(savedInstanceState); final Context context = this; setContentView(R.layout.m2_data_exchange); final Button btn_main_update = (Button) findViewById(R.id.btn_main_update_card); final Button btn_main_background = (Button) findViewById(R.id.btn_main_background); final Button btn_main_exit = (Button) findViewById(R.id.btn_main_exit); btn_main_exit.setOnClickListener(new OnClickListener() { @Override publicvoid onClick(View v) { System.exit(0); } }); btn_main_update.setOnClickListener(new OnClickListener() { @Override publicvoid onClick(View v) { Intent intent = new Intent(getApplicationContext(),Insert_new_card.class); intent.addCategory(Intent.CATEGORY_HOME); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); } }); boolean iscreated_card = db.isCreated(); if(iscreated_card) { mNfcAdapter = NfcAdapter.getDefaultAdapter(this); if (mNfcAdapter == null) { mInfoText = (TextView) findViewById(R.id.textView3); 94 mInfoText.setText("NFC is not available on this device."); } mNfcAdapter.setNdefPushMessageCallback(this, this); mNfcAdapter.setOnNdefPushCompleteCallback(this, this); } else { Toast.makeText(getApplicationContext(), "Chua co du lieu card!", Toast.LENGTH_LONG).show(); } } @Override publicvoid onNdefPushComplete(NfcEvent event) { mHandler.obtainMessage(1).sendToTarget(); } @Override public NdefMessage createNdefMessage(NfcEvent event) { Card cn = new Card(); cn = db.getCard(1); String log = "Id: "+cn.getID()+" ,Cardnumber: " + cn.getCardnumber() + " ,Expirydate: " + cn.getExpirydate() + ", Security code:"+ cn.getSecuritycode()+", Name on card:"+cn.getNameoncard()+ ", Card type:"+cn.getCardtype(); NdefMessage msg = new NdefMessage( new NdefRecord[] { createMimeRecord( "application/trungnq3.nfc.wallet\n\n", log.getBytes())}); return msg; } public NdefRecord createMimeRecord(String mimeType, byte[] payload) { byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII")); 95 NdefRecord mimeRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, mimeBytes, newbyte[0], payload); return mimeRecord; } void processIntent(Intent intent) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage msg = (NdefMessage) rawMsgs[0]; mInfoText.setText(new String(msg.getRecords()[0].getPayload())); } } - Tại cửa sổ giao diện ứng dụng, ngƣời dùng lựa chọn chức cập nhật lại thông tin liệu thẻ Khi ngƣời dùng lựa chọn chức cập nhật, ứng dụng tự động chuyển ngƣời dùng sang cửa sổ tạo sở liệu thẻ để ngƣời dùng thực thủ tục cập nhật thẻ - Trong lớp cửa sổ ứng dụng tính quan trọng thủ tục trao đổi liệu với thiết bị peer-to-peer (thiết bị di động hỗ trợ NFC khác, máy tính có kết nối đầu đọc NFC) khác Tại ứng dụng lấy liệu thẻ database, sau ứng dụng đóng gói liệu dƣới dạng tin NDEF chuẩn theo khuyến nghị NFC Forum Khi có thiết bị NFC lại gần khoảng cách vài cm, ứng dụng tạo kết nối với thiết bị đó, yêu cầu ngƣời dùng xác nhận lại xem có thực muốn gửi liệu không 4.3 Xây dựng chƣơng trình ghi URL lên NFC Tag - Để đăng ký với hệ điều hành Android cho phép ứng dụng xử lý phát NFC Tag, ta cần khai báo IntentFilter nhƣ sau: IntentFilter tagDetected = new IntentFilter( NfcAdapter.ACTION_TAG_DISCOVERED); 96 Với Intenfilter này, hành động phát NFC Tag (ACTION_TAG_DISCOVERED) ứng dụng đƣợc phép ƣu tiên giao tiếp với NFC Tag - Để hệ điều hành Android tự động phát gắn URL vào webbrowser mặc định cần ghi ghi NDEF chứa URL xác lên NFC Tag Hàm tạo NDEF chứa URL đƣợc thực nhƣ sau: private NdefRecord createRecord(String text) throws UnsupportedEncodingException { byte[] textBytes = text.getBytes(); int textLength = textBytes.length; byte[] payload = new byte[1+textLength]; payload[0]=0x01;//byte payload[0] = 0x01;//prefixes http://www to the URI System.arraycopy(textBytes, 0, payload, 1, textLength); NdefRecord recordNFC = new NdefRecord( NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_URI, new byte[0], payload); return recordNFC; } 97 KẾT LUẬN Luận văn trình bày số kiến thức thƣơng mại điện tử, tốn điện tử, cơng nghệ NFC số hệ điều hành di động thơng dụng Đó sở để nghiên cứu, thiết kế xây dựng hệ thơng tốn điện tử ứng dụng công nghệ NFC tảng hệ điều hành di động Android đáp ứng yêu cầu đề tài Từ sở lý thuyết, kết hợp với thiết kế, lập trình ứng dụng hệ điều hành Android, ngơn ngữ lập trình java khóa luận thiết kế xây dựng thành cơng hệ thống tốn điện tử ứng dụng cộng nghệ NFC tảng hệ điều hành di động Android Chƣơng trình xây dựng đƣợc Server quản lý liệu tài khoản, Client bán hàng ứng dụng thiết bị di động hệ điều hành Android Việc nghiên cứu thành cơng khóa luận giúp hỗ trợ tốt cho phát triển công nghệ NFC Trong tƣơng lai thiết bị di động tích hợp cơng nghệ NFC thực bùng nổ, việc ứng dụng hệ thống tốn điện tử ứng dụng cơng nghệ NFC tảng thiết bị di động thay cho loại thẻ tốn thơng dụng trở nên dễ dàng, thuận tiện phát triển mạnh mẽ Các hƣớng phát triển đề tài: tiếp tục nghiên cứu nghiệp vụ ngân hàng, nghiệp vụ tốn để tối ƣu hóa, chuẩn hóa sở liệu, chuẩn hóa quy trình tốn Đƣa ứng dụng vào thử nghiệm số điểm chấp nhận toán Cuối cùng, em xin chân thành cảm ơn TS Phạm Văn Tiến giúp đỡ, định hƣớng, giải thích cho em vấn đề chƣa hiểu trình làm luận văn 98 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Trần Đình Quế, Nguyễn Mạnh Hùng, Lập trình hướng đối tượng, Nhà xuất Học viện Công nghệ Bƣu Viễn thơng [2] Nguyễn Văn Thoan, Bài giảng thương mại điện tử, Nhà xuất Đại học Ngoại Thƣơng, 2009 Tiếng Anh [3] W.Frank Ableson, Charlie Collins, Robi Sen, Unlocking Android, Manning Publication Co, 2009 [4] David J.Eck, Introduction to Programming Using Java, Hobart and William Smith Colleges, 2011 [5] Satya Komatineni, Dave Maclean, Sayed Y.Hashimi, Pro Android 3, Apress, 2011 [6] David Sheppard, Payment Systems, Bank of England, 1996 [7] Java Tutorial, Tutorialspoint.com [8] http://docs.oracle.com/javase/7/docs/api/ [9] http://developer.android.com/idex.html 99 ... tìm hiểu sở lý thuyết thƣơng mại điện tử, toán điện tử cơng nghệ NFC, từ thiết kế, xây dựng hệ thống toán điện tử ứng dụng công nghệ NFC tảng hệ điều hành di động Android Trong trình thực luận... tốn điện tử an tồn nhanh chóng Thanh toán điện tử vấn đề cố lõi thƣơng mại điện tử Thiếu hạ tầng tốn, chƣa thể có thƣơng mại điện tử hồn chỉnh Do vậy, hệ thống toán điện tử tâm điểm phát triển. .. di động trở thành ví điện tử, thay cho loại thẻ toán phổ biến Trong số hệ điều hành di động hỗ trợ công nghệ NFC, Android hệ điều hành hỗ trợ tốt cho việc phát triển ứng dụng kết hợp công nghệ

Ngày đăng: 26/04/2021, 11:01

Tài liệu cùng người dùng

Tài liệu liên quan