API PEMBAYARAN MASUK
Permintaan
API Pembayaran Masuk memungkinkan pedagang untuk memulai transaksi pengumpulan pembayaran dari pelanggan.
Metode pembayaran yang didukung meliputi:
Transfer bank
QRIS (Quick Response Indonesian Standard)
Dompet digital
Kartu kredit/debit
Saluran pembayaran digital lainnya
Jalur Permintaan:
sandbox:
https://sandbox-gateway.smilepayz.com/v2.0/transaction/pay-in
production:https://gateway.smilepayz.com/v2.0/transaction/pay-in
Parameter Header
Field | Required | Type | Description |
---|---|---|---|
Content-Type | M | String | Spesifikasi tipe konten HTTP Nilai tetap: application/json Diperlukan untuk parsing permintaan yang tepat |
X-TIMESTAMP | M | String | Format datetime ISO 8601 dengan offset timezone Format: yyyy-MM-ddTHH:mm:ss±HH:mm Contoh: 2020-12-17T10:55:00+07:00 Catatan: Harus waktu server saat ini dalam ±5 menit |
X-SIGNATURE | M | String | Tanda tangan digital untuk autentikasi permintaan. Lihat Pembuatan Tanda Tangan |
X-PARTNER-ID | M | String | Pengidentifikasi pedagang unik yang ditugaskan oleh platform Format: String alfanumerik Digunakan untuk autentikasi pedagang dan routing transaksi Silakan masukkan merchantID |
Parameter Body
Field | Required | Type | Description |
---|---|---|---|
orderNo | M | String(32) | Pengidentifikasi transaksi unik untuk pelacakan pedagang Format: Hanya karakter alfanumerik Panjang: 6-32 karakter Harus unik dalam lingkup pedagang |
purpose | M | String(64) | Deskripsi transaksi yang dapat dibaca manusia Format: String yang dikodekan UTF-8 Panjang: 1-64 karakter Digunakan untuk riwayat transaksi dan pelaporan |
merchant | M | Object | Kontainer identifikasi pedagang dan informasi bisnis Berisi detail pedagang utama dan sub-pedagang Diperlukan untuk routing transaksi dan penyelesaian |
merchantId | M | String | Pengidentifikasi pedagang utama yang ditugaskan oleh platform Format: String alfanumerik Digunakan untuk routing transaksi dan pemrosesan penyelesaian |
merchantName | O | String | Nama bisnis terdaftar dari pedagang Format: String yang dikodekan UTF-8 Ditampilkan dalam antarmuka pembayaran dan catatan transaksi |
subMerchantId | O | String | Pengidentifikasi sub-pedagang untuk struktur pedagang multi-level Format: String alfanumerik Diperlukan untuk pemrosesan transaksi sub-pedagang |
subMerchantName | O | String | Nama bisnis sub-pedagang untuk tujuan tampilan Format: String yang dikodekan UTF-8 Ditampilkan dalam antarmuka pembayaran dan catatan transaksi |
money | M | Object | Kontainer spesifikasi jumlah dan mata uang transaksi Mendefinisikan nilai pembayaran dan unit moneter Diperlukan untuk pemrosesan pembayaran dan penyelesaian |
currency | M | String | Spesifikasi kode mata uang ISO 4217 Nilai tetap: IDR (Rupiah Indonesia) Menentukan aturan pemrosesan pembayaran dan mata uang penyelesaian |
amount | M | Number | Jumlah transaksi dalam unit mata uang terkecil Format: Nilai integer Contoh: 20000 mewakili IDR 20000 Rentang: 10000-999999999 |
payer | C | Object | Kontainer informasi pembayaran pelanggan Diperlukan untuk metode pembayaran tertentu (mis., OVO) Digunakan untuk verifikasi pembayaran dan komunikasi pelanggan |
phone | C | String | Nomor telepon seluler pelanggan untuk verifikasi pembayaran Format: Format internasional dengan kode negara Contoh: +6281234567890 Diperlukan untuk pembayaran dompet OVO |
paymentMethod | O | String | Spesifikasi metode pembayaran yang disukai Format: Kode metode pembayaran yang telah ditentukan Contoh: QRIS, W_DANA, CIMB, BCA Jika dihilangkan, halaman pemilihan metode pembayaran ditampilkan |
expiryPeriod | O | Number | Durasi timeout sesi pembayaran dalam detik Format: Nilai integer Default: 3600 detik (1 jam) Rentang: 300-86400 detik (5 menit hingga 24 jam) |
redirectUrl | O | String(256) | URL tujuan redirect pasca-pembayaran Format: URL HTTP/HTTPS yang valid Panjang maksimum: 256 karakter Pelanggan diarahkan ke sini setelah pembayaran selesai |
callbackUrl | O | String(256) | URL endpoint notifikasi webhook Format: URL HTTP/HTTPS yang valid Panjang maksimum: 256 karakter Menerima pembaruan status transaksi waktu nyata |
Catatan Penting
1. Pemilihan Metode Pembayaran: Jika paymentMethod
tidak ditentukan, Smilepayz akan mengembalikan halaman checkout untuk pelanggan memilih metode pembayaran yang disukai
2. Persyaratan Pembayaran OVO: Ketika paymentMethod
disetel ke OVO, field payer.phone
wajib untuk verifikasi dan pemrosesan pembayaran
Contoh Body – Permintaan Transaksi:
Content-type: application/json
X-TIMESTAMP: 2020-12-17T10:55:00+07:00
X-SIGNATURE: 7MHd9v5/m9JeqmDZVwWBZUZ5J5...7120QnFEny7Qm7uQR1G0TWCh10fsU6nVxiRoeoQ==
X-PARTNER-ID: 20001
{
"orderNo": "2000102900000000000001", // Perhatian! format
"purpose": "transaksi untuk bisnis bla bla",
"paymentMethod": "QRIS",
"money": {
"currency": "IDR",
"amount": 10000
},
"merchant": {
"merchantId": "20001"
}
}
Respons
Permintaan HTTP
Field | Required | Type | Description |
---|---|---|---|
Content-Type | M | String | Spesifikasi tipe konten respons HTTP Nilai tetap: application/json Menunjukkan format respons JSON |
X-TIMESTAMP | M | String | Format datetime ISO 8601 dengan offset timezone Format: yyyy-MM-ddTHH:mm:ss±HH:mm Contoh: 2020-12-17T10:55:00+07:00 |
Parameter Body
Field | Required | Type | Description |
---|---|---|---|
code | M | String | Kode status respons API yang menunjukkan hasil operasi Format: String dua digit Sukses: "00", Error: Kode lainnya Digunakan untuk penanganan respons programatik |
message | M | String | Deskripsi status respons yang dapat dibaca manusia Format: String yang dikodekan UTF-8 Memberikan informasi terperinci tentang hasil operasi Dilokalisasi berdasarkan bahasa permintaan |
orderNo | M | String | Pengidentifikasi transaksi pedagang asli untuk referensi Format: Sama dengan orderNo permintaan Digunakan untuk pelacakan dan rekonsiliasi transaksi |
tradeNo | O | String | Nomor referensi transaksi internal untuk pelacakan sistem Format: String alfanumerik yang dibuat sistem Digunakan untuk manajemen transaksi internal dan dukungan |
merchant | M | Object | Kontainer informasi pedagang dengan detail akun Berisi identifikasi pedagang dan informasi akun Lihat Model Pedagang |
merchantId | M | String | Pengidentifikasi pedagang utama yang ditugaskan oleh platform Format: String alfanumerik Digunakan untuk routing transaksi dan pemrosesan penyelesaian |
merchantName | O | String | Nama bisnis terdaftar dari pedagang Format: String yang dikodekan UTF-8 Ditampilkan dalam antarmuka pembayaran dan catatan transaksi |
subMerchantId | O | String | Pengidentifikasi sub-pedagang untuk struktur pedagang multi-level Format: String alfanumerik Diperlukan untuk pemrosesan transaksi sub-pedagang |
subMerchantName | O | String | Nama bisnis sub-pedagang untuk tujuan tampilan Format: String yang dikodekan UTF-8 Ditampilkan dalam antarmuka pembayaran dan catatan transaksi |
money | M | Object | Detail jumlah transaksi dengan spesifikasi mata uang Berisi jumlah pembayaran yang dikonfirmasi dan mata uang Lihat Model Uang |
currency | M | String | Spesifikasi kode mata uang ISO 4217 Nilai tetap: IDR (Rupiah Indonesia) Menentukan aturan pemrosesan pembayaran dan mata uang penyelesaian |
amount | M | Number | Jumlah transaksi dalam unit mata uang terkecil Format: Nilai integer Contoh: 20000 mewakili IDR 20000 Rentang: 10000-999999999 |
transactionTime | M | String | Format datetime ISO 8601 (yyyy-MM-ddTHH:mm:ss±HH:mm) Contoh: 2020-12-17T10:55:00+07:00 Timestamp ketika transaksi diproses oleh sistem |
channel | M | Object | Detail dan instruksi saluran pemrosesan pembayaran Berisi metode pembayaran, URL, dan data tambahan Lihat Model Saluran |
paymentMethod | O | String | Spesifikasi metode pembayaran yang disukai Format: Kode metode pembayaran yang telah ditentukan Contoh: QRIS, W_DANA, CIMB, BCA Jika dihilangkan, halaman pemilihan metode pembayaran ditampilkan |
vaNumber | O | String | Nomor rekening virtual untuk pembayaran transfer bank Format: String alfanumerik Digunakan untuk pemrosesan pembayaran rekening virtual Contoh: 1419001332911089 |
qrString | O | String | String kode QR atau URL gambar untuk pembayaran QRIS Format: String kode QR atau URL gambar Digunakan untuk pembuatan dan tampilan kode QR Contoh: 00020101021226570011ID.DANA.WWW... atau https://gateway.smilepayz.com/imge/xxx.img |
paymentUrl | O | String | URL gateway pembayaran untuk mengarahkan pelanggan Format: URL HTTP/HTTPS yang valid Digunakan untuk pengalihan pembayaran pelanggan Contoh: https://gateway.smilepayz.com/cashier/#/loading?tradeNo=xxx |
status | O | String | Status pemrosesan transaksi saat ini Format: Kode status yang telah ditentukan Contoh: PROCESSING, SUCCESS, FAILED Lihat Model Status |
Content-type: application/json
X-TIMESTAMP: 2020-12-17T10:55:00+07:00
{
"channel": {
"additionalInfo": {},
"paymentMethod": "QRIS",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200112410241325417215",
"qrString": "00020101021226570011ID.DANA.WWW011893600915069533479502096953347950303UME51440014ID.CO.QRIS.WWW0215ID20243302250440303UME5204739953033605405100005802ID5919DP Mega Jaya Makmur6015Kota Jakarta Se61051221062750118pay_JXlS1MtBUk931660490011ID.DANA.WWW0425MER202110293394047135422905011630451D5"
},
"code": "00",
"merchant": {
"accountNo": "1102000000000000",
"merchantId": "20001",
"merchantName": "test"
},
"message": "Successful",
"money": {
"amount": 10000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"status": "PROCESSING",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}
{
"channel": {
"additionalInfo": {},
"paymentMethod": "QRIS",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200112410241325417215",
"qrString": "https://gatatway.smilepayz.com/imge/MER202110293394047135422905011630451D5.img"
},
"code": "00",
"merchant": {
"accountNo": "1102000000000000",
"merchantId": "20001",
"merchantName": "test"
},
"message": "Successful",
"money": {
"amount": 10000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"status": "PROCESSING",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}
{
"channel": {
"additionalInfo": {
"paymentUrl": "https://link.dana.id/pay?bizNo=20250102111212800110166129632333240×tamp=1735797716250&originSourcePlatform=IPG&mid=216620000383553341323&did=216650001014253563327&sid=216660001014426055320&sign=rzccMXnlSPX6WAyJRC1kAjSPOphhnctVDAIN5zSSn9ByT9cEuiYNZFhDhbHSfPjFq9NqeMURMk5xc%2F8W8zC4BDk1L5dm6QkXs3kDg5HFBtgOtgHmXesxhcRYPUXNwiLff6zuDpjVSi1jNXGoMR82S4l6KKpJIKKvsLXgHET%2B66Dxy%2FGQlH5tAKX5KXVqfMC%2FELRGOLq3WWToId%2B2ayYgnjBpOxCUF%2Fm%2FL9Nn8L%2BdUEPWpLTD%2FwBMN1tRrrsiIvOyHjl7AK3MB3zE7WrDfdHhq9s1z7cgoHpJkjnMXjGoMpMm0AD9IU2qoxkqQhGJQfCYcn4tA8930VR%2BggxOHPDhZg%3D%3D&forceToH5=false"
},
"paymentMethod": "W_DANA",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200192501021315010115"
},
"code": "00",
"merchant": {
"accountNo": "1102000000000000",
"merchantId": "20001",
"merchantName": "test"
},
"message": "Successful",
"money": {
"amount": 10000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"status": "PROCESSING",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}
{
"channel": {
"additionalInfo": {},
"paymentMethod": "CIMB",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200112501021320331776",
"vaNumber": "1419001332911089"
},
"code": "00",
"merchant": {
"accountNo": "11020011202402290943",
"merchantId": "20011",
"merchantName": "bradytest123www"
},
"message": "Successful",
"money": {
"amount": 20000,
"currency": "IDR"
},
"orderNo": "200110437c4152cbe45cebcacd25",
"status": "PROCESSING",
"tradeNo": "101200112501021320331776",
"transactionTime": "2025-01-02T13:20:34+07:00"
}
Notifikasi/Callback
Permintaan HTTP
Field | Required | Type | Description |
---|---|---|---|
Content-Type | M | String | Spesifikasi tipe konten notifikasi HTTP Nilai tetap: application/json Menunjukkan format payload JSON |
X-TIMESTAMP | M | String | Format datetime ISO 8601 dengan offset timezone Format: yyyy-MM-ddTHH:mm:ss±HH:mm Contoh: 2020-12-17T10:55:00+07:00 |
X-SIGNATURE | M | String | Tanda tangan digital untuk verifikasi notifikasi Format: Tanda tangan yang dikodekan Base64 Digunakan untuk memverifikasi keaslian notifikasi Lihat cara memeriksa nilai ini |
Parameter Body
Field | Required | Type | Description |
---|---|---|---|
orderNo | M | String | Pengidentifikasi transaksi pedagang asli untuk referensi Format: Sama dengan orderNo permintaan Digunakan untuk rekonsiliasi dan pelacakan transaksi |
tradeNo | M | String | Nomor referensi transaksi internal untuk pelacakan sistem Format: String alfanumerik yang dibuat sistem Digunakan untuk manajemen transaksi internal dan dukungan |
merchantId | M | String | Pengidentifikasi pedagang utama untuk routing transaksi Format: String alfanumerik Digunakan untuk identifikasi pedagang dan pemrosesan penyelesaian |
merchantName | M | String | Nama bisnis pedagang terdaftar untuk tampilan Format: String yang dikodekan UTF-8 Ditampilkan dalam catatan transaksi dan laporan |
subMerchantId | O | String | Pengidentifikasi sub-pedagang untuk struktur multi-level Format: String alfanumerik Disertakan ketika sub-pedagang terlibat dalam transaksi |
subMerchantName | O | String | Nama bisnis sub-pedagang untuk tujuan tampilan Format: String yang dikodekan UTF-8 Disertakan ketika sub-pedagang terlibat dalam transaksi |
paymentMethod | M | String | Metode pembayaran yang digunakan untuk pemrosesan transaksi Format: Kode metode pembayaran yang telah ditentukan Contoh: BCA, QRIS, DANA, CIMB Menunjukkan saluran pembayaran aktual yang digunakan |
transactionTime | M | String | Format datetime ISO 8601 (yyyy-MM-ddTHH:mm:ss±HH:mm) Timestamp ketika transaksi selesai oleh penyedia pembayaran |
status | M | String | Status pemrosesan transaksi akhir Format: Kode status yang telah ditentukan Contoh: SUCCESS, FAILED Menunjukkan hasil akhir dari transaksi Lihat Model Status |
money | M | Object | Detail jumlah transaksi akhir dengan mata uang Berisi jumlah pembayaran yang dikonfirmasi dan mata uang Mungkin berbeda dari jumlah permintaan karena biaya atau penyesuaian Lihat Model Uang |
currency | M | String | Spesifikasi kode mata uang ISO 4217 Nilai tetap: IDR (Rupiah Indonesia) Menentukan aturan pemrosesan pembayaran dan mata uang penyelesaian |
amount | M | Number | Jumlah transaksi dalam unit mata uang terkecil Format: Nilai integer Contoh: 20000 mewakili IDR 20000 Rentang: 10000-999999999 |
payer | O | String | Informasi pelanggan yang disediakan selama pembayaran Format: Objek data pelanggan Berisi detail pembayar ketika tersedia Lihat Model Pembayar |
Kembalian
Penting
Notifikasi silakan kembalikan hanya string SUCCESS
{
"merchantId": "20001",
"merchantName": "test",
"money": {
"amount": 100000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"paymentMethod": "QRIS",
"status": "SUCCESS",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}