Hôm nay mình đang ngồi quán cà phê quen ở quận 10, vừa thiết lập xong api ngân hàng cho hệ thống phần mềm của một xưởng may đồng phục. Chị chủ xưởng yêu cầu khi khách chuyển khoản tiền cọc khoảng 500.000đ là máy phải tự đổi trạng thái đơn hàng. Tuần trước xưởng mất ba khách sỉ chỉ vì sale chốt đơn lúc tối muộn nhưng kế toán đã về ngủ, không ai xác nhận dòng tiền vào để tiến hành xuất kho. Để xử lý dứt điểm tình trạng này, mình hướng dẫn anh em code dùng kết nối webhook bắn thông báo thẳng về nhóm làm việc. Cách này trước đây nghe có vẻ phức tạp nhưng giờ mọi thứ khá đơn giản. Các shop nhỏ tự làm được.

Cách hệ thống đọc biến động số dư
Bản chất api ngân hàng là một đường ống thông tin. Nó cho phép máy chủ của bạn hỏi thẳng hệ thống của nhà băng về tình trạng tài khoản. Nó biết ai vừa chuyển và số tiền là bao nhiêu. Nội dung chuyển khoản ghi gì và thời điểm diễn ra giao dịch. Máy tự hỏi thẳng ngân hàng rồi tự xử lý dữ liệu.
Chị chủ xưởng trước đây than phiền việc nhân viên thường xuyên bỏ sót đơn do khách thanh toán lúc tối muộn. Kế toán thì hết giờ làm nên không ai lên tiếng xác nhận. Có hôm xưởng chạy quảng cáo rát, chốt được 41 đơn thì có 27 người cọc ngay trong đêm. Sáng hôm sau nhân viên vào làm phải tải sao kê ngân hàng về, đối chiếu từng dòng với file Excel danh sách đơn hàng. Công việc cưa sừng làm nghé này ngốn mất gần hai tiếng đồng hồ mỗi sáng, khiến khâu đóng gói bị đình trệ.
Khi triển khai giải pháp mới, mình quyết định kết nối api ngân hàng qua dịch vụ MONA Pay. Đầu mối ACB đang chạy chính thức tài khoản ảo và báo tiền vào tức thì. Hệ thống sinh ra một mã VietQR riêng cho từng đơn hàng, chứa sẵn số tiền và nội dung chuyển. Khách quét mã là tiền bay thẳng vào tài khoản của chị chủ.
Khá nhiều nhà băng đang nối dần vào hệ thống này, bảng trạng thái hiện tại hiển thị 29 ngân hàng có thể tạo mã QR nhận tiền. Tốc độ nhận tin báo có diễn ra rất nhanh, thường khách hàng chỉ vừa mới bấm xác nhận chuyển khoản trên ứng dụng điện thoại xong là trạng thái đơn hàng trên màn hình máy tính của xưởng đã tự động chuyển sang màu xanh ngay lập tức. Hệ thống ghi nhận tốt.
Kết nối api ngân hàng trực tiếp thay vì qua trung gian
Trước đây nhiều anh em làm phần mềm hay chọn các cổng thanh toán quốc tế như Stripe hay PayPal vì tài liệu của họ viết rất chi tiết. Mô hình của những đơn vị này luôn là trung gian giữ tiền. Khách hàng thanh toán xong thì dòng tiền sẽ đi một vòng qua hệ thống của bên thứ ba, nằm chờ đến đúng chu kỳ đối soát T+3 rồi bạn mới có thể yêu cầu rút về tài khoản cá nhân. Khâu này ngốn khá nhiều thời gian chờ đợi vô ích.
Cái khó của cách làm đó là bạn bị cắt phần trăm trên mỗi giao dịch. Việc nhận tiền theo chu kỳ kéo dài 3 ngày làm dòng tiền của các shop nhỏ bị kẹt lại, chưa kể đến khoản hao hụt không đáng có do chênh lệch tỷ giá ngoại tệ và việc chỉ xuất được hóa đơn nước ngoài. Với các dịch vụ trong nước, công cụ báo có giải quyết trọn vẹn điểm nghẽn này. Khách chuyển tiền thẳng vào tài khoản đứng tên bạn. Hệ thống hoàn toàn không thu phần trăm trên số tiền giao dịch. Chủ shop nhận tiền ngay.
Nhiều chủ shop rất sợ rủi ro lộ thông tin tài khoản khi kết nối ứng dụng với nhà băng. Mỗi gói tin báo có từ hệ thống đều được ký bằng thuật toán HMAC-SHA256 kèm theo dấu thời gian chuẩn xác. Nếu tin đến lệch quá 5 phút so với lúc khởi tạo thì máy chủ sẽ ngay lập tức tự động từ chối nhằm tránh tình trạng nhận trùng lặp giao dịch gây sai lệch số liệu báo cáo tài chính của cửa hàng. Công cụ chỉ đọc biến động. Nó hoàn toàn không có quyền chuyển tiền đi đâu cả.
Lên đơn tự động lúc nửa đêm
Với api ngân hàng, chị chủ xưởng tự động hoá được vô số khâu lắt nhắt mỗi ngày. Khách hàng chỉ việc tự lấy điện thoại ra quét mã QR có chứa sẵn thông tin mã đơn hàng mà không cần phải nhập tay số tiền cần chuyển. Hệ thống vừa nhận mã trạng thái 200 từ nhà băng là lập tức tự động đổi trạng thái đơn sang đã thanh toán, mất chưa tới 2 giây. Mọi thứ tự động chạy.
Một số mô hình kinh doanh dịch vụ số như bán khóa học trực tuyến hay gia hạn tài khoản cũng chuộng quy trình vận hành này vì trải nghiệm của người dùng cuối trở nên liền mạch hơn. Khách thanh toán là tài khoản được mở khóa ngay. Không ai phải chờ đợi admin thức dậy để duyệt bằng tay lúc 2 giờ sáng. Đối soát cuối ngày rất khỏe. Mỗi giao dịch đều có sẵn mã chuẩn để bộ phận kế toán dễ dàng đối chiếu. Bên xưởng may cũng đang tính áp dụng thêm mã qr quản lý kho để bộ phận kho theo dõi lượng vải vóc xuất nhập dễ dàng hơn khi quy mô tăng lên.
Hôm qua mình vừa ráp xong dịch vụ xác nhận thanh toán tự động cho chị khách này và cho chạy thử nghiệm thực tế. Mình cấu hình thêm một luồng thông báo phụ trợ chạy ngầm bên dưới. Cứ có dòng tiền chuyển vào là hệ thống tự động bắn một tin nhắn vào thẳng nhóm Zalo của xưởng kèm theo con số chính xác và phần nội dung chi tiết của người mua. Tính năng này tiện lợi ở chỗ mọi người trong nhóm từ chị chủ đến các bạn sale đều nắm được tình hình doanh thu theo thời gian thực để kịp thời tư vấn.

