Tải bản đầy đủ (.pdf) (61 trang)

Đồ án phát triển sàn thương mại điện tử cho sản phẩm ocop

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 (4.14 MB, 61 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

NGHI LÂM MINH KHÔI

ĐỒ ÁN 1

PHÁT TRIỂN SÀN THƯƠNG MẠI ĐIỆN TỬ
CHO SẢN PHẨM OCOP

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


ĐẠ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

NGHI LÂM MINH KHÔI - 20520593

ĐỒ ÁN 1

PHÁT TRIỂN SÀN THƯƠNG MẠI ĐIỆN TỬ
CHO SẢN PHẨM OCOP

GIẢNG VIÊN HƯỚNG DẪN
TS. NGUYỄN TRỊNH ĐÔNG

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 em chúng em hoà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 em đồng thời đã khơi thêm nguồn động lực cho em trong suốt quá 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 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. Em xin chân thành cảm ơn.
Thành phố Hồ Chí Minh, tháng 6 năm 2023
Nghi Lâm Minh Khôi


TÓM TẮT
Đồ án với đề tài “Phát triển sàn thương mại điện tử cho sản phẩm OCOP” tập
trung vào việc xây dựng một hệ thống sàn thương mại điện tử cơ bản có thể đáp ứng
cho khách hàng về mặt mua hàng, đáp ứng cho chủ doanh nghiệp một hệ thống có
khả năng chịu tải tốt, khả năng phát triển cao.
Đề tài được bắt đầu từ việc tìm hiểu thực trạng, đưa ra các vấn đề cịn tồn
đọng hoặc có thể cải thiện. Xác định mục tiêu, phạm vi của đề tài cũng như các
chức năng cần có của hệ thống. Ngoài việc xử lý các nghiệp vụ cho hệ thống, em
cũng đã tìm hiểu, so sánh và lựa chọn được các công nghệ mới và phù hợp giúp
nâng cao trải nghiệm người dùng, tối ưu chi phí phát triển và triển khai.
Nhờ việc phân tích các yêu cầu rõ ràng, thời gian phát triển ngắn và các yêu

cầu, tính năng ít thay đổi, trong q trình phát triển đề tài đã sử dụng mơ hình
Waterfall cho việc xây dựng 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 được thể hiện bằng sơ đồ người
dùng, sơ đồ tuần tự và bản thiết kế sử dụng công cụ Figma và Draw.io. Trong giai
đoạn thực hiện, client và server được phát triển song song sử dụng thư viện ReactJs
cho client và Java với Spring Boot framework cho server, công cụ phát triển Intellij
Idea cùng công cụ quản lý công việc Notion. 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à được kiểm thử tích hợp ở cuối giai đoạn.
Trong giai đoạn vận hành, server đã được triển khai lên máy chủ cá nhân, hồn tồn
có thể truy cập dữ liệu thơng qua api từ bất cứ thiết bị nào gửi yêu cầu có chứa
trường xác thực dữ liệu hợp lệ.
Phần cuối cùng của đồ án là trình bày kết quả đã thực hiện lên 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 .............................................................................................................3
TÓM TẮT ...................................................................................................................4
MỤC LỤC ..................................................................................................................6
DANH MỤC TỪ VIẾT TẮT ...................................................................................27
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.

Mục tiêu.........................................................................................................3

1.2.1.

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

1.2.2.

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

Chương 2.

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

2.1.

Công nghệ sử dụng ........................................................................................6

2.1.1.

React .......................................................................................................6

2.1.2.


React Redux............................................................................................8

2.1.3.

Sematic UI ..............................................................................................9

2.1.1.

Spring Boot ...........................................................................................10

2.1.2.

Redis .....................................................................................................11

2.1.3.

Docker ..................................................................................................12

2.1.4.

JSON Web Token .................................................................................12

2.1.5.

Stripe.....................................................................................................15

2.1.6.

MySQL .................................................................................................16


Chương 3.

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


3.1.

Use case .......................................................................................................17

3.1.1.

Sơ đồ Use case ......................................................................................17

3.1.2.

Danh sách Actors ..................................................................................17

3.1.3.

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

3.1.4.

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

3.2.

Activity diagram ..........................................................................................26

3.2.1.


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

3.2.2.

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

3.2.3.

Lược đồ quản lý địa chỉ ........................................................................27

3.2.4.

Lược đồ hoạt động tìm kiếm sản phẩm ................................................28

3.2.5.

Lược đồ hoạt động xem chi tiết sản phẩm ............................................29

3.2.6.

Lược đồ hoạt động thêm sản phẩm vào giỏ hàng .................................30

3.2.7.

Lược đồ hoạt động đặt hàng .................................................................31

3.3.

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


3.3.1.

Sơ đồ ERD ............................................................................................32

3.3.2.

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

3.4.

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

3.5.

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

Chương 4.

KẾT LUẬN .......................................................................................48

4.1.

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

4.2.

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

4.2.1.


Ưu điểm ................................................................................................48

4.2.2.

Hạn chế .................................................................................................49

4.3.

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


Chương 5.

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

5.1.

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

5.2.

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

5.3.

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

5.4.


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

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


DANH MỤC TỪ VIẾT TẮT
STT

Tên

Diễn giải

1

STT

Số thứ tự

2

PK

Primary key

3

FK

Foreign key


4

ERD

Entity relationship diagram

5

DOM

Document Object Model

6

UI

User interface

7

UX

User experience


CHƯƠNG 1.
1.1.

TỔNG QUAN


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

1.1.1. Nhu cầu thực tế đề tài
Hiện nay, q trình số hóa của các cửa hàng ngày càng tăng cao cùng với việc
đại dịch Covid diễn ra tạo nên một sự thay đổi lớn về vấn đề mua sắm của người dân.
Từ đó nhu cầu về mua sắm thông qua các trang web cửa hàng và sàn thương mại điện
tử tăng cao kéo theo việc . Các thành phố lớn phát triển hạ tầng chưa đồng đều, chưa
xem trong hạ tầng bãi đỗ. Từ đó, ta thấy cơ sở hạ tầng và nhu cầu không thỏa mãn,
dẫn đến việc khó khăn khi tìm kiếm bãi đỗ xe. Do đó, em quyết định xây dựng phần
mềm Tìm kiếm bãi đỗ xe.
1.1.2. Khảo sát một số ứng dụng hiện có
1.1.2.1.

Shopee

1. Tổng quan
Shopee là một nền tảng thương mại điện tử hàng đầu tại Đông Nam Á, được
thành lập vào năm 2015. Nó kết nối người mua và người bán từ nhiều quốc gia
trong khu vực, cung cấp một loạt sản phẩm và dịch vụ đa dạng. Shopee có giao diện
dễ sử dụng, hệ thống thanh tốn an tồn và các chương trình khuyến mãi hấp dẫn.
Nền tảng này cịn có Shopee Mall, nơi người dùng mua hàng chính hãng, và dịch vụ
giao hàng nhanh chóng. Shopee đã trở thành một trong những nền tảng thương mại
điện tử phổ biến nhất tại Đông Nam Á.

1


2. Chức năng chính

1.1.2.2.


Lazada

1. Tổng quan
Lazada là một trong những nền tảng thương mại điện tử hàng đầu tại Đông Nam
Á. Với hàng ngàn người bán và người mua tham gia, Lazada cung cấp một trải
nghiệm mua sắm trực tuyến thuận tiện và đa dạng. Với các danh mục sản phẩm đa
dạng như điện tử, thời trang và đồ gia dụng, Lazada đáp ứng nhu cầu mua sắm của
người dùng. Giao diện dễ sử dụng và các ưu đãi hấp dẫn giúp Lazada trở thành lựa
chọn phổ biến cho người tiêu dùng tại Đông Nam Á.

2


a. Chức năng chính

1.2.

Mục tiêu

-

Người dùng có thể thao tác cơ bản như tạo tài khoản, mua đặt hàng.

-

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ẹ.

-

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

3


1.2.1. Đối tượng sử dụng
- Người có nhu cầu mua các sản phẩm OCOP
1.2.2. Yêu cầu
1.2.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 Tìm kiếm sản phẩm.
o Chọn lựa sản phẩm.
o Đặt mua.
o Quản lý hóa đơn thanh tốn.
o Quản lý địa chỉ giao hàng.
o Thanh tốn tiện lợi
1.2.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ộ.

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 web

-

IE11 / Edge

-

Firefox: 2 version gần nhất

-

Chrome: 2 version gần nhất

-

Safari: 2 version gần nhất

4




-

Opera: 2 version gần nhất

-

Electron: 2 version gần nhất

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.

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.

5



CHƯƠNG 2.
2.1.

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

Cơng nghệ sử dụng

2.1.1. React

Hình 2-1 Logo thư viện React1
ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm
2013, bản thân nó là một thư viện Javascript được dùng để để xây dựng các tương
tác với các thành phần trên website. Một trong những điểm nổi bật nhất của ReactJS
đó là việc render dữ liệu khơng chỉ thực hiện được trên tầng Server mà còn ở dưới
Client.
Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt
động trên phía client, mà cịn được render trên server và có thể kết nối với nhau.
React so sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và
cập nhật ít thay đổi nhất trên DOM. Trước khi đến cài đặt và cấu hình, chúng ta sẽ
đi đến một số khái niệm cơ bản:
-

Virtual DOM:
công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng. Việc chỉ node gốc

mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại tồn bộ, đồng nghĩa với việc
DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý.
React JS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này.Virtual DOM là
một object Javascript, mỗi object chứa đầy đủ thông tin cần thiết để tạo ra một
DOM, khi dữ liệu thay đổi nó sẽ tính tốn sự thay đổi giữa object và tree thật, điều

này sẽ giúp tối ưu hoá việc re-render DOM tree thật. React sử dụng cơ chế one-way

1

Nguồn />
6


data binding – luồng dữ liệu 1 chiều. Dữ liệu được truyền từ parent đến child thông
qua props. Luồng dữ liệu đơn giản giúp chúng ta dễ dàng kiểm soát cũng như sửa
lỗi. Với các đặc điểm ở trên, React dùng để xây dựng các ứng dụng lớn mà dữ liệu
của chúng thay đổi liên tục theo thời gian. Dữ liệu thay đổi thì hầu hết kèm theo sự
thay đổi về giao diện. Ví dụ như Facebook: trên Newsfeed của bạn cùng lúc sẽ có
các status khác nhau và mỗi status lại có số like, share, comment liên tục thay đổi.
Khi đó React sẽ rất hữu ích để sử dụng.
-

Giới thiệu về JSX:
JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript.

Đặc điểm: Faster: Nhanh hơn. JSX thực hiện tối ưu hóa trong khi biên dịch sang mã
Javacsript. Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã
tương đương viết trực tiếp bằng Javascript. Safer: an toàn hơn. Ngược với
Javascript, JSX là kiểu statically-typed, nghĩa là nó được biên dịch trước khi chạy,
giống như Java, C++. Vì thế các lỗi sẽ được phát hiện ngay trong q trình biên
dịch. Ngồi ra, nó cũng cung cấp tính năng gỡ lỗi khi biên dịch rất tốt. Easier: Dễ
dàng hơn. JSX kế thừa dựa trên Javascript, vì vậy rất dễ dàng để cho các lập trình
viên Javascripts có thể sử dụng (tham khảo tại />-

Giới thiệu về Components:

React được xây dựng xung quanh các component, chứ không dùng template

như các framework khác. Trong React, chúng ta xây dựng trang web sử dụng những
thành phần (component) nhỏ. Chúng ta có thể tái sử dụng một component ở nhiều
nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một component lại có
thể chứa thành phần khác. Mỗi component trong React có một trạng thái riêng, có
thể thay đổi, và React sẽ thực hiện cập nhật component dựa trên những thay đổi của
trạng thái. Mọi thứ React đều là component. Chúng giúp bảo trì mã code khi làm
việc với các dự án lớn. Một react component đơn giản chỉ cần một method render.
Có rất nhiều methods khả dụng khác, nhưng render là method chủ đạo.

7


-

Props và State:
Props: giúp các component tương tác với nhau, component nhận input gọi là

props, và trả thuộc tính mơ tả những gì component con sẽ render. Prop là bất biến.
State: thể hiện trạng thái của ứng dụng, khi state thay đồi thì component đồng thời
render lại để cập nhật UI.
2.1.2. React Redux

Hình 2-2 Logo thư viện React Redux2
Redux là một predictable state management tool cho các ứng dụng
Javascript. Nó giúp bạn viết các ứng dụng hoạt động một cách nhất quán, chạy
trong các môi trường khác nhau (client, server, and native) và dễ dàng để test.
Redux ra đời lấy cảm hứng từ tư tưởng của ngôn ngữ Elm và kiến trúc Flux của
Facebook. Do vậy Redux thường dùng kết hợp với React.

Các thành phần trong Redux:
-

Actions đơn giản là các events. Chúng là cách mà chúng ta send data từ app
đến Redux store. Những data này có thể là từ sự tương tác của user vs app,
API calls hoặc cũng có thể là từ form submission.

-

Reducers là các function nguyên thủy chúng lấy state hiện tại của app, thực
hiện một action và trả về một state mới. Những states này được lưu như
những objects và chúng định rõ cách state của một ứng dụng thay đổi trong
việc phản hồi một action được gửi đến store.

2

Nguồn: />
8


-

Store lưu trạng thái ứng dụng và nó là duy nhất trong bất kỳ một ứng dụng
Redux nào. Bạn có thể access các state được lưu, update state, và đăng ký or
hủy đăng ký các listeners thơng qua helper methods.

Hình 2.3 Các thành phần của Redux3
2.1.3. Sematic UI

Hình 2-4 Logo thư viện Sematic UI

Semantic UI được dựng trên LESS và jQuery. Mục tiêu của framework là
cho phép designer và developer có khả năng chia sẻ UI thơng qua 1 ngơn ngữ
chung. Điều đó được thể hiện qua cách sử dụng ngôn ngữ mô tả để đặt tên cho các
lớp và các quy chuẩn thay thế cho việc sử dụng các từ viết tắt ở các framework
khác. Yếu tố này khiến cho Semantic UI gần gũi hơn với cộng đồng sử dụng tiếng
anh. Ngoải ra còn phải kể đến một điểm cộng nữa của Semantic UI, nó được thiết

3

Nguồn:

9


kế phẳng với kiểu dáng đẹp, tinh tế mang lại cho người dùng cảm giác gọn nhẹ
đúng với xu hướng thiết kế hiện đại ngày nay.
Semantic UI đặc biệt ở 2 điểm. Đầu tiên là phương thức framework được cấu
thành. Nó sử dụng 5 hạng mục mơ tả để định nghĩa các thành phân UI có khả năng
tái sử dụng:
• UI Element là một khối dựng cơ bản. Nó có thể xuất hiện một mình
hay một nhóm thống nhất. Ví dụ như 1 button đọc lập hoặc một nhóm
các button.
• UI Collection là một nhóm các loại thuộc tính khác nhau có sự liên
kết. Ví dụ 1 form có thể có các button, input, checkbox, icon ...
• UI View là đại diện cho một phần của nội dung website. Ví dụ như
feed hoặc comment.
• UI Module là thành phần tương tác với các chức năng dựa trên
JavaScript. Ví dụ accordion, dimmer, modal ...
• UI Behavior là mơt thành phần khơng thể tồn tại độc lập, nhưng thay
vào đó nó được sử dụng để them các chức năng vào các thành phần

khác. Ví dụ, form validation cung cấp chức năng xác nhận cho form.
2.1.1. Spring Boot

Hình 2-5 Logo Spring Boot

10


Spring Boot là một framework phát triển ứng dụng Java mạnh mẽ, tập trung
vào việc tạo ra các ứng dụng Java độc lập, tự chạy và dễ triển khai. Nó được xây
dựng dựa trên nền tảng Spring Framework, một trong những framework phổ biến
nhất trong cộng đồng Java.
Spring Boot giúp đơn giản hóa việc phát triển ứng dụng Java bằng cách cung
cấp cấu hình mặc định và tự động cấu hình nhiều phần mềm của Spring Framework.
Điều này giúp bạn tập trung vào việc viết mã ứng dụng chính mà khơng phải lo lắng
về cấu hình phức tạp.
2.1.2. Redis

Hình 2-6 Logo Redis
Redis (REmote DIctionary Server) là một hệ thống cơ sở dữ liệu mã nguồn
mở dựa trên kiến trúc dữ liệu key-value (khóa-giá trị). Nó được xây dựng để cung
cấp hiệu suất cao, độ tin cậy và khả năng mở rộng trong việc lưu trữ và truy xuất dữ
liệu.
Redis hỗ trợ nhiều loại dữ liệu, bao gồm chuỗi (strings), danh sách (lists), bộ
định hướng (sets), bản đồ (hashes), tập hợp sắp xếp (sorted sets) và các cấu trúc dữ
liệu phức tạp khác như HyperLogLogs và Bitmaps. Điều này cho phép Redis được
sử dụng cho một loạt các tác vụ, từ lưu trữ bộ nhớ đệm (caching) đến việc xử lý dữ
liệu thời gian thực.

11



2.1.3. Docker

Hình 2.7 Logo Docker
Docker là một nền tảng mã nguồn mở cho việc tạo, triển khai và quản lý các
ứng dụng trong các mơi trường ảo hóa. Nó giúp đóng gói ứng dụng cùng với tất cả
các phụ thuộc của nó vào một gói gọi là "container". Mỗi container hoạt động như
một mơi trường độc lập, đảm bảo tính nhất quán và đồng nhất giữa các môi trường
thực thi.
Docker sử dụng công nghệ hệ điều hành cấp vỏ (OS-level virtualization) để
tạo ra các container nhẹ nhưng cơ lập hồn tồn. Mỗi container chứa tất cả những gì
cần thiết để chạy một ứng dụng, bao gồm mã nguồn, các thư viện, biến mơi trường
và cấu hình. Điều này giúp đảm bảo rằng ứng dụng sẽ chạy đúng cách và đồng nhất
trên mọi mơi trường.
2.1.4. JSON Web Token

Hình 2.8 Logo JSON Web Token (JWT)4

4

Nguồn: />
12


JSON Web Token (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách
nhỏ gọn và khép kín để truyền một cách an tồn thơng tin giữa các bên dưới dạng
đối tượng JSON. Thơng tin này có thể được xác minh và đáng tin cậy vì nó có chứa
chữ ký số. JWTs có thể được ký bằng một thuật tốn bí mật (với thuật tốn HMAC)
hoặc một public / private key sử dụng mã hố RSA.

Một ví dụ về JWT Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEs
ImlzcyI6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y2ExZTQxZGY
3YmM5MGM4YWI2ZDBmNjIwN2Q0OTFjZjZkYWQ3YzY2ZWE3OTdiNDYxN
GI3MTkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQ.uKqU9dTB6gKwG6jQCuXY
AiMNdfNRw98Hw_IWuA5MaMo
Thoạt trông phức tạp là thế nhưng nếu hiểu, cấu trúc của một JWT chỉ đơn
giản như sau:
<base64-encoded header>.<base64-encoded payload>.signature>
Nói một cách khác, JWT là sự kết hợp (bởi dấu .) một Object Header dưới
định dạng JSON được encode base64, một payload object dưới định dạng JSON
được encode base64 và một Signature cho URI cũng được mã hóa base64.
Thành phần JWT:
-

Header: bao gồm hai phần chính: loại token (mặc định là JWT - Thông tin
này cho biết đây là một Token JWT) và thuật tốn đã dùng để mã hóa
(HMAC SHA256 - HS256 hoặc RSA).

13


Hình 2.9 Nội dung header JWT
-

Payload chứa các claims. Claims là một các biểu thức về một thực thể (chẳng
hạn user) và một số metadata phụ trợ. Có 3 loại claims thường gặp trong
Payload: reserved, public và private claims.


§ Reserved claims: Đây là một số metadata được định nghĩa trước, trong đó
một số metadata là bắt buộc, số cịn lại nên tuân theo để JWT hợp lệ và đầy
đủ thông tin: iss (issuer), iat (issued-at time) exp (expiration time), sub
(subject), aud (audience), jti (Unique Identifier cho JWT.

Hình 2.10 Nội dung Reserved claims
§ Public Claims - Claims được cộng đồng cơng nhận và sử dụng rộng rãi.
§ Private Claims - Claims tự định nghĩa (không được trùng với Reserved
Claims và Public Claims), được tạo ra để chia sẻ thông tin giữa 2 parties đã
thỏa thuận và thống nhất trước đó.
-

Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header,
payload cùng với một chuỗi bí mật theo nguyên tắc sau:

Hình 2.11 Ngun tắc chuỗi bí mật

14


-

Do bản thân Signature đã bao gồm cả header và payload nên Signature có thể
dùng để kiểm tra tính tồn vẹn của dữ liệu khi truyền tải.
2.1.5. Stripe

Hình 2-12 Logo Stripe
Stripe là một cơng ty cơng nghệ tài chính đặt trụ sở tại San Francisco,
California. Công ty này được thành lập vào năm 2010 bởi hai doanh nhân Patrick
Collison và John Collison. Stripe cung cấp một nền tảng thanh toán trực tuyến cho

các doanh nghiệp và nhà phát triển, giúp họ chấp nhận thanh toán trực tuyến một
cách dễ dàng và bảo mật.
Với Stripe, các doanh nghiệp có thể tích hợp thanh toán trực tuyến vào các
ứng dụng và trang web của mình thơng qua các API và các sản phẩm của Stripe.
Cơng ty này hỗ trợ thanh tốn bằng các phương thức khác nhau, bao gồm thẻ tín
dụng và thẻ ghi nợ quốc tế, ví điện tử như Apple Pay và Google Pay, cũng như các
phương thức thanh toán kỹ thuật số như Bitcoin và Alipay.
Stripe nổi tiếng với việc cung cấp một trải nghiệm thanh toán trực tuyến dễ
dàng và linh hoạt cho cả người bán và người mua. Họ cung cấp các tính năng bảo
mật mạnh mẽ như mã hóa dữ liệu và xác thực hai yếu tố để đảm bảo rằng các giao
dịch được thực hiện một cách an toàn và riêng tư.

15


2.1.6. MySQL

Hình 2-13 Logo MySQL
MySQL là một hệ quản trị cơ sở dữ liệu quan hệ phổ biến và mạnh mẽ. Được
phát triển từ năm 1995, MySQL đã trở thành một phần không thể thiếu trong nền
tảng phát triển phần mềm hiện đại.

Với MySQL, bạn có thể tạo, quản lý và truy vấn dữ liệu một cách dễ dàng.
Nó hỗ trợ ngôn ngữ truy vấn SQL (Structured Query Language), cho phép bạn thực
hiện các thao tác như tạo, đọc, cập nhật và xóa dữ liệu từ cơ sở dữ liệu.
MySQL có hiệu suất tốt và khả năng mở rộng linh hoạt. Nó có thể xử lý số
lượng lớn người dùng và tải truy vấn một cách hiệu quả, đồng thời hỗ trợ các tính
năng như sao lưu và phục hồi dữ liệu, cân bằng tải và nhân rộng dữ liệu.
Ngoài ra, MySQL cũng cung cấp các tính năng an ninh để bảo vệ dữ liệu của
bạn. Bạn có thể thiết lập quyền truy cập chi tiết cho người dùng và thiết lập các ràng

buộc để đảm bảo tính tồn vẹn và an toàn của cơ sở dữ liệu.
MySQL được sử dụng rộng rãi trong các ứng dụng web, hệ thống quản lý nội
dung (CMS), ứng dụng di động và nhiều lĩnh vực khác. Nó được cộng đồng phát
triển đơng đảo và có nhiều tài liệu, hỗ trợ và cơng cụ hữu ích để giúp bạn làm việc
với cơ sở dữ liệu một cách hiệu quả.

16


×