SePay sử dụng các địa chỉ IP dưới đây để gửi các kết nối ra ngoài (outbound) đến hệ thống của bạn. Các kết nối này bao gồm:
- Webhooks — Thông báo giao dịch theo thời gian thực
- IPN (Instant Payment Notification) — Thông báo thanh toán từ Cổng thanh toán và Bank Hub
- Các callback khác — Mọi kết nối từ SePay đến server của bạn
Nếu hệ thống của bạn sử dụng firewall hoặc bất kỳ cơ chế lọc IP nào, bạn cần thêm tất cả các địa chỉ IP bên dưới vào allowlist (whitelist) để đảm bảo nhận được thông báo từ SePay.
Danh sách địa chỉ IP
IPv4
172.236.138.20172.233.83.68171.244.35.2151.158.108.68151.158.109.79103.255.238.139
IPv6
2400:8905::2000:8cff:fe98:45cd2600:3c15::2000:8aff:fedd:874b
Bạn cần allowlist tất cả các địa chỉ IP (cả IPv4 và IPv6) ở trên. SePay có thể gửi request từ bất kỳ IP nào trong danh sách này. Danh sách IP có thể được cập nhật trong tương lai — hãy kiểm tra trang này định kỳ hoặc theo dõi thông báo từ SePay.
Cấu hình Firewall
Nếu bạn cần cấu hình firewall, hãy cho phép các kết nối đến (inbound) từ các IP trên đến cổng mà server của bạn lắng nghe (thường là cổng 443 cho HTTPS).
URL webhook và IPN của bạn phải sử dụng HTTPS. SePay không gửi request đến các URL HTTP không mã hóa.
Ví dụ cấu hình
iptables (Linux) — IPv4:
# Cho phép kết nối từ SePay đến cổng 443iptables -A INPUT -s 172.236.138.20 -p tcp --dport 443 -j ACCEPTiptables -A INPUT -s 172.233.83.68 -p tcp --dport 443 -j ACCEPTiptables -A INPUT -s 171.244.35.2 -p tcp --dport 443 -j ACCEPTiptables -A INPUT -s 151.158.108.68 -p tcp --dport 443 -j ACCEPTiptables -A INPUT -s 151.158.109.79 -p tcp --dport 443 -j ACCEPTiptables -A INPUT -s 103.255.238.139 -p tcp --dport 443 -j ACCEPT
ip6tables (Linux) — IPv6:
# IPv6 dùng ip6tables, không dùng iptablesip6tables -A INPUT -s 2400:8905::2000:8cff:fe98:45cd -p tcp --dport 443 -j ACCEPTip6tables -A INPUT -s 2600:3c15::2000:8aff:fedd:874b -p tcp --dport 443 -j ACCEPT
Nginx (allow directive):
# Trong block location nhận webhooklocation /webhook {# IPv4allow 172.236.138.20;allow 172.233.83.68;allow 171.244.35.2;allow 151.158.108.68;allow 151.158.109.79;allow 103.255.238.139;# IPv6allow 2400:8905::2000:8cff:fe98:45cd;allow 2600:3c15::2000:8aff:fedd:874b;deny all;proxy_pass http://your_backend;}
Xác thực nguồn gọi
Ngoài việc lọc IP, SePay khuyến nghị sử dụng thêm các phương thức xác thực sau:
- API Key — SePay gửi header
Authorization: Apikey YOUR_API_KEYtrong mỗi request. Kiểm tra header này để xác nhận request đến từ SePay. - OAuth 2.0 — Dành cho các tích hợp yêu cầu mức bảo mật cao hơn.
Kết hợp lọc IP với xác thực API Key/OAuth 2.0 sẽ cung cấp hai lớp bảo mật cho hệ thống của bạn.
Tài liệu liên quan
- Bắt đầu nhanh với Webhooks — Hướng dẫn tổng quan tích hợp webhook
- Lập trình Webhooks (PHP) — Code mẫu nhận webhook bằng PHP
- Lập trình Webhooks (Node.js) — Code mẫu nhận webhook bằng Node.js
- Thông báo biến động số dư (Bank Hub) — Cấu hình IPN cho Bank Hub