Xử lý sự kiện Webhook
Hướng dẫn các bước lập trình một API xử lý sự kiện webhook. Có code mẫu bằng NodeJS
Tích hợp phương pháp webhook rất đơn giản, tất cả mọi thứ bạn cần làm là lập trình một API xử lý sự kiện Webhook. Sau khi bạn đã đăng kí URL của API này vào một mục tích hợp webhook trong Casso.
Mỗi khi Casso phát hiện tài khoản ngân hàng liên kết có một giao dịch mới, Casso sẽ gọi vào API này
Đặc tả của API này là :
post
https://websitecuaban.com
/api/webhook-event-handler
Xử lý giao dịch được gửi từ Casso

Code

Bạn có thể sử dụng bất kì ngôn ngữ nào hỗ trợ xây dựng restful API để Code.
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:
  • Tạo dự án Restful API mới (Nodejs Express / Java Spring Boot / PHP single file, ...)
  • Test in ra được helloword!
  • Tạo controller mới xử lý một Post tên là /webhook-event-handler
  • Test : Dùng Curl Post một giao dịch mô phỏng lên /webhook-event-handler và chỉnh code để in ra đúng được nội dung gửi lên (xem thêm phần Test bên dưới)
  • Rút trích nội dung giao dịch
  • Xử lý nội dung giao dịch
  • Phản hồi HTTP status code 200 OK
Ví dụ bên dưới viết bằng NodeJS, log ra số giao dịch Webhook Api nhận dc. Bằng cách chỉnh sửa vài dòng Hello World Sample của Node JS Express
First Tab
Second Tab
app.js
1
const express = require('express')
2
const app = express()
3
const port = 8080
4
5
app.use(express.json());
6
app.post('/api/webhook-event-handler', (req, res) => {
7
let error = req.body.error;
8
if (error != 0) {
9
//Không làm gì cả.
10
return;
11
}
12
13
//mảng chứa danh sách các giao dịch
14
let transactions = req.body.data;
15
16
console.log(`Received ${transactions.length} transactions`);
17
18
//thêm code xử lý giao dịch ở đây.
19
20
res.end("OK");
21
})
22
23
app.listen(port, () => {
24
console.log(`Example app listening at http://localhost:${port}`)
25
})
Copied!

Tạo sự kiện webhook để test

Có 5 cách để giả lập giao dịch gửi vào API xử lý webhook bạn đang code như sau:
STT
Môi trường
Phương pháp
1
Local
Tự gọi API bằng Curl / Postman
2
Local
Sử dụng ngrok để dẫn (pipe) webhook về local
3
Dev | Staging
Nút Gọi Thử Trong giao diện setup Webhook
4
Dev | Staging
Nút đồng bộ giao dịch ngay trong giao diện 1 Tài khoản ngân hàng Demo
5
Live
Link tài khoản thật & tạo 1 lệnh chuyển tiền
Tuy nhiên, chúng tôi khuyến cáo bạn hãy viết và test thật kĩ trên Local trước , và test nhanh bằng Postman hoặc Curl.

Sử dụng ngrok để public Webhook ở Local

Ngrok là một ứng dụng tạo ra một đường hầm từ máy bạn (desktop, localhost) đi qua hệ thống Firewall/Nat, giúp từ internet có thể truy cập vào máy trạm.
Nếu như bạn đang chạy server ở local port 8080, ở terminal, bạn nhập: ngrok http 8080.
Một url có thể khả dụng trong 8 giờ.
Chỉ sử dụng https://
Bạn có thể sử dụng giao diện web của Ngrok để xêm lưu lượng HTTP request và response qua hệ thống của bạn: http://localhost:8080

Sử dụng Curl để test

Curl (Mac OS | Linux)
Curl (Window)
Postman
Copy nội dung bên dưới, sau khi đã fix lại đường dẫn API xử lý webhook
Mở terminal
1
curl --location --request POST 'http://localhost:8080/api/webhook-event-handler' \
2
--header 'secure-token: eogrBiWqaq' \
3
--header 'Content-Type: application/json' \
4
--data-raw '{
5
"error": 0,
6
"data": [
7
{
8
"id" : 1,
9
"when": "2020-11-02",
10
"amount": 200500,
11
"description": "DH35",
12
"cusum_balance": 15900500,
13
"tid": "TF80307914",
14
"subAccId": "123456789",
15
"bank_sub_acc_id": "123456789"
16
}
17
]
18
}'
Copied!
Paste & Enter

Phát hành

  • Release dự án lên internet
  • Cập nhật lại Webhook URL trong cấu hình webhook
  • Link môt tài khoản ngân hàng thật
  • Chuyển tiền vào tài khoản ngân hàng (5,000 , 10,000 thôi)
  • Xác nhận rằng Casso đã gọi qua Webhook và xử lý thành công
Và ... Xin chúc mừng. Bạn đã hoàn tất!!!! Chúng tôi ở đây để làm cho thế giới đơn giản hơn. ^^
Last modified 1mo ago