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.