Sebelum memulai Integerasi sebaiknya Developer mendownload Guzzle terlebih dahulu untuk membuat REST API di sisi Client. keterangannya bisa anda lihat di dokumentasi Guzzle tersebut dan Guzzle ini akan bermanfaat sekali untuk berinteraksi dengan REST SERVER.
Untuk menguji / Test sebuah API menggunakan aplikasi Postman, bisa anda download di https://www.getpostman.com/
Download Guzzle Download Postmanuntuk terhubung dengan API nya, silakan gunakan Link URL https://cloud.neraca.id/{Name_function}. Untuk {Name_function} bisa anda lihat dibawah ini :
# | name_function | nama_parameter | ketentuan | penjelasan |
---|---|---|---|---|
1 | api_code | data | wajib | berisi value yang sudah di json_encode() |
2 | api_code/checkLockAccount | id | wajib | berisi value id periode fiskal |
3 | api_code/ledgerapi | dc, cg, rb, prefix | opsional, opsional, wajib, wajib | Untuk penjelasannya silakan klik Example legder list |
4 | api_code/generateEncrypt | serialize | wajib |
berisi value yang sebelumnya dalam bentuk array, lalu di ubah menggunakan serialize()
|
5 | api_code/getKodePeriodeFiskal | username | wajib | Menampilkan beberapa Id yang cocok dengan username |
<?php
require ("/guzzle/autoload.php");
use GuzzleHttp\Client;
class ... extends ...
{
private $_client;
public function __construct(){
parent::__construct();
// Load base_uri
$this->_client = new Client([
'base_uri' => "https://cloud.neraca.id/"
]);
}
...
}
<?php
require ("/guzzle/autoload.php");
use GuzzleHttp\Client;
class ... extends ...
{
private $_client;
public function __construct(){
...
}
public function ...(){
$respons = $this->_client->request('GET','{name_function}',[
'query' => [
{nama_parameter} => 1,
{nama_parameter} => "dll"
]
]);
$result = json_decode($respons->getBody()->getContents(),true);
return $result;
}
...
}
<?php
require ("/guzzle/autoload.php");
use GuzzleHttp\Client;
class ... extends ...
{
private $_client;
public function __construct(){
...
}
public function ...(){
$respons = $this->_client->request('POST','{name_function}',[
'form_params' => [{nama_parameter} => {value}]
]);
$result = json_decode($respons->getBody()->getContents(),true);
return $result;
}
...
}
<?php
require ("/guzzle/autoload.php");
use GuzzleHttp\Client;
class ... extends ...
{
private $_client;
public function __construct(){
...
}
public function ...($id){
// account_locked
$respons = $this->_client->request('GET','api_code/checkLockAccount',[
'query' => ['id' => $id]
]);
$result = json_decode($respons->getBody()->getContents(),true);
return $result['status'];
}
}
...
}
checkLockAccount berfungsi untuk memeriksa apakah periode fiskal yang anda pilih masih bisa digunakan atau sudah terkunci, {name_function} mengeluarkan output array :
['status'] = TRUE / FALSE
<?php
require ("/guzzle/autoload.php");
use GuzzleHttp\Client;
class ... extends ...
{
private $_client;
public function __construct(){
...
}
public function getLedgerSettings($prefix){
$respons = $this->_client->request('GET','api_code/ledgerapi',[
'query' => [
'dc' => {value}, // opsional
'cg' => {value}, // opsional
'rb' => {value}, // wajib
'prefix' => {value} // wajib
]
]);
$result = json_decode($respons->getBody()->getContents(),true);
return $result;
}
...
}
ledgerapi berfungsi untuk mengambil data / list ledger di periode fiskal aktif, {name_function} mengeluarkan output array si ledger
<?php
require ("/guzzle/autoload.php");
use GuzzleHttp\Client;
class ... extends ...
{
private $_client;
public function __construct(){
...
}
// $data disini merupakan array yang berisi data yang akan
// dikirimkan ke cloud akuntansi
public function ...($data){
$respons = $this->_client->request('GET','api_code/generateEncrypt',[
'query' => [
'serialize' => serialize($data)
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
...
}
generateEncrypt berfungsi untuk mengambil data yang sudah di serialize()
lalu di generate kembali menggunakan json_encode()
<?php
require ("/guzzle/autoload.php");
use GuzzleHttp\Client;
class ... extends ...
{
private $_client;
public function __construct(){
...
}
public function ...(){
$respons = $this->_client->request('GET','api_code/getKodePeriodeFiskal',[
'query' => [
'username' => ''
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
...
}
getKodePeriodeFiskal berfungsi untuk menampilkan nama_prefix sebagai tujuan pengiriman data ke Periode Fiskal. namun tidak sembarang orang memiliki prefix.
Perlu diketahui, bahwa setiap action CRUD memiliki struktur ARRAY yang berbeda antara POST, UPDATE & DELETE. ini akan mempermudah anda dalam mengirimkan data / mengintegerasikan data ke modules atau aplikasi anda.
Meskipun menggunakan POST, UPDATE & DELETE tetap saja pengiriman data menggunakan METHOD POST, yang menentukan apakah POST, UPDATE & DELETE ada di parameternya. Berikut Struktur kami tampilkan di bawah :
// ================= Struktur Data POST =================
$array = [
'prefix' => "",
'method' => "_post",
'data' => [
'date' => "",
'notes' => "",
'entryitems' => [
[
"ledger_code" => "",
"amount" => "",
"dc" => "D/C"
],
[
"ledger_code" => "",
"amount" => "",
"dc" => "D/C"
],
[
"ledger_code" => "",
"amount" => "",
"dc" => "D/C"
],
[dst]
],
'amount' => "",
'entrytype_id' => "" // Berisi Id di table {prefix}_entrytypes
]
]
// ================= Struktur Data UPDATE =================
$array = [
'prefix' => "",
'method' => "_update",
'data' => [
'id' => "", // (WAJIB) Id ini merupakan id table_entries
'date' => "",
'notes' => "",
'entryitems' => [
[
"ledger_code" => "",
"amount" => "",
"dc" => "D/C"
],
[
"ledger_code" => "",
"amount" => "",
"dc" => "D/C"
],
[
"ledger_code" => "",
"amount" => "",
"dc" => "D/C"
],
[dst]
],
'amount' => "",
'entrytype_id' => "" // Berisi Id di table_entrytypes
]
]
// ================= Struktur Data DELETE =================
$array = [
'prefix' => "",
'method' => "_delete",
'data' => [ 'id' => "" ] // (WAJIB) Id ini merupakan id table_entries
]
Agar tidak membingungkan anda, sudah kami sediakan tutorial ini agar anda dapat memahaminya. Dengan syarat anda sudah terdaftar, bila belum silakan daftar di Daftar
<?php
require_once('guzzle/autoload.php');
use GuzzleHttp\Client;
class tutor_ledger
{
private $_client;
function __construct()
{
$this->_client = new Client([
'base_uri' => "https://cloud.neraca.id/"
]);
}
public function getId($username){
$respons = $this->_client->request('GET','api_code/getKodePeriodeFiskal',[
'query' => [
'username' => $username
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
}
$tutor = new tutor_ledger();
$resultId = $tutor->getId('your_username');
// "your_username" diambil dari username administratornya AKUNTANSI
print_r($resultId);
/*
| Output yang dikeluarkan dalam bentuk JSON
|
| {
| "status" : true,
| "message" : "Data telah ditemukan",
| "data" : [
| {
| "kode" : "administrator1_",
| "label" : "Akuntan_2019_11",
| "name" : "NW Coorp"
| },
| {
| "kode" : "administrator2_",
| "label" : "Budgeting_2019_11",
| "name" : "NW Coorp"
| }
| ]
| }
*/
?>
Mengapa saya katakan wajib, karena ini akan menentukan Data anda dikirim ke Periode Fiskal yang mana
<?php
// pemanggilan ledger
require_once('guzzle/autoload.php');
use GuzzleHttp\Client;
class tutor_ledger
{
private $_client;
function __construct()
{
$this->_client = new Client([
'base_uri' => "https://cloud.neraca.id/"
]);
}
public function getId($username){
$respons = $this->_client->request('GET','api_code/getKodePeriodeFiskal',[
'query' => [
'username' => $username
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
/*
| Yang wajib diisi paramnya yaitu = rb, prefix
| Yang opsional diisi paramnya yaitu = dc, cg
|
| =========== Set rb : restriction_bankcash ===========
|
| Khusus rb, terdapat 6 pilihan,
| disetiap nilainya memiliki arti tersendiri, yaitu :
|
| nilai 1 : Tidak dibatasi
| nilai 2 : Setidaknya satu Akun Kas atau Bank harus ada di sisi DEBIT
| nilai 3 : Setidaknya satu Akun Kas atau Bank harus ada di sisi KREEDIT
| nilai 4 : Hanya Akun Kas atau Bank yang boleh berada di sisi DEBIT dan KREDIT
| nilai 5 : Hanya Akun BUKAN kas atau Bank yang boleh berada di sisi DEBIT dan KREDIT
|
| =========== Set dc : Debit, Credit or NULL ===========
|
| Pada params dc terdapat 3 value
| nilai D : Khusus dengan ledger yang bertipe D
| nilai C : Khusus dengan ledger yang bertipe C
| nilai NULL : Params dc tidak ditampilkan (berarti menampilkan semuanya D / C)
|
| =========== Set cg : Code Group ===========
|
| nilai 01 : Harta
| nilai 02 : Hutang & Modal
| nilai 03 : Pendapatan
| nilai 04 : Beban
| nilai NULL : Params cg jangan ditampilkan (ALL)
*/
public function ledger_list($prefix){
$respons = $this->_client->request('GET','api_code/ledgerapi',[
'query' => [
'rb' => 1, // wajib
'prefix'=> $prefix // wajib
]
]);
$result = json_decode($respons->getBody()->getContents(),true);
return $result;
}
}
$tutor = new tutor_ledger();
$resultId = $tutor->getId('your_username');
// "your_username" diambil dari username administratornya AKUNTANSI
$decode = json_decode($resultId, true);
$hasil = $tutor->ledger_list($decode['data'][0]['kode']);
?>
<select>
<option value="">PILIH</option>
<?php
foreach ($hasil as $key => $value) { ?>
<option value="<?= $key ?>" <?= ($key < 0) ? "disabled" : "" ?>><?= $value ?></option>
<?php } ?>
</select>
<?php
require_once('guzzle/autoload.php');
use GuzzleHttp\Client;
class tutor_ledger
{
private $_client;
function __construct()
{
$this->_client = new Client([
'base_uri' => "https://cloud.neraca.id/"
]);
}
public function getId($username){
$respons = $this->_client->request('GET','api_code/getKodePeriodeFiskal',[
'query' => [
'username' => $username
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
public function sendData($kode){
$sendApi = [
'prefix' => $kode,
'method' => "_post",
'data' => [
'date' => date('Y-m-d'),
'notes' => "Your notes",
'entryitems'=> [
[
"ledger_code" => "",
"amount" => 20000,
"dc" => 'D' // valuenya yaitu D/C = Debit/Credit
],
[
"ledger_code" => "",
"amount" => 40000,
"dc" => 'C'
],
[
"ledger_code" => "",
"amount" => 20000,
"dc" => 'D'
]
],
'amount' => 40000, // Merupakan total dari penjumlahan amount diatas, pilih salah satu tipenya D atau C, disini saya mengambil tipe D (Debit), jadi 20000 + 20000 = 40000
'entrytype_id' => 1 // merupakan Id pada entrytype
]
];
$sendResult = $this->getResult($sendApi);
$sendDataApi = $this->crudDataApi($sendResult);
return $sendDataApi;
}
protected function getResult($data){
$respons = $this->_client->request('GET','api_code/generateEncrypt',[
'query' => [
'serialize' => serialize($data)
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
protected function crudDataApi($data){
$respons = $this->_client->request('POST','api_code',[
'form_params' => ['data' => $data]
]);
$result = $respons->getBody()->getContents();
return $result;
}
}
$tutor = new tutor_ledger();
$resultId = $tutor->getId('Your_username');
// "your_username" diambil dari username administratornya AKUNTANSI
$decode = json_decode($resultId, true);
// $decode['data'][0]['kode'] artinya ia mengambil kode pada array pertama
$sendData = $tutor->sendData($decode['data'][0]['kode']);
print_r($sendData);
/*
| Output yang dikeluarkan dalam bentuk JSON
| {
| "status": true,
| "message": "Data berhasil dibuat",
| "id_entries": 9, // id_entries ini dari hasil proses input tadi
| "data": {
| "date": "2019-11-05",
| "notes": "Your notes",
| "entryitems": [
| {
| "ledger_id": 1,
| "amount": 20000,
| "dc": "D"
| },
| {
| "ledger_id": 16,
| "amount": 40000,
| "dc": "C"
| },
| {
| "ledger_id": 1,
| "amount": 20000,
| "dc": "D"
| },
| ],
| "amount": 40000,
| "entrytype_id": 1
| }
| }
*/
?>
<?php
require_once('guzzle/autoload.php');
use GuzzleHttp\Client;
class tutor_ledger
{
private $_client;
function __construct()
{
$this->_client = new Client([
'base_uri' => "https://cloud.neraca.id/"
]);
}
public function getId($username){
$respons = $this->_client->request('GET','api_code/getKodePeriodeFiskal',[
'query' => [
'username' => $username
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
public function sendData($kode){
$sendApi = [
'prefix' => $kode,
'method' => "_update",
'data' => [
'id' => 9, // id_entries merupakan hasil proses input tadi "Contoh Jurnal (POST)"
'date' => date('Y-m-d'),
'notes' => "Your notes Edited",
'entryitems'=> [
[
"ledger_code" => "",
"amount" => 56000,
"dc" => 'C' // valuenya yaitu D/C = Debit/Credit
],
[
"ledger_code" => "",
"amount" => 56000,
"dc" => 'D'
]
],
'amount' => 56000,
'entrytype_id' => 1 // merupakan Id pada entrytype
]
];
$sendResult = $this->getResult($sendApi);
$sendDataApi = $this->crudDataApi($sendResult);
return $sendDataApi;
}
protected function getResult($data){
$respons = $this->_client->request('GET','api_code/generateEncrypt',[
'query' => [
'serialize' => serialize($data)
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
protected function crudDataApi($data){
$respons = $this->_client->request('POST','api_code',[
'form_params' => ['data' => $data]
]);
$result = $respons->getBody()->getContents();
return $result;
}
}
$tutor = new tutor_ledger();
$resultId = $tutor->getId('Your_username');
// "your_username" diambil dari username administratornya AKUNTANSI
$decode = json_decode($resultId, true);
// $decode['data'][0]['kode'] artinya ia mengambil kode pada array pertama
$tutor->sendData($decode['data'][0]['kode']);
/*
| tidak ada Output yang ditampilkan, namun Proses update berhasil
*/
?>
<?php
require_once('guzzle/autoload.php');
use GuzzleHttp\Client;
class tutor_ledger
{
private $_client;
function __construct()
{
$this->_client = new Client([
'base_uri' => "https://cloud.neraca.id/"
]);
}
public function getId($username){
$respons = $this->_client->request('GET','api_code/getKodePeriodeFiskal',[
'query' => [
'username' => $username
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
public function sendData($kode){
$sendApi = [
'prefix' => $kode,
'method' => "_delete",
'data' => [ 'id' => 9 ] // merupakan data id_entries yang pernah dibuat sebelumnya, lihat pada 'Contoh Jurnal (POST)'
];
$sendResult = $this->getResult($sendApi);
$sendDataApi = $this->crudDataApi($sendResult);
return $sendDataApi;
}
protected function getResult($data){
$respons = $this->_client->request('GET','api_code/generateEncrypt',[
'query' => [
'serialize' => serialize($data)
]
]);
$result = $respons->getBody()->getContents();
return $result;
}
protected function crudDataApi($data){
$respons = $this->_client->request('POST','api_code',[
'form_params' => ['data' => $data]
]);
$result = $respons->getBody()->getContents();
return $result;
}
}
$tutor = new tutor_ledger();
$resultId = $tutor->getId('your_username');
// "your_username" diambil dari username administratornya AKUNTANSI
$decode = json_decode($resultId, true);
// $decode['data'][0]['kode'] artinya ia mengambil kode pada array pertama
$tutor->sendData($decode['data'][0]['kode']);
/*
| tidak ada Output yang ditampilkan, namun Proses delete berhasil
*/
?>