Dokumentasi

BRIAPI adalah Application Programming Interfaces (APIs) yang dikembangkan oleh BRI untuk memungkinkan integrasi antara aplikasi Anda dan layanan BRI. BRIAPI memungkinkan perusahaan Anda untuk memudahkan pengalaman bertransaksi bagi pelanggan Anda.

Autentikasi

BRIAPI menggunakan OAuth 2 framework sebagai proses otorisasi dalam menentukan hak akses pihak ketiga. Sebelum melakukan proses API request ke produk BRIAPI, Anda harus mendapatkan token dengan cara memanggil endpoint Get Token.

Sebagai tambahan penjagaan keamanan dalam setiap API request, BRIAPI menggunakan signature untuk memastikan bahwa data di dalam setiap request dan response tidak bisa dibajak dan ditiru oleh pengguna yang tidak sah. Signature ini dihasilkan dengan menggunakan algoritma SHA256-HMAC.

Parameter di bawah ini harus disertakan dalam header request di setiap panggilan API (kecuali untuk endpoint Get Token):

Key Value
Authorization Bearer {{TOKEN}}
BRI-Signature {{SIGNATURE}}
BRI-Timestamp {{TIMESTAMP}}

 

 

Token

Endpoint ini digunakan untuk menghasilkan token yang harus disertakan di setiap panggilan API. Letakkan token ini pada atribut Authorization yang ada di Header.

Masa berlaku token ini adalah 50 jam. Anda dapat membuat token berulang kali tanpa membuat token sebelumnya menjadi tidak berlaku, selama belum kadaluarsa (belum lebih dari 50 jam).

HTTP Request

POST https://sandbox.partner.api.bri.co.id/oauth/client_credential/accesstoken?grant_type=client_credentials

Request Header

Key Value Mandatory
Content-Type application/x-www-form-urlencoded Yes

Request Body

Field Data Type Mandatory Description
client_id string Yes Consumer key
client_secret string Yes Consumer secret

Contoh Request

<?php
$url ="https://sandbox.partner.api.bri.co.id/oauth/client_credential/accesstoken?grant_type=client_credentials";
$data = "client_id=&client_secret=";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");  //for updating we have to use PUT method.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$json = json_decode($result, true);
$accesstoken = $json['access_token'];

echo "accesstoken : ".$accesstoken;

Contoh Response

{
    "refresh_token_expires_in": "0",
    "api_product_list": "[inquiry-sandbox]",
    "api_product_list_json": [
        "inquiry-sandbox"
    ],
    "organization_name": "bri",
    "developer.email": "furkorsan.gantheng@xyz.com",
    "token_type": "BearerToken",
    "issued_at": "1557891212144",
    "client_id": "8E20dpP7KtakFkShw5tQHOFf7FFAU01o",
    "access_token": "R04XSUbnm1GXNmDiXx9ysWMpFWBr",
    "application_name": "317d0b2f-6536-4cac-a5f0-3bc9908815b3",
    "scope": "",
    "expires_in": "179999",
    "refresh_count": "0",
    "status": "approved"
}

 

 

 

 

Signature

Signature memastikan data yang dikirimkan adalah asli dan tidak bisa disanggah. Signature dihasilkan oleh pemakai layanan dan diverifikasi oleh penerima layanan.

Signature dibentuk dari payload yang sudah ditentukan, dengan mengimplementasikan algoritma SHA256-HMAC dengan Consumer Secret sebagai kuncinya. Kemudian, akan dilakukan enkripsi dari signature ini dengan menggunakan Base64. Hasil akhirnya akan diletakkan di atribut BRI-Signature di Header.

Payload

Payload consists of path, verb, token, timestamp, and body. Example payload:

path=/v1/inquiry/888801000157508&verb=GET&token=Bearer R04XSUbnm1GXNmDiXx9ysWMpFWBr
&timestamp=2019-01-02T13:14:15.678Z&body=

Details of each element inside the payload are explained below:

1. Path

The value for path is the URL after hostname and port without the query parameters.

Example:

from

https://sandbox.partner.api.bri.co.id/v1/transfer/internal?noreferral=12345

to

/v1/transfer/internal

2. Verb

HTTP method in uppercase, i.e. GET, POST, PUT, PATCH, and DELETE.

3. Token

Token used in Authorization header.

Example:

Bearer R04XSUbnm1GXNmDiXx9ysWMpFWBr

Don't forget to add Bearer before token.

4. Timestamp

Timestamp at the moment you call the API. The timestamp format must follow ISO8601 format (yyyy-MM-ddTHH:mm:ss.SSSZ). It has to be in the zero UTC offset.

Example:

2019-01-02T13:14:15.678Z

Timestamp must be in UTC or GMT +0 timezone.

5. Body

Request body sent for the API call. Example:

&body={"hello":"world"}

If there is no request body, such as on GET call, leave it empty. Example:

&body=

Be aware that you should input exactly the same body you sent. Because different case, space, and line can cause different signature.

 

 

Signature Simulation

Kami telah membuat script untuk Postman collection dan environment untuk menghasilkan signature. Pada collection tersebut, Anda dapat menemukan payload yang sesuai dan signature yang dihasilkan setiap Anda membuat panggilan API.