Tải bản đầy đủ (.docx) (101 trang)

Phát triển ví điện tử dựa trên công nghệ thanh toán không tiếp xúc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.63 MB, 101 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN MÔN HỌC
ĐỒ ÁN 1

PHÁT TRIỂN VÍ ĐIỆN TỬ DỰA TRÊN CƠNG
NGHỆ THANH TỐN KHƠNG TIẾP XÚC
Giảng viên hướng dẫn :

TS. Nguyễn Trịnh Đông

Sinh viên thực hiện 1 :

Châu Đức Hiệp

Mã sinh viên 1

20520499

:

Sinh viên thực hiện 2 :

Trần Nam Khánh

Mã sinh viên 2

20520577


:

TP. HỒ CHÍ MINH, THÁNG 7 NĂM 2023


LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc đến thầy đã hướng dẫn, tạo
điều kiện cho nhóm chúng em hồn thành đồ án mơn Đồ án 1.
Trong vịng 11 tuần, qua các buổi học, nhờ sự chỉ dẫn nhiệt tình của thầy, em đã
tiếp thu được những kiến thức quan trọng, bổ ích cùng những góp ý chân thành để
có thể làm được một đồ án hoàn chỉnh. Trong khoảng thời gian thực hiện đồ án, em
đã học hỏi thêm được nhiều kiến thức, kinh nghiệm, biết được quy trình để tạo ra
một sản phẩm phần mềm.
Bên cạnh đó, chúng em xin cảm ơn các bạn bè trong lớp đã động viên, thảo luận và
góp ý cho nhóm đồng thời đã khơi thêm nguồn động lực cho nhóm trong suốt q
trình đầy khó khăn.
Mặc dù đã cố gắng hồn thành báo cáo với tất cả nỗ lực song báo cáo của nhóm
chúng em chắc chắn khơng tránh khỏi những thiếu sót, em rất mong nhận được sự
thơng cảm và góp ý chân thành từ thầy. Nhóm em xin chân thành cảm ơn.

Nhóm sinh viên thực hiện:
Châu Đức Hiệp
Trần Nam Khánh


NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

.......................................................................................................................................................

......................................................................................................................................................


......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................


Tp.HCM, ngày … tháng 7 năm 2023
GVHD

TS. Nguyễn Trịnh Đông


TĨM TẮT
Đồ án với đề tài "Phát triển ví điện tử dựa trên cơng nghệ thanh tốn khơng
tiếp xúc" tập trung vào việc xây dựng một hệ thống ví điện tử cơ bản có khả năng
đáp ứng nhu cầu thanh toán của người dùng và cung cấp cho các đối tác một hệ
thống có khả năng chịu tải tốt, có khả năng mở rộng cao.
Đề tài bắt đầu từ việc tìm hiểu thực trạng, xác định các vấn đề hiện tại cần
giải quyết hoặc cải thiện. Mục tiêu, phạm vi của đề tài và các chức năng cần có của
hệ thống đã được xác định rõ ràng. Bên cạnh việc xử lý các nghiệp vụ chính của hệ
thống, tơi cũng đã tìm hiểu, so sánh và lựa chọn các cơng nghệ mới và phù hợp để
nâng cao trải nghiệm người dùng, tối ưu hóa chi phí phát triển và triển khai.
Với sự phân tích chi tiết các yêu cầu, thời gian phát triển ngắn, và các yêu
cầu, tính năng ít thay đổi, đồ án đã sử dụng mơ hình Waterfall để phát triển hệ
thống. Kết quả thu được trong giai đoạn thiết kế như kiến trúc hệ thống, cơ sở dữ
liệu, giao diện người dùng, và sơ đồ tuần tự được thể hiện thông qua công cụ thiết
kế Figma và Draw.io.
Trong giai đoạn thực hiện, server và client đã được phát triển song song với
công nghệ phù hợp. Bên server, chúng tôi đã sử dụng ExpressJS để xây dựng ứng
dụng, cùng với TypeORM để tạo và tương tác với model. Chúng tôi đã sử dụng
Passport để xác thực người dùng và JWT, cùng với Firebase Admin để gửi thông
báo. Bên client, chúng tôi đã sử dụng Flutter để phát triển ứng dụng cho cả Android
và iOS.
Công việc kiểm thử unit test đã được thực hiện xuyên suốt quá trình phát
triển, và kiểm thử tích hợp đã được thực hiện ở cuối giai đoạn. Trong giai đoạn vận

