1: Giới thiệu sương sương Stripe
Stripe là một cổng thanh toán của Mỹ cho phép các trang thương mại điện tử nhận thanh toán trên website bán hàng của mình. Ngoài ra, nó còn cung cấp Stripe API để có thể được sử dụng bởi rất nhiều các ngôn ngữ như: Ruby, Python, Java, GO… (Stripe API).
Trong bài viết này, em sẽ giới thiệu sơ qua về việc tích hợp stripe api và nodejs
2: Setting thông tin Stripe
Trước hết, để sử dụng được stripe API, thì chúng ta cần tạo tài khoản stripe.
https://dashboard.stripe.com/login
Đây là giao diện Dashboard sau khi đăng nhập vào stripe
Vì hiện tại chúng ta đang tiến hành test và học cách sử dụng API Stripe, nên sẽ chọn 1 -> developer , chọn 2 -> chế độ test mode.
Để sử dụng StripeAPI, chúng ta cần tạo ra secret key để khai báo stripe. Với key này, chúng ta có thể thực hiện các giao dịch như thanh toán, xoá lịch sử giao dịch, refund...
3: Tạo phiên thanh toán với NodeJs
- Luồng xử lí thanh toán như sau:
Khi người dùng hoàn thành lựa chọn sản phẩm và bắt đầu thanh toán, ứng dụng sẽ tạo phiên thanh toán cho họ.
Phiên thanh toán đó sẽ tạo ra một url để chuyển hướng người dùng đến trang thanh toán của Stripe
Khách hàng nhập thông tin và tiến hành thanh toán trên trang đó, hoàn tất giao dịch.
Sau khi giao dịch, một webhook thực hiện đơn đặt hàng bằng cách sử dụng sự kiện checkout.session.completed.
Sau khi đã tiến hành setting trên tài khoản, chúng ta sẽ tiến hành tích hợp với NodeJs để sử dụng API Stripe phục vụ chức năng thanh toán. Ở đây, chúng ta sẽ khai báo một route name để trỏ đến phiên thanh toán này với method post:
router.post('/create-checkout-session', (req, res, next) => StripeController.createCheckOut(req, res));
Và tiến hành xử lí như hình bên dưới để cung cấp thông tin, tạo phiên thanh toán:
Chúng ta sẽ tiến hành tạo customer, khai báo thông tin sản phẩm cần thanh toán như giá tiền, số lượng.... Đồng thời sẽ khai báo 2 đường link url để tiến hành chuyển hướng khi thanh toán thành công và thất bại (success_url, cancel_url).
Truyền các dữ liệu như hình trên, sau khi thực hiện xử lí, nó sẽ trả về cho chúng ta một đường link chuyển hướng đến trang thanh toán của Stripe.
Khi chúng ta tiến hành test thanh toán, có thể sử dụng Thẻ Visa test của Stripe với các thông tin như hình trên.
Sau khi thanh toán hoàn thành, muốn lấy được dữ liệu, thông tin thanh toán và tiến hành xử lí lưu trữ Database, cần khai báo webhook để lắng nghe sự kiện thanh toán và tiến hành xử lí.
4: Tạo Webhooks, endpoint
Để có thể nhận biết sự kiện thanh toán của trang web, chúng ta phải khai báo 1 webhooks endpoint. Hình dưới là mình đã khai báo thành công endpoint trên local của mình.
- Chúng ta tiến hành login stripe và chuyển tiếp sự kiện tới webhooks này:
Khai báo url của mình tại 1, Khi đó, chúng ta sẽ nhận được webhook signing secret để sử dụng.
Sau đó , để xử lí các dữ liệu sau khi hoàn tất phiên thanh toán, chúng ta khai báo endpoint và xử lí như dưới:
Với các thông tin về thanh toán sẽ được trả về data , xử lí tuỳ thuộc và yêu cầu của bài toán đưa ra.
Link tham khảo: https://github.com/stripe/stripe-node
Trên đây là cách xử lí thanh toán Stripe tích hợp với NodeJs, trong quá trình thực hiện còn nhiều sai sót mong nhận được sự góp ý từ mọi người !! ^~^