Tự động thanh toán đơn hàng bằng SmaxBot x Anycross x Trigpay

Bot.vn Chủ nhật - 24/03/2024 23:23
Xem hướng dẫn phần 1 tại đây
Chuẩn bị:
  • 1 điện thoại android, yêu cầu luôn có kết nối mạng để nhận tin nhắn biến động số dư
Cách thực hiện:

Bước 1: Tạo Automation gửi thông tin thanh toán

Trong file Base quản lý đơn hàng đã tạo ở Phần 1, thêm cột Phương thức thanh toán và thêm 2 lựa chọn Chuyển khoản hoặc Tiền mặt


Clone block gửi thông tin chuyển khoản tại đây
https://img.vietqr.io/image/<mã ngân hàng>-<số tài khoản>-print.png?amount={{tongtien}}&addInfo={{madonhang}}&accountName=<tên chủ tài khoản>
Thay thông tin mã ngân hàng, số tài khoản và tên chủ tài khoản vào Link tự động tạo QR thanh toán phía trên
Xem hướng dẫn sử dụng vietqr.io tại đây

Sau khi clone và chỉnh lại mã qr, copy lại Bot ID, Bot Token và Block ID như hướng dẫn ở phần 1 và vào file Lark Base tạo automation
Chọn điều kiện kích hoạt là 'Khi phương thức thanh toán' thay đổi là Chuyển khoản 'Thì Gửi yêu cầu HTTP'


Cấu hình yêu cầu HTTP:
  • Phương thức: POST
  • URL: https://api.smax.bot/public/bots/{{Bot ID}}/send
  • Thông số truy vấn: Bỏ trống
  • Tiêu đề:
    • Mã: Authorization
    • Giá trị: Bearer {{Bot Token}}
  • Nội dung: raw
{
"customer_fbid":"",
"block_id":"{{Block ID}}",
"madonhang":"",
"tongtien":""
}
Chọn các giá trị tương ứng đã thêm ở bước 1 với các trường
Lưu ý: Mã đơn hàng sẽ tương ứng với record id của bản ghi đó, để khi thanh toán có thể tracking dễ dàng hơn


Sau đó chọn Lưu và Bật, bạn có thể thử lên đơn và chuyển trạng thái thanh toán để test lại xem automation đã hoạt đúng chưa

Bước 2: Tracking thanh toán qua Trigpay và Anycross
Truy cập https://trigpay.net/ để đăng ký tài khoản và tạo Cổng thanh toán SMS Gateway


Tiếp theo làm theo hướng dẫn để tải ứng dụng đọc tin nhắn SMS banking từ ngân hàng về máy android


Sau khi tạo Cổng thanh toán SMS Gateway và cài đặt ứng dụng trên android thành công, truy cập Anycross để tạo webhook nhận thông báo khi có số dư
Webhook trên Anycross cần có 3 node như ảnh phía dưới:
  • Webhook trigger: Nhận thông báo khi có số dư thay đổi
  • Javascript: Đoạn code để tách nội dung chuyển khoản (là record id)
  • Lark Base: Update số tiền đã thanh toán vào file Quản lý đơn hàng


Cách cấu hình từng Node trong Anycross:
Node Javascript:
Phần input bạn chọn expression và nhập $webhook-trigger-1.body.content (nội dung chuyển khoản từ trigpay gửi đến webhook)


Phần Code javascript như sau:

function handler(input) {
  var recordId = input.match(/(?<=GD: ).+(?=\sGD)/);
  return recordId;
}

Lưu ý phần regex match(....) sẽ tùy thuộc vào nội dung tin nhắn SMS Banking của từng ngân hàng
Ví dụ: với ACB, nội dung tin nhắn sẽ nằm giữa ký tự GD: {{noidung}} GD nên sẽ dùng đoạn regex /(?<=GD: ).+(?=\sGD)/
Bạn có thể copy lại nội dung tin nhắn ngân hàng và sử dụng Chatgpt hoặc Gemini của Google để yêu cầu tìm ra đoạn regex phù hợp với ngân hàng bạn đang sử dụng


Node Lark Base
Chọn Update a record trong phần Action


Trong phần Auth chọn ứng dụng để sử dụng quyền ghi lên file Lark Base, xem lại hướng dẫn tạo ứng dụng trên Lark Developer tại đây


Phần Input chọn Base Quản lý đơn hàng
Trường Record ID chọn expresion và nhập $script-1.result[0] (record ID lấy từ Node Javascript)
Trường  Đã thanh toán chọn expresion và nhập $webhook-trigger-1.body.amount (số tiền chuyển khoản trigpay gửi về webhook và cập nhật vào cột Đã thanh toán trên file Base)


Sau đó Copy Callback URL trong phần Settings của Node Webhook, vào Trigpay chọn phần Hook và tạo Hook mới
Lưu ý nhớ Publish flow anycross trước khi test hoạt động của flow




Khi có thông báo số dư ngân hàng qua SMS Banking, Trigpay sẽ gửi số tiền và nội dung chuyển khoản về Anycross. Nếu tìm ra Record ID tương ứng trong nội dung chuyển khoản, hệ thống sẽ tự update số tiền vào cột Đã thanh toán trong file Lark Base
Bạn có thể làm thêm 1 automation Khi số tiền Chờ thanh toán về 0 thì gửi tin nhắn cho khách hàng chúc mừng đã thanh toán thành công
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây