# API Query Penerimaan Pembayaran (pay_trade_query.html)

Endpoint untuk query status order pembayaran penerimaan.

## Deskripsi

Endpoint ini digunakan untuk mengecek status pembayaran order yang telah dibuat. Berguna untuk verifikasi pembayaran atau troubleshooting jika callback tidak diterima.

## Endpoint

```
POST https://pay-test.targeted.work/pay_trade_query.html
```

## Parameter Request

| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| memberId | string | ✓ | Nomor merchant |
| orderId | string | ✓ | Nomor order yang ingin dicek |
| sign | string | ✓ | Signature MD5 untuk verifikasi keamanan |

## Struktur Response

```json
{
  "status": "success|error",
  "msg": "Pesan deskripsi",
  "errCode": null,
  "data": {
    "orderId": "ORDER123",
    "memberID": "10036",
    "dstCode": "PERMATA",
    "amount": "50000",
    "status": "0",
    "createTime": "2024-04-26 18:18:18",
    "successTime": "2024-04-26 18:20:00"
  }
}
```

## Penjelasan Response Data

| Field | Deskripsi |
|---|---|
| orderId | Nomor order yang dicek |
| memberID | Merchant ID |
| dstCode | Metode pembayaran yang digunakan |
| amount | Jumlah pembayaran |
| status | Status pembayaran (0=pending, 1=success, 2=failed, 3=abandoned) |
| createTime | Waktu order dibuat |
| successTime | Waktu pembayaran berhasil (jika status=1) |

## Status Pembayaran

| Code | Status | Keterangan |
|---|---|---|
| 0 | PENDING | Menunggu pembayaran |
| 1 | SUCCESS | Pembayaran berhasil |
| 2 | FAILED | Pembayaran gagal |
| 3 | ABANDONED | Pembayaran ditinggalkan (expired) |

## Contoh Implementasi PHP

```php
<?php
$baseUrl = "https://pay-test.targeted.work/";
$endpoint = "pay_trade_query.html";

$data = [
    "memberId" => "10036",
    "orderId" => "ORDER123"
];

// 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') {
    $paymentData = $result['data'];
    
    switch ($paymentData['status']) {
        case '1':
            echo "Pembayaran berhasil pada " . $paymentData['successTime'];
            // Update database - mark as paid
            break;
        case '0':
            echo "Pembayaran masih pending";
            // Show payment info
            break;
        case '2':
            echo "Pembayaran gagal";
            // Show retry option
            break;
        case '3':
            echo "Pembayaran expired";
            // Show create new order
            break;
    }
} else {
    // Handle error
    echo "Error: " . $result['msg'];
}
?>
```

## Use Cases

1. **Verifikasi Pembayaran**: Jika callback tidak diterima, gunakan query untuk memverifikasi
2. **Dashboard Order**: Tampilkan status real-time di dashboard merchant
3. **Reminder Customer**: Trigger reminder email untuk pembayaran pending
4. **Reconciliation**: Cocokkan status order dengan data internal merchant

---

**Catatan**: Query bisa dilakukan kapan saja setelah order dibuat, tidak perlu menunggu callback.
