Secara umum, hampir setiap pemanggilan web-service, harus dicantumkan beberapa variabel yang dibutuhkan untuk menambahkan informasi ataupun untuk proses validasi yang dikirim pada HTTP Header, antara lain:
Nama Header | Contoh Nilai | Keterangan |
---|---|---|
X-cons-id | 743627386 | consumer ID dari BPJS Kesehatan |
X-Timestamp | 234234234 | generated unix-based timestamp |
X-Signature | DogC5UiQurNcigrBdQ3QN5oYvXeUF5E82I/LHUcI9v0= | generated signature dengan pola HMAC-256 |
X-Authorization | Basic Y29iYXBwazpzcHB0aXNwcHRp | generated signature dengan pola Base64 |
date_default_timezone_set('UTC'); $tStamp = strval(time()-strtotime('1970-01-01 00:00:00'));
username : usernamePcare password : passwordPcare kdAplikasi : 095 Authorization : Base64(username:password:kdAplikasi)
Untuk dapat mengakses web-service dari BPJS Kesehatan (service provider), pemanggil web service (service consumer) akan mendapatkan:
Informasi Consumer Secret, hanya disimpan oleh service consumer. Tidak dikirim ke server web-service, hal ini untuk menjaga pengamanan yang lebih baik. Sedangkan kebutuhan Consumer Secret ini adalah untuk men-generate Signature (X-signature). view sourceprint?
consumerID : 1234 consumerSecret : pwd timestamp : 433223232 variabel1 : consumerID & timestamp variabel1 : 1234&433223232
Signature : HMAC-256(value:key) value : variabel1 key : consumerSecret Signature : HMAC-256(variabel1:consumerSecret)
Sebelum mengakses web service melalui aplikasi, bisa digunakan tools tambahan (add-ons). Add-ons ini bisa di dapat dari software tambahan atau extension dari masing-masing browser favorit anda. Berikut link aplikasi Advanced Rest Client
Metode signature yang digunakan adalah menggunakan HMAC-SHA256, dimana paramater saat generate signature dibutuhkan parameter message dan key. Berikut contoh hasil generate HMAC-SHA256
message : aaa key : bbb hasil generate HMAC-SHA256 : 20BKS3PWnD3XU4JbSSZvVlGi2WWnDa8Sv9uHJ+wsELA=
Berikut contoh pembuatan signature dari php programming :
$data = "testtesttest"; $secretKey = "secretkey"; // Computes the signature by hashing the salt with the secret key as the key $signature = hash_hmac('sha256', $data, $secretKey, true); // base64 encode… $encodedSignature = base64_encode($signature); // urlencode… // $encodedSignature = urlencode($encodedSignature); echo "Voila! A signature: " . $encodedSignature;
Response
{ "response": null, "metaData": { "message": "INTERNAL_SERVER_ERROR, cause : I/O Error: Connection reset by peer: socket write error", "code": 500 } }
Response
{ "response": null, "metaData": { "message": "UNAUTHORIZED", "code": 401 } }
Response
{ "response": null, "metaData": { "message": "REQUEST_TIMEOUT", "code": 408 } }
Response
{ "response": null, "metaData": { "message": "FAILED_DEPENDENCY", "code": 424 } }
Response
{ "response": [ { "field": "noKunj", "message": "No Kunjungan tidak boleh kosong" } ], "metaData": { "message": "PRECONDITION_FAILED", "code": 412 } }
Response
{ "response": null, "metaData": { "message": "NO_CONTENT", "code": 204 } }