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
×tamp=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.