# API Pembayaran Keluar - Query (payment_dfpay_query.html)

Endpoint untuk query status pembayaran keluar (payout).

## Deskripsi

Endpoint ini digunakan untuk mengecek status payout yang telah dibuat. Berguna untuk monitoring dan tracking pembayaran kepada customer.

## Endpoint

```
POST https://pay-test.targeted.work/payment_dfpay_query.html
```

## Parameter Request

| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| memberId | string | ✓ | Nomor merchant |
| orderNo | string | ✓ | Nomor order payout yang ingin dicek |
| sign | string | ✓ | Signature MD5 untuk verifikasi keamanan |

## Struktur Response

```json
{
  "status": "success|error",
  "msg": "Pesan deskripsi",
  "errCode": null,
  "data": {
    "orderNo": "PAYOUT123",
    "memberID": "10036",
    "dstCode": "OVO",
    "amount": "50000",
    "name": "John Doe",
    "account": "081234567890",
    "status": "1",
    "createTime": "2024-04-26 18:18:18",
    "successTime": "2024-04-26 18:20:00"
  }
}
```

## Penjelasan Response Data

| Field | Deskripsi |
|---|---|
| orderNo | Nomor order payout |
| memberID | Merchant ID |
| dstCode | Kode bank/e-wallet tujuan |
| amount | Jumlah payout |
| name | Nama penerima |
| account | Nomor rekening/phone tujuan |
| status | Status payout (0=pending, 1=success, 2=failed) |
| createTime | Waktu payout dibuat |
| successTime | Waktu payout berhasil (jika status=1) |

## Status Payout

| Code | Status | Keterangan |
|---|---|---|
| 0 | PENDING | Menunggu proses (biasanya 1-2 jam) |
| 1 | SUCCESS | Payout berhasil, dana sudah sampai ke tujuan |
| 2 | FAILED | Payout gagal (lihat error message untuk detail) |

## Contoh Implementasi PHP

```php
<?php
$baseUrl = "https://pay-test.targeted.work/";
$endpoint = "payment_dfpay_query.html";

$data = [
    "memberId" => "10036",
    "orderNo" => "PAYOUT123"
];

// Generate signature
$data['sign'] = generateSignature($data, "150kz9esh1s2f793abb8l0e4mjot3r2c");

// Send request
$response = curlPost($baseUrl . $endpoint, $data);

// Response handling
$result = json_decode($response, true);
if ($result['status'] == 'success') {
    $payoutData = $result['data'];
    
    switch ($payoutData['status']) {
        case '1':
            echo "Payout berhasil pada " . $payoutData['successTime'];
            echo "Dana sudah sampai ke " . $payoutData['account'];
            // Update database - mark as paid
            break;
        case '0':
            echo "Payout sedang diproses";
            echo "Silakan cek kembali dalam 1-2 jam";
            // Show pending status
            break;
        case '2':
            echo "Payout gagal";
            echo "Dana akan dikembalikan ke saldo merchant";
            // Show retry option
            break;
    }
} else {
    // Handle error
    echo "Error: " . $result['msg'];
}
?>
```

## Skenario Penggunaan

1. **Dashboard Monitoring**: Tampilkan status real-time payout
2. **Notifikasi Customer**: Kirim email ketika payout success
3. **Reconciliation**: Cocokkan status dengan data internal
4. **Troubleshooting**: Cek status jika customer bilang tidak terima dana

---

**Catatan**: Payout biasanya membutuhkan waktu 1-2 jam untuk diproses tergantung bank/e-wallet tujuan.
