Preview text:
lOMoARcPSD| 59149108
2.2 Công cụ và nền tảng phát triển hệ thống thanh toán tích hợp VNPay
Trong quá trình xây d ng h th ng website xem phim tr c tuy n “Đ i Vi t” tích ự ệ ố ự ế ạ ệ
h p thanh toán b ng VNPay, em đã l a ch n nh ng công ngh ph bi n và m nh ợ ằ ự ọ ữ ệ ổ
ế ạ mẽ hi n nay: Node.js cho backend, React.js cho frontend và MongoDB cho c s d ệ
ơ ở ữ li u. Vi c k t h p ba công ngh này không ch đ m b o hi u su t ho t đ ng cao ệ ệ ế ợ ệ ỉ
ả ả ệ ấ ạ ộ mà còn h tr r t t t cho vi c tích h p các API bên ngoài nh VNPay. Bên c nh đó, ỗ
ợ ấ ố ệ ợ ư ạ s linh ho t trong cách các công ngh này giao ti p v i nhau giúp toàn b h th ng
ự ạ ệ ế ớ ộ ệ ố v n hành m t cách tr n tru và d dàng m r ng.ậ ộ ơ ễ ở ộ
1. Node.js – N n t ng phát tri n phía máy ch (Backendề ả ể ủ )
Node.js là m t n n t ng ch y JavaScript phía máy ch s d ng V8 Engine – công c ộ ề ả ạ ủ ử ụ
ụ biên d ch JavaScript m nh mẽ c a Google. Node.js cho phép x lý b t đ ng b thôngị ạ ủ ử ấ
ồ ộ qua mô hình event-driven, giúp các ng d ng có kh năng ph n h i nhanh v i hi u ứ ụ ả ả
ồ ớ ệ su t cao. Đi u này r t phù h p v i các h th ng thanh toán, n i mà đ tr và kh ấ ề ấ ợ ớ ệ
ố ơ ộ ễ ả năng x lý đ ng th i nhi u request là r t quan tr ng.ử ồ ờ ề ấ ọ
Trong h th ng c a em, Node.js đệ ố ủ
ược tri n khai cùng framework Express.js đ đ nhể
ể ị nghĩa các route, middleware và qu n lý request/response. Khi ngả
ười dùng th c ự hi n thao tác nâng c p tài kho n VIP ho c thanh toán d ch v , frontend (React.js) sẽệ ấ ả ặ ị ụ g i m t HTTP POST request
đ n server Node.js thông qua m t API endpoint nh ử ộ ế ộ ư
`/api/payment/create`. T i đây, Node.js sẽ làm các bạ ước: - Xác th c thông tin ngự
ười dùng g i lên (user ID, gói thanh toán, giá ti n).ử ề
- T o đ n hàng và l u tr ng thái là “ch thanh toán” vào MongoDB.ạ ơ ư ạ ờ
- Tính toán các thông s c n thi t cho VNPay nh `amount`, `orderInfo`, `returnUrl`, ố ầ ế ư `createDate`…
- T o chu i d li u đ ký ch ký đi n t (checksum) b ng thu t toán SHAạ ỗ ữ ệ ể ữ ệ ử ằ ậ 256. -
G i URL thanh toán tr l i frontend đ ngử ở ạ ể ười dùng được chuy n hể ướng sang VNPay.
Sau khi giao d ch hoàn t t, VNPay sẽ g i m t callback v server thông qua endpoint ị ấ ử ộ
ề `/api/payment/vnpay_return`. Server Node.js sẽ:
- Xác minh ch ký c a VNPay tr v (so sánh v i mã đữ ủ ả ề ớ ược hash l i t
phía mình).ạ ừ - Ki m tra tr ng thái giao d ch (thành công/th t b iể ạ ị ấ ạ ).
- C p nh t đ n hàng trong MongoDB.ậ ậ ơ lOMoARcPSD| 59149108
- C p nh t tr ng thái tài kho n ngậ ậ ạ ả ười dùng n u thanh toán thành công (VD: chuy nế
ể sang VIP, thêm đi m thể
ưởng, gia h n tài kho n…).ạ ả
2. React.js – Giao di n ngệ ười dùng và logic tương tác (Frontend)
React.js là th vi n xây d ng giao di n do Facebook phát tri n. V i kh năng phân ư ệ ự ệ ể ớ
ả chia thành các component tái s d ng, React giúp vi c phát tri n giao di n linh ử ụ ệ ể ệ
ho t và d dàng b o trì. Trong d án này, em s d ng React đ t o nên:ạ ễ ả ự ử ụ ể ạ -
Trang danh sách phim, chi ti t phim, danh sách gói VIP, gi hàng, thông tin ngế ỏ ười dùng. -
Giao di n trang thanh toán (VIPModal) n i ngệ ơ ười dùng ch n gói và nh n nút ọ ấ "Thanh toán". -
Hi n th thông báo thành công/th t b i sau khi thanh toán (d a vào thông tin t ể ị ấ ạ ự ừ backend).
Frontend s d ng th vi n `Axios` đ g i request đ n backend. Sau khi ngử ụ ư ệ ể ử ế ười dùng
ch n thanh toán, frontend sẽ g i API `/api/payment/create` và nh n v m t URL ọ ọ ậ ề ộ
chuy n hể ướng t i VNPay. React s d ng `window.location.href` đ chuy n hớ ử ụ ể ể ướng
trình duy t đ n URL đó. Sau khi thanh toán, VNPay sẽ redirect v m t URL trên ệ ế ề ộ
frontend nh `/payment-success` ho c `/payment-failed`, d a vào ư ặ ự
`vnp_ResponseCode` tr v .ả ề
T i đây, React sẽ g i l i thông tin lên backend đ xác minh l n cu i, r i hi n th ạ ử ạ ể ầ ố ồ ể
ị giao di n tệ ương ng. Vi c này giúp gi m r i ro gi m o giao d ch t client.ứ ệ ả ủ ả ạ ị ừ
3. MongoDB – L u tr d li u phi quan hư ữ ữ ệ ệ
MongoDB là c s d li u NoSQL d ng tài li u (document), r t phù h p v i các h ơ ở ữ ệ ạ ệ ấ ợ
ớ ệ th ng có c u trúc d li u linh ho t và thố ấ ữ ệ ạ ường xuyên thay đ i. MongoDB giúp h ổ ệ th ng:ố
- L u tr thông tin ngư ữ ười dùng: tên, email, m t kh u (mã hóa), tr ng thái tài kho n, ậ ẩ ạ
ả l ch s giao d ch.ị ử ị
- L u tr danh sách phim, th lo i, di n viên, đ o di n, các m i quan h gi a ư ữ ể ạ ễ ạ ễ ố ệ ữ chúng.
- Qu n lý đ n hàng thanh toán v i các tr ng thái: “ch thanh toán”, “thành công”, ả ơ ớ ạ ờ “th t b i”.ấ ạ
- Ghi nh n log các s ki n liên quan đ n thanh toán đ ph c v ki m tra, đ i soát.ậ ự ệ ế ể ụ ụ ể ố lOMoARcPSD| 59149108
MongoDB tương tác v i Node.js thông qua th vi n Mongoose – m t công c ORM ớ ư ệ ộ ụ
giúp đ nh nghĩa schema, k t n i và th c thi các truy v n d li u hi u qu .ị ế ố ự ấ ữ ệ ệ ả
4. M i quan h gi a các thành ph n và c ch ho t đ ngố ệ ữ ầ ơ ế ạ ộ
Toàn b h th ng ho t đ ng theo mô hình client-server v i s ph i h p nh p ộ ệ ố ạ ộ ớ ự ố ợ
ị nhàng gi a React.js (client), Node.js (server) và MongoDB (database). C th nh ữ ụ ể ư sau:
- React.js ch u trách nhi m hi n th giao di n và ti p nh n hành vi t ngị ệ ể ị ệ ế ậ ừ ười dùng.
- Các hành đ ng t React sẽ độ ừ ược chuy n thành API call (POST, GET...) t i Node.js ể ớ thông qua Axios.
- Node.js x lý logic, xác minh, giao ti p v i VNPay và tử ế ớ ương tác v i MongoDB đ ớ ể đ c/ghi d li u.ọ ữ ệ
- MongoDB l u tr toàn b thông tin v ngư ữ ộ ề ười dùng, đ n hàng,
phim nh… và cung ơ ả c p truy v n linh ho t cho Node.js.ấ ấ ạ
- Sau khi x lý xong, Node.js ph n h i d li u l i frontend đ React.js hi n th .ử ả ồ ữ ệ ạ ể ể ị
C ch này đ m b o tính phân tách rõ ràng gi a logic giao di n (frontend) và logic ơ ế ả ả ữ ệ x
lý nghi p v (backend), giúp h th ng d b o trì, nâng c p và m r ng v sau.ử ệ ụ ệ ố ễ ả ấ ở ộ ề 5. K t lu nế ậ
Vi c s d ng ba công ngh hi n đ i là Node.js, React.js và MongoDB giúp h th ng ệ ử ụ ệ ệ ạ
ệ ố phát tri n nhanh chóng, có kh năng m r ng cao và tể ả ở ộ ương thích t t v i các công
ố ớ ngh thanh toán hi n đ i nh VNPay. Đ c bi t, nh mô hình RESTful API và giao ệ ệ ạ ư ặ
ệ ờ ti p qua JSON, frontend và backend có th d dàng chia s d li u và x lý logic ế ể ễ ẻ ữ ệ ử riêng bi t.ệ
T góc nhìn cá nhân, vi c tri n khai h th ng thanh toán tích h p đã giúp em hi u ừ ệ ể ệ ố ợ
ể sâu h n v cách các công ngh giao ti p v i nhau, c ch b o m t giao d ch và ơ ề ệ ế ớ ơ ế ả
ậ ị qu n lý tr ng thái ngả ạ ười dùng trong mô hình web hi n đ i.ệ ạ