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

  1. Anda membuat payment link (sekali) dengan produk & nominal.
  2. Bagikan URL link ke pelanggan.
  3. Pelanggan membuka link → sistem membuat order baru dari link tersebut.
  4. Pembayaran & webhook berjalan seperti order biasa.

Buat payment link

POST/merchant/payment-link

Header wajib: Authorization: Bearer <jwt> (login merchant).

FieldTipeKeterangan
merchant_idstringID merchant Anda
titlestringJudul link (tampil ke pelanggan)
expiration_timenumberMasa berlaku dalam detik (mis. 86400)
max_usagenumberBerapa kali link boleh dipakai
productsarray[{ 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

EndpointKeterangan
GET /merchant/payment-linkDaftar link (pagination: limit, offset)
GET /merchant/payment-link/{payment_link_id}Detail satu link
PUT /merchant/payment-linkUbah judul/expiry/status
DELETE /merchant/payment-link/{payment_link_id}Nonaktifkan link

Membuat order dari link (publik)

POST/order/payment-link

Endpoint 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}/validate

Dipakai halaman checkout untuk memastikan link masih aktif sebelum membuat order. Respons berisi status, judul, produk, dan sisa kuota.