Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 1 API TigaPutri TigaPutri mendukung transaksi menggunakan HTTP GET, XML POST (XML-RPC), dan JSON. Format- format transaksinya sebagai berikut: Format HTTP GET Untuk melakukan transaksi Host to Host ke TigaPutri menggunakan IP (HTTP GET), format yang digunakan adalah sebagai berikut: ?kodereseller=[username]&produk=[kodeproduk]&msisdn=[tujuan]&reffid=[trxid]&sig nature=[signature] Selain itu, ada juga beberapa parameter opsional yang dapat digunakan untuk melakukan transaksi apabila dibutuhkan. Untuk urutan penulisan tinggal ditambahkan di format sebelumnya. Parameter- parameter tersebut antara lain: counter=[counter] qty=[qty] hpenduser=[hpenduser] Keterangan:  username : Kode user (kode reseller) yang terdaftar di supplier  produk : kode produk supplier yang akan dibeli  tujuan : nomor tujuan  trxid : kode transaksi penembak  counter : transaksi ke-n  qty : jumlah pembelian  hpenduser : nomor hp user, jika transaksi sukses maka akan mengirimkan notifikasi ke nomor ini  signature : kode otentikasi untuk bisa melakukan transaksi. Contoh 1: ?kodereseller=RS00001&produk=SA10&msisdn=0812345667891&reffid=10643&signature=f 5scJiovgSXwBrlVaAdgvJaXinNAzZf6LJZITNXfO4A Contoh 2 (dengan semua parameter opsional): ?kodereseller=RS00001&produk=SA10&msisdn=0812345667891&reffid=10643&qty=1&count er=2&hpenduser=08567891234&signature=f5scJiovgSXwBrlVaAdgvJaXinNAzZf6LJZITNXfO4 A Berikut format request HTTP GET untuk non transaksi: ?kodereseller=[kodereseller]&pesan=[perintah]&time=[jam]&signature=[signature] Contoh: ?kodereseller=RS00001&pesan=sal&time=194358&signature=b92G585pyEu8TMAZyZzTCHaS5 NuanHXL9fCzQN5yMeE Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 2 Format XML POST (XML-RPC) Untuk transaksi menggunakan protokol HTTP POST, format yang digunakan adalah XML-RPC dengan memanggil method requestTopUp. Alur transaksinya adalah sebagai berikut: 1. Reseller mengirimkan requestTopUp ke TigaPutri untuk melakukan transaksi. 2. Jika dalam waktu 60 detik sudah mendapatkan status sukses/gagal, maka TigaPutri akan langsung mengirimkan balasan XML-RPC sukses/gagal. Namun, jika selama 60 detik belum mendapat status sukses/gagal, maka balasan XML-RPC yang dikirim adalah status pending, kemudian setelah mendapat status sukses/gagal TigaPutri akan mengirimkan balasan status sukses/gagal tersebut ke url refersal milik reseller yang telah terdaftar di TigaPutri 3. Apabila reseller mendapat response pending dan mengirim ulang transaksi dengan trxid yang sama, maka akan terdeteksi transaksi double dan TigaPutri akan mengirimkan response status terakhir transaksi tersebut. Detail perintah yang dikirim adalah sebagai berikut: Parameter Tipe data Deskripsi KODERESELLER STRING Kode user (kode reseller) yang terdaftar di supplier PRODUK STRING kode produk supplier yang akan dibeli MSISDN STRING Nomor tujuan yang akan diisi TIME STRING Waktu transaksi dengan format : HHmmss TRXID STRING Kode transaksi penembak SIGNATURE STRING Otentikasi untuk bisa melakukan transaksi. *) PIN STRING Pin reseller *) PASSWORD STRING Password reseller *) QTY INT Jumlah qty pembelian (optional) Catatan: *) Jika melakukan request menggunakan SIGNATURE, maka parameter PIN dan PASSWORD boleh tidak ditulis (tidak diikutkan) begitu juga sebaliknya, jika request menggunakan PIN dan PASSWORD maka parameter SIGNATURE boleh tidak ditulis (tidak diikutkan). (optional) = boleh tidak ditulis Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 3 Contoh format request XML-RPC menggunakan signature: requestTopUp KODERESELLER RS00001 PRODUK SA10 MSISDN 081234566789 TIME 233025 TRXID 10643 SIGNATURE f5scJiovgSXwBrlVaAdgvJaXinNAzZf6LJZITNXfO4A Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 4 Contoh format request XML-RPC menggunakan signature beserta optional parameter: requestTopUp KODERESELLER RS00001 PRODUK SA10 MSISDN 081234566789 TIME 233025 TRXID 10643 QTY 2 SIGNATURE f5scJiovgSXwBrlVaAdgvJaXinNAzZf6LJZITNXfO4A Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 5 Contoh format request XML-RPC menggunakan pin dan password tanpa signature: requestTopUp KODERESELLER RS00001 PRODUK SA10 MSISDN 081234566789 TIME 233025 TRXID 10643 PIN 7654 PASSWORD pwd12345 Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 6 Contoh balasan requestTopUp: Parameter Data Type Deskripsi RESULT INT 0 : Sukses 1 : Gagal 2 : Pending/Proses MSG STRING Isi pesan response MSISDN STRING Nomor tujuan diisi SN STRING SN transaksi TRXID STRING Kode transaksi supplier PARTNER_TRXID STRING Kode transaksi penembak RESULT 0 MSG RC=10643 TrxID=9170858 SA10.081234566789 Sukses SN:41003324264002 MSISDN 081234566789 SN 41003324264002 TrxID 9170858 PARTNER_TRXID 10643 Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 7 Pembuatan Signature Untuk request transaksi menggunakan HTTP GET dan XML POST (XML-RPC) pembuatan signature- nya sama yakni sebagai berikut: tujuan = reversed [tujuan] auth = reversed {[pin] + [password]} jam = now() format = HHmmss preSign = TigaPutri256,[username,trxid,kodeproduk,tujuan,auth] (* isi preSign ditulis tanpa spasi) [signature] = kalkulasikan hash dari preSign dengan SHA256 selanjutnya di encode menjadi Base64 string Trim/hilangkan = di akhir [signature] Ubah karakter + menjadi X dari [signature] Ubah karakter / menjadi Z dari [signature] Contoh: username = RS00001 pin = 7654 password = pwd12345 kode produk = SA10 msisdn = 081234566789 trxid server = 10643 preSign = TigaPutri256,[RS00001|10643|SA10|987665432180|54321dwp4567] [signature] = f5scJiovgSXwBrlVaAdgvJaXinNAzZf6LJZITNXfO4A Contoh pembuatan signature menggunakan php: Contoh pembuatan signature menggunakan Go-lang bisa dicoba di sini: https://play.golang.org/p/_h86N3zlKkw Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 8 Request XML-RPC Non-Transaksi ke TigaPutri Untuk melakukan request non-transaksi ke Server TigaPutri menggunakan XML-RPC formatnya sebagai berikut: requestCmd KODERESELLER [username] CMD [pesan] TIME [jam] SIGNATURE [signature] Keterangan: • MethodName diisi requestCmd • KODERESELLER : Kode member/kode reseller • CMD : Perintah request non-transaksi sesuai halaman Format Request di TigaPutri • TIME: Jam dengan format HHmmss • SIGNATURE : Signature Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 9 Contoh format request cek saldo menggunakan XML-RPC requestCmd KODERESELLER RS00001 cmd sal TIME 113059 SIGNATURE LaJp9pAnWYEyXgGrjMMNUBAh9XrQ1aXZMp9bNvR2FkY Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 10 Untuk langkah-langkah pembuatan signaturnya akan dijelaskan di bawah ini. Data-data yang dibutuhkan dalam pembuatan signature adalah sebagai berikut: • username : Kode member atau kode reseller (gunakan huruf KAPITAL) • pin : Pin reseller • password : Password reseller • jam : jam dengan format HHmmss Rumus: auth = reversed{[pin] + [password]} preSign = TigaPutri256,[username,auth,jam] (* isi preSign ditulis tanpa spasi) [signature] = kalkulasikan hash dari preSign dengan SHA256 selanjutnya di encode menjadi Base64 string Trim/hilangkan = di akhir [signature] Ubah karakter + menjadi X dari [signature] Ubah karakter / menjadi Z dari [signature] Contoh: username = RS00001 pin = 7654 password = pwd12345 jam = 113059 preSign = TigaPutri256,[RS00001|54321dwp4567|113059] [signature] = LaJp9pAnWYEyXgGrjMMNUBAh9XrQ1aXZMp9bNvR2FkY Contoh pembuatan signature menggunakan php: Contoh pembuatan signature menggunakan Go-lang bisa dicoba di sini: https://play.golang.org/p/M_bNklQ22Sc Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 11 Format JSON (HTTP-POST) Untuk melakukan transaksi Host to Host ke TigaPutri menggunakan format JSON, katakunci nya sebagai berikut: • username : Kode user (kode reseller) yang terdaftar di supplier (Menggunakan huruf KAPITAL) • produk : kode produk supplier yang akan dibeli (Menggunakan huruf KAPITAL) • tujuan : nomor tujuan • trxid : kode transaksi penembak • time : jam saat ini dengan format HHmmss • signature : kode otentikasi untuk bisa melakukan transaksi. • Password :password reseller • pin :pin reseller CATATAN: signature dan (pin + password) adalah saling menggantikan, jika format request menggunakan signature, maka tidak perlu menyertakan pin dan password di format request tersebut, begitupun sebaliknya. Katakunci tambahan (opsional). Salah satu atau beberapa katakunci berikut juga bisa disertakan di format request jika dibutuhkan: • counter : transaksi ke-n • qty : jumlah pembelian • hpenduser : nomor hp user, jika transaksi sukses maka akan mengirimkan notifikasi ke nomor ini Penulisan formatnya: { "req":"topup", "kodereseller":"[username]", "produk":"[kodeproduk]", "msisdn":"[tujuan]", "reffid":"[trxid]", "counter":[counter], "qty":[qty], "hpenduser":"[hpenduser]", "time":"[jam]", "signature":"[signature]" } Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 12 Contoh jika kita mengirim format request: { "req": "topup", "kodereseller":"RS00001", "produk":"SA10", "msisdn":"08123456789", "reffid":"10643", "counter":1, "qty":1, "hpenduser":"0823456789", "time":"235945", "signature":"mdcGSXybQZy7uxOgjbx_uQ66tteBobr3rv0e4EuYobU " } Maka server akan membalas: { "resp": "topup", "status_code": "0", "status": "Sukses", "trxid": "113", "msisdn": "08123456789", "produk": "SA10", "harga": "10.500", "reffid": "10643", "counter": "2", "qty": "1", "sn": "341138123456789", "saldo_awal": "5.958.519", "saldo": "5.948.019", "bon": "525.000", "bonus": "0", "poin": "8", "msg": "Trx Unit RC#10643 Trxid=113 SA10.08123456789 SUKSES. S/N: 341138123456789" } Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 13 Jika produknya adalah produk unit, maka server akan membalas sebagai berikut: { "resp": "topup", "status_code": "0", "status": "Sukses", "trxid": "113", "msisdn": "08123456789", "produk": "SA10", "harga": "10.500", "reffid": "10643", "counter": "2", "qty": "1", "sn": "341138123456789", "stok": "2", "bon": "525.000", "bonus": "0", "poin": "10", "msg": "Trx Unit RC#10643 Trxid=113 SA10.08123456789 SUKSES. S/N: 361158123456789" } Keterangan status_code: 0 = Sukses 1 = Gagal 2 = Pending Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 14 Pembuatan Signature Transaksi Untuk request transaksi menggunakan JSON pembuatan signature-nya sebagai berikut: tujuan = reversed [tujuan] auth = reversed {[pin] + [password]} jam = now() format = HHmmss preSign = TP256[username|trxid|kodeproduk|tujuan|auth|jam] (* isi preSign ditulis tanpa spasi) [signature] = kalkulasikan hash dari preSign dengan SHA256 selanjutnya di encode menjadi Base64 string Trim/hilangkan = di akhir [signature] Ubah karakter + menjadi _ dari [signature] Ubah karakter / menjadi - dari [signature] * warna merah menandakan perbedaan dengan signature transaksi HTTP GET dan XML-RPC Contoh: username = RS00001 pin = 7654 password = pwd12345 kode produk = SA10 msisdn = 081234566789 trxid server = 10643 jam = 235945 preSign = TP256[RS00001|10643|SA10|987665432180|54321dwp4567|235945] [signature] = mdcGSXybQZy7uxOgjbx_uQ66tteBobr3rv0e4EuYobU Contoh pembuatan signature dengan PHP: Contoh pembuatan signature menggunakan golang: https://play.golang.org/p/3nixc-yk5iM Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 15 Format Non Transaksi JSON Untuk mengirim request non-transaksi ke TigaPutri menggunakan format JSON, katakunci nya sebagai berikut: • username : Kode user (kode reseller) yang terdaftar di supplier (Menggunakan huruf KAPITAL) • isipesan : Isi pesan request nontransaksi • time : jam saat ini dengan format HHmmss (Juga digunakan untuk membuat signature) • signature : kode otentikasi untuk bisa melakukan transaksi. • Password :password reseller • pin :pin reseller CATATAN: signature dan (pin + password) adalah saling menggantikan, jika format request menggunakan signature, maka tidak perlu menyertakan pin dan password di format request tersebut, begitupun sebaliknya. Penulisan formatnya: { "req": "cmd", "kodereseller":"RS00001", "perintah":"SAL", "time":"233050", "signature":"LaJp9pAnWYEyXgGrjMMNUBAh9XrQ1aXZMp9bNvR2FkY" } Contoh balasannya: { "resp": "cmd", "status_code": "0", "status": "Sukses", "msg": "Yth.Owner Saldo Rp.5.958.519, Poin: 10" } Untuk pembuatan signaturenya sama dengan pembuatan signature non-transaksi format request HTTP GET dan XML-RPC. Versi dokumen: 1.6 Tanggal: 2021-02-11 Page 16 Inbox API Inbox api berfungsi untuk menampung pesan dari aplikasi pihak ke tiga yang ingin mengirim pesan ke aplikasi TigaPutri tanpa melalui center. Pertama, aplikasi pihak ketiga menginsert data ke inbox api, kemudian TigaPutri akan memproses pesan tersebut dan memindahkannya ke inbox secara otomatis. Saat ini, inbox api hanya berfungsi untuk menampung pesan balasan transaksi dari supplier saja. Berikut ini beberapa ketentuan pengisian kolom di tabel Inbox Api: 1. Kolom: tipe_pengirim Pilihan tipe pengirim yang tersedia sebagai berikut: • Untuk pesan dari XMPP, diisi: X • Untuk pesan dari IP, diisi: I • Untuk pesan dari SMS, diisi: S 2. Kolom: method Kolom method dikhususkan untuk pesan dari ip dengan method: GET,POST,XML-RPC. akan tetapi pesan dari selain IP juga bisa diisi. Pilihannya sebagai berikut: • POST (Untuk XML Post) • GET • RPC (Untuk XML-RPC) • SMS • XMPP 3. Kolom: status diisi: 2 4. Kolom: jenis_pesan diisi: 0 Contoh listing center IP untuk menerima report status transaksi dari supplier menggunakan PHP: "tigaputri"); $conn = sqlsrv_connect( $serverName, $connectionInfo); // Buka koneksi ke sql server if(!$conn) { echo "Connection could not be established.
"; die( print_r( sqlsrv_errors(), true)); } // Perintah sql $sql = 'INSERT INTO inbox_api(tgl_entri, pengirim, tipe_pengirim, pesan, status, tgl_status, method, jenis_pesan)'; $sql .= "VALUES(GETDATE(),?,?,?,?,GETDATE(),?,?)"; // Parameter yang akan diinsert sesuai urutan di sql (pengirim, tipe_pengirim, pesan, status, method, jenis_pesan) $insertParameter = array($pengirim, 'I', $content, 2, $method, 0); // Eksekusi sql $stmt = sqlsrv_prepare($conn, $sql, $insertParameter); if(sqlsrv_execute( $stmt ) === false ){ die(print_r(sqlsrv_errors(), true)); } // Tutup koneksi ke sql server sqlsrv_close( $conn ); echo 'OK'; ?> Catatan: Untuk menjalankan listing di atas, pastikan ekstensi php_pdo_sqlsrv_xx_ts dan php_sqlsrv_xx_ts di PHP sudah diaktifkan dan ODBC Driver for Sql Server sudah diinstal. Listing di atas hanya contoh, penggunaan di transaksi yang sesungguhnya sangat tidak disarankan. Kami tidak bertanggung jawab atas kerusakan atau kerugian yang ditimbulkan dari penggunaan listing tersebut.