Tích hợp xác nhận thanh toán

Thực hành lập trình xử lý sự kiện webhook để xác nhận thanh toán

Giới thiệu

Hiện tại Casso đã hỗ trợ nhiều hình thức tích hợp xác nhận thanh toán thông qua các API Casso đã public. Để phần tích hợp thanh toán của bạn xịn hơn thì có thể dùng VietQR để tạo QR-Code cho phần thanh toán. VietQR là tiêu chuẩn quốc gia về mã QR ngân hàng. Mã này được chấp nhận bởi 50 ngân hàng Việt Nam. Có thể xem chi tiết tại đây

Bạn có thể dùng payOS by Casso để xác thanh toán.

Hướng dẫn này sử dụng Tích hợp Webhook để thực hiện. Nếu bạn sử dụng Tích hợp Webhook V2 để xác nhận thanh toán, bạn vẫn có thể tham khảo hướng dẫn này. Tuy nhiên, có một số thay đổi đối với cấu trúc dữ liệu và hình thức kiểm tra tính toàn vẹn của dữ liệu webhook. Casso đã có cập nhật ở bài viết Thiết lập Webhook thủ công

Trước khi bắt đầu

Hướng dẫn tích hợp

Để có thể sử dụng và hiểu được các API này thì dưới đây Casso demo một server basic được viết bằng NodeJS + Express basic về tích hợp thanh toán. Chi tiết source tại Github.

Dưới đây là demo các bước về việc tạo webhook để lắng nghe có các giao dịch mới của Casso gửi qua và yêu cầu đồng bộ giao dịch tức thì từ phía app. Quá trình code có thể chỉ mất vài giờ nếu bạn đã quen với việc viết API. Bạn có thể làm theo kịch bản sau:

Cấu trúc file sever

Bước 1: Tạo file index.js

Đầu tiên chúng ta sẽ tạo file index.js để xây dựng server lắng nghe các request. Server mình sẽ thiết lập với cổng 4300

Bước 2: Tạo file app.js, config và xử lý lỗi

Các thứ cần thiết cho server như: cors, json, urlencodedExpress error handling

Bước 3: Tạo các routes và test hello world

Ở đây mình sẽ tạo 3 route chính:

  • /webhook/handler-bank-transfer Webhook để nhận thông tin giao dịch từ Casso

  • /register-webhook Thực hiện đăng kí webhook và lấy token từ Casso

  • /users-paid Thực hiện tính năng đồng bộ giao dịch tức thì qua Casso

Kiểm tra với postman

Bước 4: Xây dựng các hàm hỗ trợ

Để có thể giao tiếp với server Casso sẽ dùng 1 HTTP Client để gọi qua. Ở Demo này sẽ sử dụng AxiosQuery-string.

Bạn thể tham khảo tài liệu này, để lấy API Key của bạn trên Casso.

Sau khi code HTTP Client thì tiến hành dựng từng hàm tương ứng với từng API.

  • Get userInfo bao gồm thông tin về business và banks. Mô tả cụ thể về API tại đây

  • Đồng bộ dữ liệu mới nhất. Mô tả cụ thể về API tại đây

  • Các hàm thêm, xóa, sửa và xóa webhook Mô tả chi tiết tại đây

  • Parser orderId từ nội dung giao dịch và tiền tố giao dịch (DH1231=> 1231) và đồng thời cũng kiểm tra có phân biệt chữ hoa với thường trong nội dung giao dịch hay không?

Bước 5: Xây dựng các Route

Mình cần định nghĩa một vài biến cần trong quá trình dựng

  1. Route tạo webhook bằng API_KEY và lấy thông tin user bao gồm Business và banks

2. Route này sẽ thực hiện tính năng đồng bộ giao dịch qua Casso.

Ví dụ: Khi người dùng chuyển khoản cho bạn và họ ấn nút tôi đã thanh toán thì nên xử lí gọi qua Casso để đồng bộ giao dịch vừa được chuyển khoản. Có thể sử dụng cho tính năng Tôi đã thanh toán để xác nhận thanh toán ngay.

3. Tạo một webhook để Casso có thể gửi giao dịch qua khi có giao dịch mới (quan trọng):

Cảm ơn đã theo dõi

Last updated

Was this helpful?