Checkout links dan sessions
Checkout session lewat API, checkout link yang bisa dibagikan, metode bayar QRIS dan VA.
Ada dua cara menagih pembeli: checkout link (halaman hosted yang dibagikan) dan checkout session (dibuat lewat API).
Checkout link
Checkout link adalah URL tetap untuk satu produk dan satu harga: https://nyaur.id/checkout/<slug>. Cocok untuk README, landing page, atau DM. Link dibuat dan dikelola dari dashboard, Checkout links.
| Opsi | Keterangan |
|---|---|
productId, priceId | Wajib. Harga harus milik produk itu. |
slug | Opsional, huruf kecil, harus unik. Bila kosong, dibuat dari nama produk. Slug yang sudah dipakai ditolak (CONFLICT). |
discountId | Opsional, terapkan diskon. |
allowPromoCodes | Izinkan pembeli memasukkan kode promo. |
Halaman checkout menampilkan baris PPN dan keterangan bahwa pembayaran diproses oleh PT Joyo Digitama Solusi. Pembeli memilih QRIS atau virtual account (BCA, BNI, BRI).
Checkout session lewat API
POST /v1/checkouts
curl -X POST https://api.nyaur.id/v1/checkouts \
-H "Authorization: Bearer $NYAUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"productId": "prd_xxx",
"priceId": "prc_xxx",
"customerEmail": "pembeli@example.com",
"customerName": "Dewi",
"locale": "id",
"metadata": { "userId": "u_123" }
}'| Field | Keterangan |
|---|---|
productId | Wajib. |
priceId | Opsional. Tanpa ini dipakai harga default yang aktif. |
customerEmail | Opsional. Customer dibuat atau dipakai ulang berdasarkan email. |
locale | id atau en. Default mengikuti organisasi. |
Respons 201 memuat id, status, mode, subtotal, ppn, total, dan expiresAt.
- Sesi berlaku 60 menit. Setelah itu
GET /v1/checkouts/{id}melaporkanexpired. status:open,paid,expired,failed,cancelled.total=subtotal+ PPN. Contoh: subtotal Rp100.000 menjadi total Rp111.000.modemengikuti token. Lihat Sandbox vs live.
Jangan polling status. Dengarkan webhook checkout.paid dan order.paid, lalu ambil order lewat GET /v1/orders/{id}.
Event
| Event | Kapan |
|---|---|
checkout.created | Sesi dibuat. |
checkout.paid | Pembeli lunas. |
checkout.expired | Sesi kedaluwarsa tanpa pembayaran. |
order.paid | Order dan invoice sudah ada. |
Orders dan customers
GET /v1/ordersdanGET /v1/orders/{id}: order sesuai mode token. Field penting:status(pending,paid,refunded,partially_refunded,disputed),subtotal,ppnAmount,total,platformFee,creatorCredit,invoiceNumber,refundedAmount.GET /v1/customers,POST /v1/customers,GET /v1/customers/{id}:emailwajib,name,externalId, danmetadataopsional.