Protokol Bandung Version 1.0 Documentation 24 Maret 2010 Protokol Bandung Documentation 1
Daftar Isi Daftar Isi... 2 Skenario... 3 XML RPC... 3 Target URL... 3 Lowercase Case Sensitive... 4 Synchronous & Asynchronous... 4 Pengulangan Transaksi... 4 IP Address... 4 Signature... 4 Function... 6 1. Topup... 6 1.1 Request... 6 1.2.Response... 6 2 Cek Status/Inquiry... 7 2.1 Request... 7 2.2.Response... 7 3 Balance... 8 3.1 Request... 8 3.2.Response... 8 4 Product... 9 4.1 Request... 9 4.2.Response... 9 5 Echo... 9 5.1 Request... 9 5.2.Response... 9 6 Report... 10 6.1 Request... 10 6.2.Response... 10 Appendix... 11 A.1 Status... 11 A.2 Operator... 12 Protokol Bandung Documentation 2
Skenario XML RPC Spesifikasi ini menggunakan standar XML-RPC. Informasi lebih lanjut mengenai XML-RPC, bisa dipelajari di http://www.xmlrpc.com/spec Target URL URL target menggunakan protokol HTTP atau HTTPS dengan format umum: http://hostname:port/path/to/xmlrpc atau https://hostname:port/path/to/xmlrpc Contoh: HTTP Menggunakan port spesifik 8080 http://server.example.org:8080/xmlrpc http://192.168.1.1:8080/xmlrpc Menggunakan port default 80 http://server.example.org/xmlrpc http://192.168.1.1/xmlrpc HTTPS Menggunakan port spesifik 8080 https://server.example.org:8080/xmlrpc https://192.168.1.1:8080/xmlrpc Menggunakan port default 443 https://server.example.org/xmlrpc https://192.168.1.1/xmlrpc Protokol Bandung Documentation 3
Lowercase Case Sensitive Semua function, key (parameter) dan value yang dikirim harus dalam bentuk lowercase sebab beberapa system memproses string secara case sensitive. Contoh: SALAH Topup TOPUP BENAR topup Synchronous & Asynchronous Server dapat memproses topup secara synchronous (proses dahulu,baru merespon) maupun asynchronous (respon dahulu, baru diproses), tergantung implementasi masing-masing. Jika proses terjadi secara synchronous, server harus mengirim status hasil transaksi yang sudah diproses beserta serial number transaksi dari operator (untuk transaksi sukses). Jika proses terjadi secara asynchronous, server mengirim status berupa 100 (pending), 101 (pending/antrian/queueing), atau 300 (approve) tanpa serial number transaksi dari operator. Pihak client harus mengirim inquiry untuk melakukan pengecekan status transaksi tersebut dengan interval 5 detik tiap inquiry, maksimum 2x inquiry. Jika setelah inquiry yang kedua masih belum ada perubahan status menjadi 000 (SUKSES) atau GAGAL (2xx), maka status transaksi tersebut akan dikirim oleh server kepada pihak client melalui function report. Pengulangan Transaksi Pengulangan transaksi per userid diperbolehkan selama reqid yang dikirimkan juga berbeda. IP Address IP Address client atau pengirim bisa menggunakan IP statik, maupun IP dinamik tergantung security rule dari pihak server. Signature Password atau PIN tidak dikirim, melainkan menggunakan signature yang di-generate menggunakan algoritma hash MD5. signature = md5(pin+reqid) Contoh: Jika PIN adalah 123456 dan reqid adalah 100 maka signaturenya adalah: signature = md5( 123456100 ) = 46dd4ef947c3224427e3e9d4a0bb5ea1 Protokol Bandung Documentation 4
Protokol Bandung Documentation 5
Function 1. Topup Function topup digunakan untuk transaksi isi pulsa. Function ini dipanggil oleh client, dieksekusi oleh pihak server. MethodName: topup 1.1 Request reqid String[20] ID transaksi dari server pengirim productid String[10] Kode produk msisdn String[20] Nomor handphone userid String[32] UserID pengirim signature String[32] MD5(pin+reqid) trxtime ISO8601 Waktu transaksi dikirim dalam WIB (GMT +7) 1.2.Response reqid String[20] ID transaksi dari server pengirim respid String[20] ID transaksi dari server penerima status String[3] Status transaksi 00x: Sukses 1xx:Pending 2xx:Gagal 300: Approve Lihat tabel A.1 Status resptime ISO8601 Waktu transaksi diproses sn String Serial number balance String[10] Saldo price String[10] Harga message String[255] Pesan hasil proses transaksi info String[255] Info tambahan Protokol Bandung Documentation 6
2 Cek Status/Inquiry Function status digunakan untuk cek status transaksi atau inquiry dari pihak client ke server. MethodName: status 2.1 Request reqid String[20] ID transaksi dari server pengirim userid String[32] UserID pengirim signature String[32] MD5(pin+reqid) 2.2.Response reqid String[20] ID transaksi server pengirim respid String[20] ID transaksi dari server penerima status String[3] Status transaksi 00x: Sukses 1xx:Pending 2xx:Gagal 300: Approve Lihat tabel A.1 Status resptime ISO8601 Waktu transaksi diproses sn String Serial number balance String[10] Saldo price String[10] Harga message String[255] Pesan hasil proses transaksi info String[255] Info tambahan Protokol Bandung Documentation 7
3 Balance Function balance digunakan untuk mendapatkan saldo terakhir atau sisa deposit. MethodName: balance 3.1 Request reqid String[20] ID transaksi dari server pengirim userid String[32] UserID pengirim signature String[32] MD5(pin+reqid) 3.2.Response reqid String[20] ID transaksi server pengirim respid String[20] ID transaksi dari server penerima status String[3] Status transaksi 00x: Sukses 1xx:Pending 2xx:Gagal 300: Approve Lihat tabel A.1 Status resptime ISO8601 Waktu transaksi diproses balance String[10] Saldo message String[255] Pesan hasil proses transaksi info String[255] Info tambahan Protokol Bandung Documentation 8
4 Product Function product digunakan untuk cek status produk dan harga per operator. MethodName: product 4.1 Request reqid String[20] ID transaksi dari server pengirim userid String[32] UserID pengirim signature String[32] MD5(pin+reqid) operator String Nama operator 4.2.Response reqid String[20] ID transaksi server pengirim respid String[20] ID transaksi dari server penerima status String[3] Status request Lihat tabel A.1 Status resptime ISO8601 Waktu transaksi diproses products array of struct { product: string Array yang berisi item dalam tipe struct. Tiap item memiliki elemen product dan price. price: string } info String[255] Info tambahan 5 Echo Function echo digunakan untuk cek apakah server sedang beroperasi. Fungsi ini hanya mengirim satu parameter message dalam tipe string. Server merespon fungsi echo dengan mengirim kembali pesan teks dari pengirim. MethodName: echo 5.1 Request message String Pesan teks pengirim 5.2.Response message String Pesan teks pengirim Protokol Bandung Documentation 9
6 Report Function report dikirim oleh server kepada client (pengirim transaksi) berisi informasi pengiriman status topup terakhir. Pihak client merespon dengan string status yang hanya berfungsi sebagai ACK, tidak dicek/diproses oleh server. Fungsi ini bersifat opsional, sebagai alternatif jika proses di server memakan waktu lebih lama maka client tidak perlu mengirim inquiry. Mirip dengan fungsi reversal, bedanya pada status yang dikirim bisa sukses atau gagal. Fungsi ini membutuhkan informasi host atau URL target yang disediakan oleh client. MethodName: report 6.1 Request reqid String[20] ID transaksi server pengirim respid String[20] ID transaksi dari server penerima status String[3] Status transaksi 00x: Sukses 1xx:Pending 2xx:Gagal 300: Approve Lihat tabel A.1 Status resptime ISO8601 Waktu transaksi diproses sn String Serial number balance String[10] Saldo price String[10] Harga message String[255] Pesan hasil proses transaksi info String[255] Info tambahan 6.2.Response status String ACK Protokol Bandung Documentation 10
Appendix A.1 Status Status Description User Action 000 Sukses, SN Transaksi berhasil, serial number tercantum 001 Sukses, No SN Cek inquiry Transaksi berhasil, serial number belum tersedia 100 Pending timeout Tunggu report Transaksi sudah diterima, menunggu diproses 101 Pending antrian Cek inquiry Transaksi sudah diterima, menunggu antrian 200 Gagal produk kosong Transaksi gagal karena produk kosong Cek web report atau hubungi customer service 201 Gagal - gangguan operator Transaksi gagal karena problem di operator 202 Gagal - gangguan server Transaksi gagal karena problem di server 203 Gagal - saldo habis Transaksi gagal karena saldo tidak cukup 204 Gagal - nomor tujuan salah Transaksi gagal karena MSISDN salah/invalid 205 Gagal - kode produk salah Transaksi gagal karena kode produk salah/invalid 206 Gagal - salah format Transaksi gagal karena format MSISDN salah 207 Gagal - otentikasi Transaksi gagal karena userid/pin salah 208 Gagal - duplikasi Transaksi gagal, ditolak karena sudah pernah dikirim/diulang 209 Gagal unknown/belum didefinisikan Transaksi gagal, sebab belum diketahui, cek di web report atau hubungi customer service 210 Gagal - cross region Transaksi gagal, ditolak karena transaksi lintas region 211 Gagal invalid signature Transaksi gagal, signature salah/invalid 212 Gagal IP diblokir Transaksi gagal, IP pengirim diblokir 213 Gagal user diblokir Transaksi gagal karena userid pengirim diblokir oleh sistem 214 Gagal request expired Transaksi gagal karena request dari pengirim expired 300 Approve Transaksi sudah diterima, belum diproses, saldo sudah dipotong Hubungi customer service Alihkan transaksi Cek web report atau hubungi customer service Cek web report atau hubungi customer service Koreksi MSISDN dan kode produk Koreksi kode produk atau hubungi customer service Koreksi MSISDN dan kode produk Koreksi userid atau pin Cek inquiry Cek web report atau hubungi customer service Koreksi PIN Cek IP, Hubungi customer service Hubungi customer service Koreksi setting date/time pengirim Gagalkan Cek inquiry Protokol Bandung Documentation 11
A.2 Operator Value Product Description telkomsel Simpati, As P.T. Telkomsel indosat Mentari, IM3, StarOne P.T. Indosat xl XL P.T. Excel Axiata telkom Flexi P.T. Telkom/Flexi esia Esia P.T. Bakrie Telecom/Esia fren Fren P.T. Mobile-8 three Three P.T. Hutchison Indonesia/Three axis Axis P.T. Axis ceria Ceria P.T. Sampoerna Telecom/ceria smart Smart P.T. Smart Telecom Protokol Bandung Documentation 12