Payment links
Link pembayaran reusable yang bisa dibagikan lewat WhatsApp, email, atau tombol di website. Pelanggan membuka link, memilih token, dan membayar — tanpa Anda membuat order manual lebih dulu.
Alur
- Anda membuat payment link (sekali) dengan produk & nominal.
- Bagikan URL link ke pelanggan.
- Pelanggan membuka link → sistem membuat order baru dari link tersebut.
- Pembayaran & webhook berjalan seperti order biasa.
Buat payment link
POST
/merchant/payment-linkHeader wajib: Authorization: Bearer <jwt> (login merchant).
| Field | Tipe | Keterangan |
|---|---|---|
merchant_id | string | ID merchant Anda |
title | string | Judul link (tampil ke pelanggan) |
expiration_time | number | Masa berlaku dalam detik (mis. 86400) |
max_usage | number | Berapa kali link boleh dipakai |
products | array | [{ name, price, quantity }] — price dalam IDR |
bash
curl -X POST "$HASHPAY_BASE/merchant/payment-link" \
-H "Authorization: Bearer $MERCHANT_JWT" \
-H "Content-Type: application/json" \
-d '{
"merchant_id": "10001",
"title": "Paket Kopi Bulanan",
"expiration_time": 86400,
"max_usage": 10,
"products": [
{ "name": "Kopi Arabika 250g", "price": 75000, "quantity": 1 }
]
}'Respons 201
{
"status_code": 201,
"message": "success",
"data": {
"payment_link_id": "PL-10001-1789851509174525000",
"merchant_id": "10001",
"title": "Paket Kopi Bulanan",
"link": "https://pay.hashpay.id/PL-10001-1789851509174525000",
"total_price": "75000",
"currency": "IDR",
"status": "Active",
"usage_count": 0,
"max_usage": 10
}
}Kelola payment link
| Endpoint | Keterangan |
|---|---|
GET /merchant/payment-link | Daftar link (pagination: limit, offset) |
GET /merchant/payment-link/{payment_link_id} | Detail satu link |
PUT /merchant/payment-link | Ubah judul/expiry/status |
DELETE /merchant/payment-link/{payment_link_id} | Nonaktifkan link |
Membuat order dari link (publik)
POST
/order/payment-linkEndpoint publik tanpa autentikasi merchant. Bila Anda memakai webview checkout Hashpay, halaman pembayaran memanggil endpoint ini otomatis.
bash
curl -X POST "$HASHPAY_BASE/order/payment-link" \
-H "Content-Type: application/json" \
-d '{ "payment_link_id": "PL-10001-1789851509174525000" }'Respons 201
{
"status_code": 201,
"message": "success",
"data": {
"request": {
"order_no": "ORD202609202935000",
"merchant_id": "10001",
"amount": "75000",
"currency": "IDR",
"status": "Created"
},
"expired_at": 1821387856,
"api_key": "pl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}Verifikasi link (publik)
GET
/payment-links/{payment_link_id}/validateDipakai halaman checkout untuk memastikan link masih aktif sebelum membuat order. Respons berisi status, judul, produk, dan sisa kuota.