Các bước kết nối api ngân hàng vào phần mềm
Quá trình đưa hệ thống này vào code thực ra khá đơn giản với người biết kỹ thuật. Lộ trình tích hợp chuẩn luôn bắt đầu bằng ba bước cơ bản. Đầu tiên bạn cần xác thực liên kết tài khoản ngân hàng bằng chính dãy mã OTP 6 chữ số mà nhà băng gửi trực tiếp về số điện thoại cá nhân đã đăng ký của bạn. Mật khẩu vẫn an toàn.
Bước thứ hai là thao tác khai báo nơi nhận dữ liệu đầu cuối. Nếu bạn sở hữu phần mềm riêng thì chỉ việc điền đường dẫn webhook HTTPS để hệ thống đẩy các gói tin định dạng JSON về đó xử lý. Người không rành kỹ thuật cứ cấu hình nhận thông báo qua Telegram hoặc email mà hoàn toàn không cần đụng tới bất kỳ một dòng lệnh phức tạp nào. Bước cuối cùng là khâu kiểm tra nghiệm thu. Bạn chạy thử vài giao dịch giả trong môi trường sandbox để kiểm tra luồng thông tin. Cả quá trình chỉ mất 5 phút, kiểm tra lại đúng 2 lần cho chắc.
Lúc mới thiết lập, cậu code bên mình bị kẹt mất một tiếng đồng hồ. Cậu ấy nhập sai định dạng đường dẫn webhook nên máy chủ không bắt được tin báo có. Giao dịch test trả về mã trạng thái 200 thành công nhưng giao diện quản lý trên màn hình phần mềm cứ đứng im re không đổi trạng thái. Hai anh em phải lật tài liệu ra rà soát lại từng dòng code thì mới phát hiện ra lỗi ngớ ngẩn do thiếu mất một dấu gạch chéo ở phía cuối cùng của đoạn đường dẫn URL. Nhớ cẩn thận chỗ này. Cứ làm đúng tài liệu là hệ thống tự chạy.
Điểm cần lưu ý khi vận hành thực tế
Dù giúp xưởng may giải quyết trọn vẹn khâu xác nhận tiền vào tức thì, nền tảng này vẫn bộc lộ một vài điểm vướng víu khá khó chịu khi dùng thật. Gói miễn phí của họ đang giới hạn cứng ở mức 500 API request trong vòng một tháng. Với các cửa hàng có lượng khách mua lẻ tẻ chia nhỏ số tiền cọc ra chuyển nhiều lần, con số giới hạn kia dễ dàng bị phá vỡ chỉ sau khoảng 2 tuần chạy chiến dịch quảng cáo. Lúc này shop buộc phải mua gói Pro giá 99.000đ để duy trì luồng nhận tin. Điều này đôi khi gây bất tiện cho người dùng.
Một vấn đề dở nữa là MONA Pay và công cụ xuất hóa đơn MONA eInvoice hiện vẫn còn thiết kế cơ chế đăng nhập hoàn toàn riêng biệt chứ chưa gộp chung vào một tài khoản duy nhất. Kế toán của xưởng mỗi ngày đều đặn phải mở hai tab trình duyệt khác nhau để vừa rà soát tiền báo có vừa xử lý chứng từ báo cáo thuế cho khớp hệ thống sổ sách. Nhân viên phải gõ mật khẩu hai lần. Khá mất thời gian.
Bài toán chi phí cho các shop nhỏ
Nếu bạn mang yêu cầu kết nối api ngân hàng đi hỏi các công ty gia công phần mềm, mức giá khởi điểm cho một tính năng tương tự thường rơi vào khoảng 40 đến 80 triệu đồng. Chi phí này bao gồm việc lập trình viên phải đọc tài liệu của từng nhà băng, lo các lớp bảo mật chống tấn công giả mạo và bảo trì máy chủ liên tục. Việc duy trì một đội ngũ kỹ thuật túc trực để xử lý các lỗi mạng lặt vặt cũng tốn kém. Không hề rẻ chút nào.
Với cách dùng dịch vụ gói sẵn, chi phí hàng tháng khá dễ chịu. Trừ lúc vượt giới hạn gói miễn phí, bạn trả cước tính theo số lượng giao dịch phát sinh. Nếu mua gói trả trước theo năm thì công ty chỉ tính tiền 10 tháng. Mọi hóa đơn thanh toán dịch vụ đều là hóa đơn VAT hợp lệ có mã số thuế đầy đủ để bộ phận kế toán hạch toán.
Trường hợp xưởng cần lưu trữ thêm nhiều dữ liệu khách hàng, mình mua thêm gói cơ sở dữ liệu MONA Base với giá tầm 1.700đ một giờ. Hoặc lúc dự án cần địa chỉ web riêng, mình dùng công cụ MONA Domain để mua tên miền đuôi vn với chi phí 756.000đ một năm. Mức giá này được duy trì ổn định qua nhiều năm.
Xong xuôi thì hệ thống cũng chạy ổn định, khách ưng ý. Việc nhận báo có tự động giúp xưởng may đẩy nhanh tốc độ chốt đơn. Tuần tới mình định rủ cậu em làm chung tự xây một cái ứng dụng nhỏ quét mã tính tiền ở quán cà phê để test thêm khả năng chịu tải của luồng truy xuất này.