Tích hợp thanh toán trong Next.js

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 14 tháng 4, 2025

Trong bài học này, bạn sẽ học cách tích hợp các cổng thanh toán phổ biến như Stripe, ZaloPay và PayPal vào ứng dụng Next.js. Bài học sẽ hướng dẫn tạo đơn hàng, xử lý callback từ cổng thanh toán (webhook), bảo mật giao dịch, hiển thị thông tin thanh toán cho người dùng, và gửi email xác nhận sau giao dịch thành công. Đây là kỹ năng quan trọng để triển khai các hệ thống thương mại điện tử.

Tích hợp thanh toán

1. Tổng quan về thanh toán trong Next.js

  • Giới thiệu Stripe, ZaloPay, PayPal
  • Kiến trúc xử lý thanh toán: Frontend ↔ API ↔ Cổng thanh toán
  • Lưu ý về bảo mật và xác minh thông tin người dùng

2. Tạo đơn hàng và tích hợp Stripe (hoặc PayPal)

  • Cài đặt SDK của Stripe/PayPal/ZaloPay
  • Tạo đơn hàng từ client bằng fetch('/api/checkout')
  • Tạo API Route trong pages/api/checkout.js để khởi tạo phiên thanh toán
  • Chuyển hướng người dùng đến cổng thanh toán (stripe.redirectToCheckout()...)

3. Xử lý Webhook (Callback từ cổng thanh toán)

  • Tạo pages/api/webhook.js
  • Cấu hình webhook secret từ Stripe/PayPal
  • Kiểm tra chữ ký request để xác minh tính hợp lệ
  • Cập nhật đơn hàng trong database hoặc gửi mail xác nhận
const sig = req.headers['stripe-signature'];
const event = stripe.webhooks.constructEvent(req.body, sig, endpointSecret);

4. Bảo mật callback từ cổng thanh toán

  • Luôn xác minh chữ ký hoặc token trong webhook
  • Không tin tưởng dữ liệu từ frontend (chỉ lưu dữ liệu sau khi webhook xác nhận thành công)
  • Cấu hình firewall chỉ cho phép truy cập từ IP whitelist (Stripe, ZaloPay)

5. Hiển thị thông tin giao dịch cho người dùng

  • Trang kết quả /success/cancel
  • Gọi API hoặc truyền session ID để hiển thị thông tin thanh toán
  • Thiết kế giao diện xác nhận: tên sản phẩm, mã đơn hàng, số tiền

6. **Gửi email xác nhận sau khi thanh toán thành công

  • Dùng nodemailer hoặc dịch vụ như SendGrid, Resend
  • Gửi email sau khi xử lý webhook thành công
  • Mẫu email đơn giản: cảm ơn, chi tiết đơn hàng, liên hệ hỗ trợ

Kết luận

Thanh toán là phần không thể thiếu trong các ứng dụng thương mại điện tử. Việc tích hợp đúng cách không chỉ đảm bảo trải nghiệm người dùng mượt mà mà còn bảo vệ hệ thống khỏi những rủi ro bảo mật. Qua bài này, bạn đã nắm được quy trình cơ bản từ tạo đơn hàng, xử lý webhook đến hiển thị thông tin giao dịch và gửi email xác nhận. Đây sẽ là nền tảng để bạn triển khai các hệ thống bán hàng thực tế với Next.js.

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