hành, server đã được triển khai lên Google Cloud, cho phép truy cập dữ liệu thơng
qua API từ bất kỳ thiết bị nào có yêu cầu và trường xác thực hợp lệ.
Phần cuối cùng của đồ án là việc trình bày kết quả đã thực hiện trong cuốn
báo cáo, đưa ra kết luận và hướng phát triển cho hệ thống trong tương lai.


Nội dung đồ án được trình bày trong 5 chương:
-

Chương 01: Tổng quan
Trình bày sơ bộ về thực trạng, nhu cầu thực tế. Xác định mục tiêu và phạm vi

đề tài.
-

Chương 02: Cơ sở lý thuyết, tổng quan công nghệ
Giớ thiệu về giải thuật, những công nghệ, nền tảng được sử dụng trong đồ

án.
-

Chương 03: Phân tích thiết kế ứng dụng
Phân tích yêu cầu, thiết kế, hiện thực và triển khai ứng dụng.

-

Chương 04: Kết luận

-


Chương 05: Cài đặt và thử nghiệm
Những kết quả đạt được sau khi kết thúc đồ án. Những hạn chế, khó khăn

trong q trình phát triển đồ án và nêu ra hướng phát triển trong tương lai.


MỤC LỤC
LỜI CẢM ƠN.............................................................................................................
TÓM TẮT...................................................................................................................
MỤC LỤC...................................................................................................................
DANH MỤC TỪ VIẾT TẮT......................................................................................
Chương 1.
1.1.

TỔNG QUAN....................................................................................1

Khảo sát hiện trạng......................................................................................1

1.1.1.

Nhu cầu thực tế đề tài............................................................................1

1.1.2.

Khảo sát một số ứng dụng hiện có.........................................................1

1.2.

Lí do thực hiện đề tài...................................................................................3


1.3.

Mục tiêu.......................................................................................................4

1.3.1.

Đối tượng sử dụng.................................................................................4

1.3.2.

Yêu cầu..................................................................................................4

Chương 2.

CƠ SỞ LÝ THUYẾT, TỔNG QUAN CƠNG NGHỆ.......................7

2.1.

Cơng nghệ sử dụng......................................................................................7

2.1.1.

Flutter....................................................................................................7

2.1.2.

BloC......................................................................................................9

2.1.3.


ExpressJs.............................................................................................11

2.1.4.

TypeORM...........................................................................................13

2.1.5.

Firebase Cloud Messaging...................................................................16

2.1.6.

JSON Web Token................................................................................18

2.1.7.

MySQL................................................................................................20

Chương 3.

PHÂN TÍCH THIẾT KẾ ỨNG DỤNG............................................22

3.1.

Use case.....................................................................................................22


3.1.1.

Sơ đồ Use case....................................................................................22


3.1.2.

Danh sách Actors.................................................................................23

3.1.3.

Danh sách các Use case.......................................................................23

3.1.4.

Đặc tả Use case....................................................................................24

3.2.

Activity diagram........................................................................................39

3.2.1.

Lược đồ hoạt động đăng nhập.............................................................39

3.2.2.

Lượt đồ hoạt động đăng ký..................................................................39

3.2.3.

Lược đồ hoạt động đăng xuất..............................................................40

3.2.4.


Lược đồ hoạt động OTP......................................................................40

3.2.5.

Lược đồ hoạt động Xem lịch sử giao dịch...........................................41

3.2.6.

Lược đồ hoạt động Chuyển tiền..........................................................41

3.2.7.

Lược đồ hoạt động Liên kết ngân hàng...............................................42

3.2.8.

Lược đồ hoạt động Nạp tiền................................................................42

3.2.9.

Lược đồ hoạt động Rút tiền.................................................................43

3.3.

Thiết kế cơ sở dữ liệu.................................................................................44

3.3.1.

Sơ đồ ERD..........................................................................................44


3.3.2.

Mô tả chi tiết.......................................................................................44

3.4.

Thiết kế hệ thống........................................................................................48

3.5.

Đặc tả API..................................................................................................49

3.5.1.

Đặc tả API cho Authentication:...........................................................49

3.5.2.

Đặc tả API cho User:...........................................................................53

3.5.3.

Đặc tả API cho Transaction:................................................................56

3.5.4.

Đặc tả API cho Wallet:........................................................................59

3.6.


Thiết kế giao diện.......................................................................................61


3.6.1.

Danh sách các màn hình......................................................................61

3.6.2.

Giao diện.............................................................................................64

.......................................................................................................................... 64
Chương 4.

KẾT LUẬN......................................................................................74

4.1.

Kết quả đạt được........................................................................................74

4.2.

Những ưu điểm và hạn chế.........................................................................74

4.2.1.

Ưu điểm...............................................................................................74

4.2.2.


Hạn chế................................................................................................75

4.3.

