Pembayaran Online Midtrans Juragan
Selain checkout WhatsApp, tema bisa menerima pembayaran online (QRIS, Virtual Account & E-Wallet) lewat payment gateway Midtrans. Uang pembayaran masuk langsung ke akun Midtrans Anda. Backend memakai Cloudflare Worker (endpoint create-payment + notification).
Prasyarat wajib: Riwayat Pesanan Otomatis
Fitur ini tidak bisa dipakai tanpa Riwayat Pesanan Otomatis: webhook dari panduan tersebut menjadi pencatat pesanan sekaligus penerima status pembayaran. Selesaikan dulu Riwayat Pesanan Otomatis, termasuk memasang webhook di tema (langkah 5).
1. Kebutuhan & akun Midtrans
- Akun Midtrans (menerima pembayaran).
- Akun Cloudflare (untuk Worker).
- Akun Google (Riwayat Pesanan Otomatis dari halaman sebelumnya).
Di dashboard Midtrans: aktifkan Snap. Uji pakai Sandbox (Development) dulu, lalu Production setelah pola berjalan. Salin Server Key dari Settings → Access Keys (sesuai mode). Jangan bagikan server key.
2. Buat kode Worker
Buka Generator Kode Cloudflare Worker di https://tools.sugeng.id/juragan-worker/. Isi Server Key, mode (Sandbox/Production), URL webhook Riwayat Pesanan Otomatis (wajib, dari halaman Riwayat Pesanan Otomatis), dan Alamat toko (redirect setelah pembayaran sukses). Klik Buat Kode Worker, lalu salin kode.
3. Deploy di Cloudflare
- Dashboard Cloudflare → Workers & Pages → Create application → pilih Start with Hello World! → Deploy.
- Klik Edit code, hapus semua kode bawaan, ganti dengan kode hasil generator, klik Deploy (Save and Deploy).
- Salin URL worker (
https://<nama>.<subdomain>.workers.dev).
4. Notification URL & pastikan tidak diblokir
- Di Midtrans Settings → Payment → Notification URL, isi endpoint:
(URL worker kamu)/notification. - Pastikan notifikasi tidak terblokir Cloudflare Browser Integrity Check (error 1010). Cara teraman: pakai custom domain untuk worker DAN buat WAF Custom Rule bypass Browser Integrity Check khusus path
/notification.
WARNING
Tanpa ini, pembayaran sukses tidak otomatis tercatat "Lunas" (notifikasi ditolak sebelum sampai worker).
5. Hubungkan ke Riwayat Pesanan
Pastikan Apps Script Riwayat Pesanan Otomatis terpasang dari template Sheet terbaru (lihat Riwayat Pesanan Otomatis). Template terbaru sudah mendukung update status pesanan otomatis (Lunas). Saat membuat kode di generator (langkah 2), kolom URL webhook Riwayat Pesanan Otomatis wajib diisi URL webhook Anda (nilai ini masuk ke kode worker sebagai ORDER_WEBHOOK), agar notifikasi settlement mengubah status jadi Lunas di sheet.
6. Aktifkan di tema
- Buka Generator Kode Pengaturan di https://tools.sugeng.id/juragan-setting/, grup Fitur tingkat lanjut.
- Nyalakan toggle Bayar Online (Midtrans) dan isi URL Cloudflare Worker =
https://<nama>.<subdomain>.workers.dev(cukup URL dasar;/create-paymentditambahkan otomatis). - Buat Kode, salin, lalu pasang ulang kode pengaturan di tema: Tata Letak → widget "Kode Pengaturan Template".
- Metode "Bayar Online (QRIS, Virtual Account & E-Wallet)" muncul di dropdown checkout.
7. Uji & produksi
- Uji sandbox: pastikan generate memakai mode Sandbox (kode berisi
CFG.IS_PRODUCTION = false), tes pesanan. Pastikan redirect ke Snap, status jadi Lunas di sheet, dan notif Telegram masuk. - Produksi: generate ulang dengan Server Key Production + mode Production (
CFG.IS_PRODUCTION = true), deploy ulang dengan kode baru, uji sekali dengan transaksi sungguhan.
Troubleshooting
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Metode "Bayar Online" tidak muncul | Webhook riwayat belum terpasang, atau tema versi lama | Lengkapi Riwayat Pesanan Otomatis dulu (webhook wajib); pastikan tema versi terbaru |
| Bayar gagal "Pembayaran gagal" | URL worker salah / worker offline / CORS | Cek URL Cloudflare Worker benar; worker online; server key sesuai mode |
| Status tidak jadi Lunas | Notifikasi terblokir WAF atau ORDER_WEBHOOK/Notification URL salah | Periksa bypass WAF untuk /notification; pastikan webhook terisi di generator |
| Redirect balik salah setelah bayar | Alamat toko tidak terisi saat generate | Generate ulang dengan Alamat toko yang benar |