DINKES BATANG

Overview Bridging System BPJS Pcare Versi 3.0 Dev

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
  1. X-cons-id , merupakan kode consumer (pengakses web-service). Kode ini akan diberikan oleh BPJS Kesehatan.
  2. X-timestamp , merupakan waktu yang akan di-generate oleh client saat ingin memanggil setiap service. Format waktu ini ditulis dengan format unix-based-time (berisi angka, tidak dalam format tanggal sebagaimana mestinya). Format waktu menggunakan Coordinated Universal Time ( UTC), dalam penggunaannya untuk mendapatkan timestamp, rumus yang digunakan adalah (local time in UTC timezone in seconds) - (1970-01-01 in seconds). contoh penggunaan dalam php yaitu :
    date_default_timezone_set('UTC'); 
    $tStamp = strval(time()-strtotime('1970-01-01 00:00:00'));
  3. X-signature, merupakan hasil dari pembuatan signature yang dibuat oleh client. Signature yang digunakan menggunakan pola HMAC-SHA256.
  4. X-Authorization adalah kombinasi dari username dan password dari aplikasi yang akan di bridging (PCare), dan untuk menghasilkan enkripsi dari authorization dapat menggunakan pola Base64 Basic.
    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:

  • Consumer ID
  • Consumer Secret

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)

TOOLS TESTING WEB SERVICE

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

SIGNATURE

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;

EXCEPTION HANDLING

  1. Internal Server Error

    Response

    {
      "response": null,
      "metaData": {
        "message": "INTERNAL_SERVER_ERROR, cause : I/O Error: Connection reset by peer: socket write error",
        "code": 500
      }
    }
  2. UNAUTHORIZED (Username/Password salah)

    Response

    {
      "response": null,
      "metaData": {
        "message": "UNAUTHORIZED",
        "code": 401
      }
    }
  3. Request Time Out

    Response

    {
      "response": null,
      "metaData": {
        "message": "REQUEST_TIMEOUT",
        "code": 408
      }
    }
  4. Failed Depedency (Primary key yang dimasukkan tidak sesuai dengan yang ada di sistem)

    Response

    {
      "response": null,
      "metaData": {
        "message": "FAILED_DEPENDENCY",
        "code": 424
      }
    }
  5. PRECONDITION_FAILED (Ada field yang harus sesuai dengan kondisi)

    Response

    {
      "response": [
        {
          "field": "noKunj",
          "message": "No Kunjungan tidak boleh kosong"
        }
      ],
      "metaData": {
        "message": "PRECONDITION_FAILED",
        "code": 412
      }
    }
  6. NO CONTENT (data tidak ditemukan)

    Response

    {
      "response": null,
      "metaData": {
        "message": "NO_CONTENT",
        "code": 204
      }
    }