# API Penerimaan Pembayaran - Kasir (pay_counter.html)

Endpoint untuk menerima pembayaran dengan redirect ke halaman kasir kami.

## Deskripsi

Metode counter (kasir) digunakan ketika merchant ingin menampilkan halaman pembayaran dari payment gateway. Customer akan diarahkan ke halaman kami untuk memilih metode dan melakukan pembayaran.

## Endpoint

```
POST https://pay-test.targeted.work/pay_counter.html
```

## Parameter Request

| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| memberId | string | ✓ | Nomor merchant (diberikan saat registrasi) |
| orderId | string | ✓ | Nomor order unik (max 50 karakter, tidak boleh duplikat) |
| amount | integer | ✓ | Jumlah pembayaran dalam Rupiah |
| dstCode | string | ✓ | Kode metode pembayaran (untuk counter: hanya OVO recommended) |
| name | string | ✓ | Nama customer (hanya alfabet, titik, dan spasi) |
| phone | string | ✓ | Nomor telepon customer (minimal 10 digit) |
| email | string | ✓ | Email customer (format valid) |
| notifyUrl | string | ✓ | URL callback untuk notifikasi payment |
| dateTime | string |  | Tanggal waktu request (format: YYYY-MM-DD HH:MM:SS, optional) |
| remark | string |  | Keterangan tambahan (optional, max 200 karakter) |
| sign | string | ✓ | Signature MD5 untuk verifikasi keamanan |

## Struktur Response

```json
{
  "status": "success|error",
  "msg": "Pesan deskripsi",
  "errCode": null,
  "data": {
    "redirectUrl": "https://pay-test.targeted.work/payment_page?token=xxx"
  }
}
```

## Penjelasan Response

| Field | Deskripsi |
|---|---|
| redirectUrl | URL untuk redirect customer ke halaman pembayaran kami |

## Alur Pembayaran

1. Merchant mengirim request ke endpoint
2. Sistem mengembalikan `redirectUrl`
3. Redirect customer ke `redirectUrl`
4. Customer memilih metode pembayaran dan melakukan pembayaran
5. Setelah pembayaran berhasil/gagal, sistem mengirim callback ke merchant
6. Redirect customer kembali ke merchant (return URL dalam callback)

## Contoh Implementasi PHP

```php
<?php
$baseUrl = "https://pay-test.targeted.work/";
$endpoint = "pay_counter.html";

$data = [
    "memberId" => "10036",
    "orderId" => "ORDER" . time(),
    "amount" => 50000,
    "dstCode" => "OVO",
    "name" => "John Doe",
    "phone" => "08123456789",
    "email" => "john@example.com",
    "notifyUrl" => "https://yoursite.com/callback.php",
    "dateTime" => date("Y-m-d H:i:s")
];

// 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') {
    // Redirect ke payment gateway
    header("Location: " . $result['data']['redirectUrl']);
    exit;
} else {
    // Handle error
    echo "Error: " . $result['msg'];
}
?>
```

## Metode yang Didukung untuk Counter

| dstCode | Deskripsi | Status |
|---|---|---|
| OVO | OVO | ✓ Recommended |
| GOPAY | GOPAY | ⚠ Limited |
| SHOPEEPAY | SHOPEEPAY | ⚠ Limited |
| DANA | DANA | ⚠ Limited |
| LINKAJA | LINKAJA | ⚠ Limited |

---

**Catatan**: OVO adalah metode paling stabil untuk counter. Untuk metode lain, gunakan API non-counter lebih disarankan.
