# 🏦 HƯỚNG DẪN TÍCH HỢP CỔNG WEBHOOK BIẾN ĐỘNG SỐ DƯ VIB (NAPAS247)
### Hệ Sinh Thái Midolikit — Tài Liệu Kỹ Thuật Dành Cho Quản Trị Viên & Đối Tác

Tài liệu này hướng dẫn chi tiết cách kết nối thông báo biến động số dư ngân hàng Quốc Tế Việt Nam (**VIB**) — Số tài khoản **`909789195`** (Chủ TK: **`DUONG NHAT LINH`**) với hệ thống tự động gạch nợ đơn hàng trên `midolikit.com`.

---

## 📌 1. THÔNG TIN CỔNG KẾT NỐI (API SPECIFICATION)

* **URL Webhook / IPN**: `https://midolikit.com/api/payment/vib-ipn`
* **URL Thay thế (Alias)**: `https://midolikit.com/api/payment/vib-webhook`
* **Phương thức**: `POST`
* **Header bắt buộc**:
  * `Content-Type: application/json`
  * `X-Webhook-Secret: midolikit_vib_napas247_secure_2026` *(hoặc truyền param `?token=midolikit_vib_napas247_secure_2026`)*
* **Cú pháp đơn hàng hợp lệ**: Hệ thống sử dụng Regex thông minh tự động nhận diện các biến thể:
  * `MIDO 101` hoặc `MIDO101`
  * `MIDO-101` hoặc `MIDO_101`
  * `mido 101`
  * `ORDER 101` hoặc `MD 101`

---

## 📦 2. CÁC ĐỊNH DẠNG PAYLOAD ĐƯỢC HỖ TRỢ

Hệ sinh thái Midolikit tích hợp sẵn Adapter đa nguồn, tương thích với hầu hết các cổng trung gian và ứng dụng đọc thông báo hiện nay:

### Định dạng A: JSON Tiêu Chuẩn (Đơn lẻ)
```json
{
  "content": "NAPAS247 VIB IBFT MIDO 101 DUONG NHAT LINH",
  "amount": 350000,
  "transaction_id": "FT26255909789195",
  "account_no": "909789195",
  "secret": "midolikit_vib_napas247_secure_2026"
}
```

### Định dạng B: Mảng Giao Dịch Banking Hub (Casso / PayOS / SeAPay)
```json
{
  "error": 0,
  "data": [
    {
      "id": 888123,
      "tid": "FT26255909789195",
      "description": "NAPAS247 IBFT MIDO 101 DUONG NHAT LINH",
      "amount": 350000,
      "subAccId": "909789195",
      "bankName": "VIB",
      "when": "2026-09-11 11:00:00"
    }
  ]
}
```

### Định dạng C: Push Notification / SMS thô từ MyVIB (MacroDroid / Tasker / SMS Forwarder)
```json
{
  "message": "TK 909789195 tai VIB +350,000VND vao 11/09/2026 11:05. ND: MIDO 101 DUONG NHAT LINH chuyen khoan. So du: 25,350,000VND.",
  "transaction_id": "SMS_VIB_99812"
}
```

---

## 💻 3. MÃ NGUỒN MẪU TÍCH HỢP (CODE EXAMPLES)

### cURL (Linux / macOS / Windows Terminal)
```bash
curl -X POST https://midolikit.com/api/payment/vib-ipn \
  -H "Content-Type: application/json" \
  -H "X-Webhook-Secret: midolikit_vib_napas247_secure_2026" \
  -d '{
    "content": "MIDO 101",
    "amount": 350000,
    "transaction_id": "TEST_001"
  }'
```

### Python 3
```python
import json
import urllib.request

url = "https://midolikit.com/api/payment/vib-ipn"
payload = {
    "content": "MIDO 101 DUONG NHAT LINH",
    "amount": 350000,
    "transaction_id": "PY_TX_001"
}

req = urllib.request.Request(
    url,
    data=json.dumps(payload).encode("utf-8"),
    headers={
        "Content-Type": "application/json",
        "X-Webhook-Secret": "midolikit_vib_napas247_secure_2026",
        "User-Agent": "Midolikit-VIB-Gateway/2.0"
    },
    method="POST"
)

with urllib.request.urlopen(req) as resp:
    print(resp.read().decode("utf-8"))
```

### Node.js (Fetch / Axios)
```javascript
const res = await fetch("https://midolikit.com/api/payment/vib-ipn", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-Webhook-Secret": "midolikit_vib_napas247_secure_2026"
  },
  body: JSON.stringify({
    content: "MIDO 101",
    amount: 350000,
    transaction_id: "NODE_TX_001"
  })
});
const data = await res.json();
console.log(data);
```

---

## 📱 4. HƯỚNG DẪN CÀI ĐẶT TRÊN ĐIỆN THOẠI ANDROID (MYVIB PUSH LISTENER)

Nếu dùng điện thoại nhận thông báo biến động số dư từ app MyVIB:
1. Cài đặt ứng dụng **MacroDroid** hoặc **Notification Listener** trên CH Play.
2. Thêm Trigger: **Notification Received** -> Chọn ứng dụng **MyVIB**.
3. Thêm Action: **HTTP Request**:
   * **URL**: `https://midolikit.com/api/payment/vib-ipn`
   * **Method**: `POST`
   * **Header**: `Content-Type: application/json` | `X-Webhook-Secret: midolikit_vib_napas247_secure_2026`
   * **Body**:
     ```json
     {
       "message": "{not_title} {not_body}",
       "transaction_id": "VIB_{timestamp}"
     }
     ```
4. Khi MyVIB phát sinh thông báo cộng tiền, điện thoại sẽ tự động bắn webhook lên máy chủ và gạch nợ thành công trong 0,5 giây!
