<?php
$dataid = "1234"; //Ganti dengan consumerID dari BPJS
$secretKey = "1234"; //Ganti dengan consumerSecret dari BPJS
$localIP = "192.168.0.1";
$url = "http://".$localIP."/devWSLokalRest/SEP/sep"; //Lihat katalog, jangan sertakan port
$port = 8081; //port url
date_default_timezone_set('UTC');
$tStamp = strval(time() - strtotime('1970-01-01 00:00:00'));
$signature = hash_hmac('sha256', $dataid . "&" . $tStamp, $secretKey, true);
$encodedSignature = base64_encode($signature);
$urlencodedSignature = urlencode($encodedSignature);
echo "X-cons-id: " . $dataid . "<br>";
echo "X-timestamp:" . $tStamp . "<br>";
echo "X-signature: " . $encodedSignature . "<br>";
function post_request($url, $port, $dataid, $tStamp, $encodedSignature, $data, $referer = '')
{
//-Convert the data array into URL Parameters like a=b&foo=bar etc.
//$data = http_build_query($data);
// parse the given URL
$url = parse_url($url);
if ($url['scheme'] != 'http') {
die('Error: Only HTTP request are supported !');
}
// extract host and path:
$host = $url['host'];
$path = $url['path'];
// open a socket connection on port 80 - timeout: 50 sec
$fp = fsockopen($host, $port, $errno, $errstr, 50);
if ($fp) {
// send the request headers:
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
if ($referer != '')
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "x-cons-id: " . $dataid . "\r\n");
fputs($fp, "x-timestamp: " . $tStamp . "\r\n");
fputs($fp, "x-signature: " . $encodedSignature . "\r\n");
fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: " . strlen($data) . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
$result = '';
while (!feof($fp)) {
// receive the results of the request, 128 char
$result .= fgets($fp, 128);
}
} else {
return array(
'status' => 'err',
'error' => "$errstr ($errno)"
);
}
// close the socket connection:
fclose($fp);
// split the result header from the content
$result = explode("\r\n\r\n", $result, 2);
$header = isset($result[0]) ? $result[0] : '';
$content = isset($result[1]) ? $result[1] : '';
// return as structured array:
return array(
'status' => 'ok',
'header' => $header,
'content' => $content
);
}
$databpjs = "<request>
<data>
<t_sep>
<noKartu>0001134632924</noKartu>
<tglSep>2016-08-4 11:05:03</tglSep>
<tglRujukan>2016-08-2 11:05:03</tglRujukan>
<noRujukan>12345</noRujukan>
<ppkRujukan>0142U037</ppkRujukan>
<ppkPelayanan>3302191</ppkPelayanan>
<jnsPelayanan>2</jnsPelayanan>
<catatan>dari WS</catatan>
<diagAwal>K04.1</diagAwal>
<poliTujuan>GIG</poliTujuan>
<klsRawat>3</klsRawat>
<lakaLantas>2</lakaLantas>
<user>bpjs</user>
<noMr>1234</noMr>
</t_sep>
</data>
</request>";
$data = array(
'Data' => $databpjs
);
$result = post_request($url, $port, $dataid, $tStamp, $encodedSignature, $databpjs, $referer = '');
if ($result['status'] == 'ok') {
// Print headers
echo $result['header'];
echo '<hr />';
//mengubah "re d sponse" menjadi "response"
$resultstr = str_replace("re d sponse", "response", trim(preg_replace('/\s\s+/', ' ', $result['content'])));
// print the result of the whole request:
echo "<pre>";
echo $resultstr;
echo "</pre>";
} else {
echo 'A error occured: ' . $result['error'];
}
?>
30 thoughts on “Contoh bridging BPJS dengan PHP (Registrasi SEP)”
Comments are closed.
mohon maaf kang.
minta screet id cons-id untuk tester saja, keperluan belajar.
diemailkan ya kang munazarbunda@gmail.com
oh, saya lupa, soanya saya cuman bantu teman selesaikan masalah errornya. Klo tidak salah sid nya 1000 dan cid nya 6789. atau kalau tidak malah kebalikannya
mas, sy coba yg insert SEP gagal ya, sy sdh dapat consID dan secretID dari BPJS.
url yg dari katalog SEP pake http://“.$localIP.”/WSLokalRest/SEP/insert (beda dgn yg di artikel ini)
hanya ada teks “A error occur : ()” saja
ada kesalahan dimana ya? kalo boleh minta bantuan 🙂
wah sya tidak bisa jawab kalau yang diinfolan cuman errornya saja. coba infokan kodenya ke email saya contact[at]latiful.hayat.web.id (ganti [at] dengan @)
coba infokan kodenya ke email saya contact[at]latiful.hayat.web.id (ganti [at] dengan @)
assalaamu alaikum, sy habis tes kode nya mas, tp masih eror.
kodenya sy kirim di email.
makasih
Sudah saya jawab, silahkan cek email
assalau alaikum mas, melanjutkan yg sebelumnya. sy coba pake no.kartu BPJS dari data di RS, tapi jawaban errornya selalu : {“metadata”:{“code”:”800″,”message”:”No.Kartu Tidak Ada”},”response”:null} 0
sy cobanya di “http://dvlp.bpjs-kesehatan.go.id/devWsLokalRest/SEP/insert”, apakah no.kartu bpjs pasien RS (yg sebenarnya valid) di server dvlp tsb tidak ada ? bagaimana cara sy mencoba pake no.kartu yg bisa dikenali server dvlp tsb?
mohon bantuannya ya mas, terima kasih
sudah coba cek di request cek kepesertaan (cek peserta berdasarkan nik)? kalau di cek bagian peserta ada ya seharusnya ada di dvlp. Atau coba kirim kodenya ke alamat email saya: contact [at] latiful.hayat.web.id
baik mas, sudah sy email ya. makasih sebelumnya
Oh iya, error yg tadi ”No.Kartu Tidak Ada”, hanya terjadi di server onlien (dvlp), tapi kalo di local SEP, tetap error tapi malah tidak ada keterangan errorny apa… (spt pertanyaan sy yg tgl 19 yg lalu)
Kalau eklaim bpjs gmana bang source code nya…
eklaim bpjs setahu saya mengikuti registrasi SEP
udah berhasil mas… 😀
blog anda sangat membantu.. thankyou…
alhamdulillah…
alhamdulillah sdh berhasil buat sep dgn pedoman tulisan di atas.
hanya sy mau tanyakan bgmn kalo data variabelnya di input dari form?
maksudnya untuk data data seperti: noKartu, tglSep, tglRujukan, dll
contoh penggunaan form ada di tulisan ini: http://latiful.hayat.web.id/contoh-bridging-bpjs-dengan-php-contoh-formulir-request-dan-response/
Mohon maaf pak.. Minta tolong saya dikirimkan cons n secret id untuk keperluan tester…
komarozzaman@gmail.com
Saya tidak punya wewenang untuk memberikan informasi cons id dan secret id. Karena yang saya punya adalah id untuk rumah sakit yang saya bantu proses bridgingnya. Silahkan request ke BPJS, BPJS pasti memberikan kepada pegawai bagian IT Rumah Sakit maupun kepada kru bridging.
mas tanya saya coba, selalu muncul pesan “metadata”:{“code”:”401″,”message”:”Expired Service”},”response”:null}
entah itu pencarian peserta pake no bpjs,nik atau lainnya sama aja
kenapa yaa mas, saya id dan keynya baru dapat masih berlaku ampe februari ini
bisa jadi jam komputer tidak sama dengan jam server, atau kode (id) salah ketik yang menjadi kesalahan biasanya: I l 1 dan 0 O karena hampir sama
$localIP tu ip nya komputer kita ? atau ip komputer yang kita tuju mas ?
saya sudah punya cons-id dan sercret-id utk bpjs nya…
IP komputer yang dituju
script diatas dipasang atau dimasukkan kemana?
itu hanya contoh, silahkan dimasukkan ke Sistem informasi rumah sakit, lebih jelasnya silahkan tanya admin sistem informasi. Untuk di masukkan ke file mana, itu berbeda-beda tergantung dari programer yang telah buat sistem yg telah ada
mohon pencerahan utk CREATE SEP di bridging inasis 2.1 pak…suwun…
saya belum pernah coba inasis 2.1 pak, jadi maaf saya belum bisa bantu pencerahan
mas saya dah coba tapi selalu tampil seperti ini :
84 {“metadata”:{“code”:”201″,”message”:”Unexpected character encountered while parsing value: <. Line 1, position 1."},"response":null} 0
kira2 knp ya?bisa bantu mas
ada karakter yang salah mas, coba cek kembali
Selamat siang mas latiful hayat,
mau tanya kenapa, kenapa punya saya muncul pesan {“response”:null,”metaData”:{“message”:”UNAUTHORIZED – cause : consID expired”,”code”:401}}
apa mungkin dikarenakan consID yg diberikan pada BPJS expired atau ada faktor lain y mas,, mogon bantuannya.
Terima Kasih :d