Hướng phát triển........................................................................................76

Chương 5.

CÀI ĐẶT VÀ THỬ NGHIỆM.........................................................77

5.1.

Môi trường cài đặt......................................................................................77

5.2.

Các thư viện, framework liên quan............................................................77

5.3.

Kiểm thử phần mềm...................................................................................77

5.4.

Hướng dẫn cài đặt......................................................................................77

TÀI LIỆU THAM KHẢO.......................................................................................78



DANH MỤC TỪ VIẾT TẮT
STT
1
2
3
4
5
6

Tên
STT
PK
FK
ERD
UI
UX

CHƯƠNG 1.
1.1.

Diễn giải
Số thứ tự
Primary key
Foreign key
Entity relationship diagram
User interface
User experience

TỔNG QUAN


Khảo sát hiện trạng
1.1.1.

CHƯƠNG 2.

Nhu cầu thực tế đề tài

Hiện nay, với sự phát triển mạnh mẽ của công nghệ

thông tin, các dịch vụ ngân hàng, thanh toán điện tử trở nên phổ biến hơn. Q trình
thanh tốn khơng tiếp xúc ngày càng trở nên quan trọng, đặc biệt trong bối cảnh
dịch Covid. Từ đó nhu cầu về sử dụng ví điện tử ngày càng tăng cao, tạo ra cơ hội
phát triển cho các ứng dụng ví điện tử.
2.1.1.
2.1.1.1.

Khảo sát một số ứng dụng hiện có

Momo

1. Tổng quan

CHƯƠNG 3.

Momo là một ứng dụng ví điện tử hàng đầu tại Việt

Nam, được thành lập vào năm 2013. Momo cung cấp dịch vụ ví điện tử cho phép
người dùng thanh tốn hóa đơn, chuyển tiền, mua hàng trực tuyến một cách nhanh
chóng và tiện lợi. Momo có giao diện dễ sử dụng, hệ thống thanh toán an tồn và
các chương trình khuyến mãi hấp dẫn.



2. Chức năng chính


CHƯƠNG 4.


CHƯƠNG 5.
5.1.1.1.

Hình 1.1: Chức năng chính của momo (chuyển tiền)
ZaloPay

1. Tổng quan

CHƯƠNG 6. ZaloPay là một ứng dụng ví điện tử được phát triển bởi Zalo
Group. Với ZaloPay, người dùng có thể thanh tốn hóa đơn, chuyển tiền, mua hàng
trực tuyến, nạp tiền điện thoại và nhiều hơn thế. ZaloPay cung cấp giao diện thân
thiện, hệ thống thanh toán an toàn và các ưu đãi hấp dẫn cho người dùng.


2. Chức năng chính

CHƯƠNG 7.

CHƯƠNG 8.

Hình 1.2: Chức năng chính của zalopay (chuyển tiền)



8.1.

Lí do thực hiện đề tài

CHƯƠNG 9.

Đại dịch COVID-19, dù đã qua, nhưng để lại nhiều hậu quả và

thay đổi lớn trong cách sống và làm việc của chúng ta. Một trong những thay đổi
đó là xu hướng chuyển dịch mạnh mẽ từ giao dịch tiếp xúc trực tiếp sang thanh
tốn khơng tiếp xúc để giảm thiểu rủi ro lây nhiễm từ mơi trường xung quanh.

CHƯƠNG 10.

Cơng nghệ thanh tốn không tiếp xúc thông qua NFC (Near

Field Communication) đã phát triển mạnh mẽ và trở thành một giải pháp hiệu
quả để đáp ứng xu hướng này. Tuy nhiên, dù công nghệ này đã trở nên khá phổ
biến ở nhiều nước phát triển, nhưng tại Việt Nam, NFC vẫn chưa được ứng dụng
rộng rãi. Phần lớn người dùng tại Việt Nam đang sử dụng các ứng dụng ví điện
tử như Momo, Zalopay để thực hiện các giao dịch thanh toán, nhưng đáng tiếc là
hai ứng dụng này hiện tại vẫn chưa hỗ trợ cơng nghệ NFC. Đây là một bài tốn
thực tế và thách thức đang đặt ra, và cũng chính là động lực để thực hiện đề tài
"Phát triển ví điện tử dựa trên cơng nghệ thanh tốn khơng tiếp xúc".

CHƯƠNG 11.

Vì vậy, đề tài "Phát triển ví điện tử dựa trên cơng nghệ thanh


tốn khơng tiếp xúc" được đưa ra nhằm giải quyết vấn đề trên. Ứng dụng này sẽ
được thiết kế hướng đến đối tượng người dùng là những người thường xuyên sử
dụng thanh toán điện tử trong cuộc sống hàng ngày và muốn tận dụng công nghệ
NFC để tăng cường tiện ích và an ninh trong các giao dịch của mình.

