.png?sv=2022-11-02&spr=https&st=2025-11-26T06%3A46%3A29Z&se=2025-11-26T07%3A03%3A29Z&sr=c&sp=r&sig=EOw0HqJWUMCIVqVU%2FIiVPbu1EK9jHVwZJHa7x3fd0YA%3D)
Menguji integrasi Pembayaran Tagihan Anda secara menyeluruh sangat penting untuk memastikan pengalaman yang lancar bagi pengguna Anda. Bagian ini menyediakan skenario tes khusus untuk pembayaran tagihan PLN (Perusahaan Listrik Negara), yang dapat menjadi dasar untuk menguji jenis pembayaran tagihan lainnya saat tersedia.
Skenario Tes PLN
PLN menawarkan dua jenis pembayaran listrik: Prabayar (token) dan Pascabayar (tagihan bulanan). Di bawah ini adalah skenario tes untuk kedua jenis tersebut.
Skenario Tes PLN Prabayar (Token)
Positif
Negatif
Skenario Tes PLN Pascabayar
Positif
Negatif
Contoh Permintaan dan Respons
Contoh 1: Pembelian Token PLN Prabayar
Permintaan Daftar Produk:
GET /v1/product?category=ELECTRICITY
Respons:
{
"limit": 50,
"cursor": "dummy-cursor-value-001==",
"data": [
{
"type": "product",
"id": "PLN_PREPAID_100K",
"properties": {
"product_name": "PLN Prepaid 100.000",
"category": "ELECTRICITY",
"biller": "PLN",
"country": "ID",
"currency": "IDR",
"requires_inquiry": true,
"availability_status": "AVAILABLE",
"admin_amount": 2750,
"base_amount": 100000,
"total_amount": 102750,
"revenue_share_amount": 500,
"locale": {
"en": "PLN Prepaid 100.000",
"id": "PLN Prabayar 100.000"
}
}
}
]
}
Permintaan Inquiry:
{
"product_id": "PLN_PREPAID_100K",
"customer_number": "32185159194"
}
Respons Inquiry:
{
"data": {
"business_id": "5f27a14a9bf05c73dd040bc8",
"type": "inquiry",
"id": "inq-98765",
"properties": {
"product_id": "PLN_PREPAID_100K",
"admin_amount": 2750,
"base_amount": 100000,
"total_amount": 102750,
"revenue_share_amount": 500,
"currency": "IDR",
"customer_number": "32185159194",
"customer_details": [
{
"key": "Nama Pelanggan",
"value": "Ismail Rabbanii"
},
{
"key": "Nomor Pelanggan",
"value": "32185159194"
}
],
"product_details": [
{
"key": "Tarif/Daya",
"value": "R2/000003500"
},
{
"key": "Denom",
"value": "100.000"
}
],
"bill_details": [
{
"key": "Admin Fee",
"value": "Rp2.750"
},
{
"key": "Total Bayar",
"value": "Rp102.750"
}
]
}
}
}
Permintaan Payment:
{
"product_id": "PLN_PREPAID_100K",
"customer_number": "32185159194",
"inquiry_id": "inq-98765",
"reference_id": "tx-pln-001",
"total_amount": 102750,
"additional_properties": {
"payment_reference": "sfinhsiof2309rr3"
}
}
Respons Payment:
{
"data": {
"business_id": "5f27a14a9bf05c73dd040bc8",
"type": "payment",
"id": "trx-98765",
"properties": {
"product_id": "PLN_PREPAID_100K",
"customer_number": "32185159194",
"reference_id": "tx-pln-001",
"admin_amount": 2750,
"base_amount": 100000,
"total_amount": 102750,
"currency": "IDR",
"status": "PENDING",
"fulfilled_at": null,
"failure_code": null,
"failure_reason": null,
"customer_details": [],
"product_details": [],
"bill_details": [],
"payment_details": []
}
}
}
Callback Pembayaran Berhasil:
{
"business_id": "5f27a14a9bf05c73dd040bc8",
"created": "2024-01-23T08:15:30Z",
"event": "bill_payments.succeeded",
"data": {
"id": "trx-98765",
"properties": {
"reference_id": "tx-pln-001",
"product_id": "PLN_PREPAID_100K",
"customer_number": "32185159194",
"total_amount": 102750,
"status": "SUCCEEDED",
"fulfilled_at": "2024-01-23T08:15:30Z"
}
}
}
Permintaan Detail Pembayaran:
GET /v1/payment/trx-98765
Respons Berhasil:
{
"data": {
"business_id": "5f27a14a9bf05c73dd040bc8",
"type": "payment",
"id": "trx-98765",
"properties": {
"reference_id": "tx-pln-001",
"product_id": "PLN_PREPAID_100K",
"customer_number": "32185159194",
"admin_amount": 2750,
"base_amount": 100000,
"total_amount": 102750,
"status": "SUCCEEDED",
"fulfilled_at": "2024-01-23T08:15:30Z",
"failure_code": null,
"failure_reason": null,
"customer_details": [
{
"key": "Nama Pelanggan",
"value": "Ismail Rabbanii"
},
{
"key": "Nomor Pelanggan",
"value": "32185159194"
}
],
"product_details": [
{
"key": "Tarif/Daya",
"value": "R2/000003500"
}
],
"bill_details": [
{
"key": "Admin Fee",
"value": "Rp2.750"
},
{
"key": "Total Bayar",
"value": "Rp102.750"
}
],
"payment_details": [
{
"key": "Token",
"value": "1234-5678-9012-3456-7890"
},
{
"key": "Serial Number",
"value": "PLN987654321"
}
]
}
}
}
Contoh 2: Transaksi Gagal (System Timeout)
Respons Pembayaran (endpoint yang sama dengan kasus berhasil):
{
"data": {
"business_id": "5f27a14a9bf05c73dd040bc8",
"type": "payment",
"id": "trx-98768",
"properties": {
"reference_id": "tx-pln-002",
"product_id": "PLN_PREPAID_100K",
"customer_number": "32185159195",
"admin_amount": 2750,
"base_amount": 100000,
"total_amount": 102750,
"currency": "IDR",
"status": "PENDING",
"fulfilled_at": null,
"failure_code": null,
"failure_reason": null,
"customer_details": [],
"product_details": [],
"bill_details": [],
"payment_details": []
}
}
}
Callback Pembayaran Gagal:
{
"business_id": "5f27a14a9bf05c73dd040bc8",
"created": "2024-01-23T08:30:00Z",
"event": "bill_payments.failed",
"data": {
"id": "trx-98768",
"reference_id": "tx-pln-002",
"product_id": "PLN_PREPAID_100K",
"customer_number": "32185159195",
"total_amount": 102750,
"status": "FAILED",
"fulfilled_at": "2024-01-23T08:30:00Z",
"failure_code": "BILLER_TIMEOUT",
"failure_reason": "Biller system timeout after 30 seconds"
}
}
Praktik Terbaik Pengujian
Uji semua skenario: Terapkan kasus uji positif dan negatif.
Verifikasi penanganan callback: Pastikan sistem Anda memproses callback keberhasilan dan kegagalan dengan benar.
Periksa idempotensi: Verifikasi bahwa permintaan duplikat ditangani dengan benar.
Uji skenario timeout: Simulasikan timeout untuk memastikan sistem Anda menanganinya dengan baik.
Validasi pesan kesalahan: Pastikan pesan kesalahan mudah dipahami dan dapat ditindaklanjuti oleh pengguna.
Uji pemeriksaan status: Verifikasi bahwa mekanisme pemeriksaan status Anda berfungsi sebagai fallback.
Dengan menguji secara menyeluruh menggunakan skenario-skenario ini, Anda akan memastikan integrasi Pembayaran Tagihan Anda memberikan pengalaman yang lancar bagi pengguna Anda sambil menangani kasus-kasus khusus dan kondisi kesalahan dengan benar.