CHƯƠNG 12.

Đối tượng mục tiêu của ứng dụng là những người thường

xuyên sử dụng thanh toán điện tử trong cuộc sống hàng ngày, muốn tận dụng
công nghệ NFC để tăng cường tiện ích và an ninh trong các giao dịch của mình.
Qua đề tài này, khơng chỉ thúc đẩy sự tiếp nhận cơng nghệ thanh tốn khơng tiếp
xúc tại Việt Nam, mà còn nâng cao trải nghiệm của người dùng, tạo nên một sự
thay đổi tích cực sau thời kỳ đại dịch.
12.1.
-

Mục tiêu
Người dùng có thể thao tác cơ bản như tạo tài khoản, nạp tiền, chuyển
tiền, thanh toán.


-

Chủ hệ thống có thể phát triển dễ dàng với chi phí thấp.

-

Hệ thống gọn nhẹ, an tồn.


-

Có thể mở rộng dễ dàng.
12.1.1.

-

Đối tượng sử dụng

Người dung điện thoại di động có nhu cầu thanh tốn khơng tiếp xúc.
12.1.2.

u cầu

12.1.2.1. Yêu cầu chức năng
 Đối với người mua
o Quản lý tài khoản (đăng nhập, đăng ký,)
o Liên kết ngân hàng
o Nạp tiền, rút tiền, chuyển tiền
o Theo dõi lịch sử chuyển/nhận tiền
o Thanh tốn khơng tiếp xúc (nfc)
12.1.2.2. u cầu phi chức năng
 Yêu cầu về giao diện:
-

Giao diện thân thiện, bố cục hợp lý, dễ sử dụng.

-

Giao diện thống nhất, đồng bộ, không gây bất ngờ cho người

sử dụng.

-

Màu sắc, vị trí, hiển thị của các component có tính đồng bộ.

 Yêu cầu về độ tin cậy, bảo mật:
-

Có sử dụng phân quyền cho từng loại người dùng.

-

Dữ liệu tài khoản người dùng được bảo mật.

-

Dữ liệu không bị xóa hồn tồn, có thể khơi phục lại.

 u cầu về độ tương thích:
o Đối với ứng dụng di động:
-

Android: hỗ trợ từ phiên bản Android 6.0 trở lên

-

iOS: Hỗ trợ từ phiên bản iOS 12 trở lên



 Yêu cầu về khả năng phát triển:
-

Dễ dàng nâng cấp tính năng đã có nhờ vào sự hệ thống hóa
trong khâu xử lý.

-

Dễ dàng mở rộng khi có nhu cầu phát triển.

 Yêu cầu về tính hiệu quả:
-

Hệ thống quản lý dữ liệu một cách logic.

-

Hiệu năng ổn định tránh gây khó chịu cho người dùng.

-

Có khả năng chịu tải tốt.

-

Khả năng mở rộng tùy chỉnh phụ thuộc theo tình hình tài chính
của chủ sở hữu.

CHƯƠNG 13.
CHƯƠNG 14.



CHƯƠNG 15.
CƠ SỞ LÝ THUYẾT, TỔNG QUAN CƠNG NGHỆ
15.1.

Cơng nghệ sử dụng
15.1.1.

Flutter

CHƯƠNG 16.
CHƯƠNG 17.
CHƯƠNG 18.

Hình 2.1 Logo Flutter1

Flutter là một framework phát triển ứng dụng di động

mã nguồn mở được tạo ra bởi Google. Ra mắt lần đầu vào tháng 5 năm 2017 tại sự
kiện Google Developer Days ở Shanghai, Flutter đã tạo ra một sự thay đổi lớn trong
cách chúng ta phát triển ứng dụng di động.

CHƯƠNG 19.

So với các công nghệ phát triển ứng dụng khác, Flutter

mang đến một số đặc điểm nổi trội:

CHƯƠNG 20.


- Cross-platform: Flutter cho phép phát triển cả ứng

dụng Android và iOS từ một bộ mã nguồn duy nhất, giảm thiểu thời gian và công
sức cần thiết để xây dựng, kiểm tra và duy trì ứng dụng.

CHƯƠNG 21.

- Hiệu suất cao: Flutter sử dụng ngôn ngữ Dart, một

ngôn ngữ chạy "AOT" (Ahead of Time) để biên dịch trực tiếp vào mã máy, giúp
tăng tốc độ khởi chạy và hiệu suất của ứng dụng.

CHƯƠNG 22.

- Hệ thống widget: Thay vì sử dụng các component có

sẵn của hệ điều hành, Flutter xây dựng giao diện người dùng từ các widget của

1

Nguồn:


riêng nó, giúp tạo ra những ứng dụng có giao diện đẹp và thống nhất trên mọi nền
tảng.

CHƯƠNG 23.

- Hot Reload: Khả năng này của Flutter giúp lập trình


viên thấy được kết quả của thay đổi mã ngay lập tức mà không cần khởi động lại
ứng dụng, tăng năng suất phát triển đáng kể.

CHƯƠNG 24.

Trong dự án của chúng tôi, Flutter đã được sử dụng để

tạo ra một ứng dụng di động đa nền tảng chạy trên cả iOS và Android. Chúng tôi đã
tận dụng đầy đủ các đặc điểm mạnh của Flutter, từ hiệu suất cao, hệ thống widget
mạnh mẽ, cho đến khả năng hot reload, để xây dựng một ứng dụng chất lượng cao
mà vẫn tiết kiệm được thời gian và nguồn lực.

CHƯƠNG 25.

Một tính năng quan trọng khác của ứng dụng chúng tơi

là khả năng thanh tốn thông qua NFC. Để hỗ trợ chức năng này, chúng tôi đã sử
dụng các thư viện như flutter_nfc_kit và nfc_in_flutter. Nhờ sự hỗ trợ từ những thư
viện này, ứng dụng có thể giao tiếp với các thiết bị hỗ trợ NFC để thực hiện các
giao dịch thanh toán một cách an tồn và thuận tiện.

CHƯƠNG 26.

Flutter khơng chỉ là một cơng cụ phát triển ứng dụng đa

nền tảng, mà cịn mang đến một phương pháp mới để xây dựng giao diện người
dụng, giúp tạo ra những ứng dụng thú vị và thu hút người dùng. Cùng với sự hỗ trợ
của một cộng đồng lập trình viên đơng đảo và năng động, Flutter đã nhanh chóng
trở thành một lựa chọn phổ biến trong việc phát triển ứng dụng di động.


CHƯƠNG 27.

Điểm đặc biệt, Flutter không chỉ hỗ trợ Android và iOS,

mà cịn có thể được sử dụng để phát triển ứng dụng cho web và desktop, làm cho nó
trở thành một cơng cụ phát triển ứng dụng tồn diện, phù hợp với nhiều nhu cầu và
môi trường khác nhau.

CHƯƠNG 28.

Đặc biệt, Flutter rất thân thiện với các lập trình viên.

Ngơn ngữ lập trình Dart rất dễ học và sử dụng, giúp lập trình viên nhanh chóng làm
quen và phát triển ứng dụng với Flutter. Hơn nữa, tài liệu hướng dẫn của Flutter rất


chi tiết và dễ hiểu, giúp lập trình viên có thể tự học và tìm hiểu về cơng nghệ này
một cách hiệu quả.

CHƯƠNG 29.

Nhìn chung, nhờ Flutter, chúng tơi đã có thể tạo ra một

ứng dụng di động chất lượng cao mà vẫn tiết kiệm được thời gian và nguồn lực. Sự
linh hoạt và thân thiện của Flutter đã giúp chúng tôi thực hiện được mục tiêu này.
29.1.1.

BloC


CHƯƠNG 30.

CHƯƠNG 31.
CHƯƠNG 32.

Hình 2.2 Mơ hình BloC

Mơ hình BLoC (Business Logic Component) là một mơ hình

thiết kế được đề xuất bởi Paolo Soares và Cong Hui từ Google để giúp tách biệt
phần giao diện người dùng (UI) và phần logic xử lý trong ứng dụng Flutter.

CHƯƠNG 33.

BLoC sử dụng luồng dữ liệu reactive (dựa trên Streams) làm

trung gian giữa nguồn dữ liệu và UI, giúp tách rõ ràng giữa UI và logic xử lý,
giúp code dễ đọc, dễ quản lý, dễ test hơn.

CHƯƠNG 34.

Bên dưới là các khái niệm chính trong mơ hình BLoC:

 Events: Events là các input cho BLoC. Ví dụ như user interactions,
lifecycle events, vv.
 States: States là output của BLoC, thường được UI lắng nghe để cập nhật
giao diện.


 BLoC: BLoC nhận events từ Stream, xử lý logic và sau đó map events

thành states, xuất ra từ Stream.

CHƯƠNG 35.

Một BLoC cơ bản sẽ có dạng như sau:

CHƯƠNG 36.

CHƯƠNG 37.

Hình 2.3 Ví dụ về BloC



×