samsat-banten.php 7.43 KB
<?php
// irul @ 20200515

/**
 * fake samsat-banten
 */

class SamsatBanten
{
    public function __construct()
    {
        $rpc = new JsonRPC\Server();
        $rpc->getProcedureHandler()
            ->withCallback('get_tagihan', function ($data) {
                return call_user_func('SamsatBanten::get_tagihan', $data);
            })
            ->withCallback('get_kd_bayar', function ($data) {
                return call_user_func('SamsatBanten::get_kd_bayar', $data);
            })
            ->withCallback('inquiry', function ($data) {
                return call_user_func('SamsatBanten::inquiry', $data);
            })
            ->withCallback('payment', function ($data) {
                return call_user_func('SamsatBanten::payment', $data);
            })
            ->withCallback('reversal', function ($data) {
                return call_user_func('SamsatBanten::reversal', $data);
            })
            ->withCallback('reprint', function ($data) {
                return call_user_func('SamsatBanten::reprint', $data);
            });
        echo $rpc->execute();
    }

    private static function get_tagihan($payload)
    {
        // PAYLOAD:
        // {
        //     "params": {
        //         "data": {
        //             "kd_bank": "110",
        //             "kd_channel": "6010",
        //             "kd_produk": 4,
        //             "kd_biller": "0001",
        //             "no_polisi": "A-1259-AV"
        //         }
        //     },
        //     "jsonrpc": "2.0",
        //     "method": "get_tagihan",
        //     "id": 1
        // }

        return self::fake_data($payload);
    }

    private static function get_kd_bayar($payload)
    {
        // PAYLOAD:
        // {
        //     "params": {
        //         "data": {
        //             "kd_bank": "110",
        //             "kd_channel": "6010",
        //             "kd_produk": 4,
        //             "kd_biller": "0001",
        //             "no_polisi": "A-5247-HV",
        //             "no_identitas": "3673200304950001",
        //             "no_rangka": "MHBJ2CH2FGJ-015773"
        //         }
        //     },
        //     "jsonrpc": "2.0",
        //     "method": "get_kd_bayar",
        //     "id": 1
        // }

        return self::fake_data($payload);
    }

    private static function inquiry($payload)
    {
        // PAYLOAD:
        // {
        //     "params": {
        //         "data": {
        //             "kd_bank": "110",
        //             "kd_channel": "6010",
        //             "kd_produk": 4,
        //             "kd_biller": "0001",
        //             "invoice_no": "123456"
        //         }
        //     },
        //     "jsonrpc": "2.0",
        //     "method": "inquiry",
        //     "id": 1
        // }

        return self::fake_data($payload);
    }

    private static function payment($payload)
    {
        // PAYLOAD:
        // {
        //     "params": {
        //         "data": {
        //             "kd_bank": "110",
        //             "kd_channel": "6010",
        //             "kd_produk": 4,
        //             "kd_biller": "0001",
        //             "invoice_no": "123456",
        //             "amount": 100123,
        //             "ntb": "NTB123456",
        //             "tgl_transaksi": "2020-01-23",
        //             "jam_transaksi": "00:11:22"
        //         }
        //     },
        //     "jsonrpc": "2.0",
        //     "method": "payment",
        //     "id": 1
        // }

        return self::fake_data($payload);
    }

    private static function reversal($payload)
    {
        // PAYLOAD:
        // {
        //     "params": {
        //         "data": {
        //             "kd_bank": "110",
        //             "kd_channel": "6010",
        //             "kd_produk": 4,
        //             "kd_biller": "0001",
        //             "invoice_no": "123456",
        //             "ntb": "NTB123456",
        //             "tgl_transaksi": "2020-01-23",
        //             "jam_transaksi": "00:11:22",
        //             "ntp": "NTP123456"
        //         }
        //     },
        //     "jsonrpc": "2.0",
        //     "method": "reversal",
        //     "id": 1
        // }

        return self::fake_data($payload);
    }

    private static function reprint($payload)
    {
        // PAYLOAD:
        // {
        //     "params": {
        //         "data": {
        //             "kd_bank": "110",
        //             "kd_channel": "6010",
        //             "kd_produk": 4,
        //             "kd_biller": "0001",
        //             "invoice_no": "123456",
        //             "ntb": "NTB123456",
        //             "tgl_transaksi": "2020-01-23",
        //             "jam_transaksi": "00:11:22",
        //             "ntp": "NTP123456"
        //         }
        //     },
        //     "jsonrpc": "2.0",
        //     "method": "reprint",
        //     "id": 1
        // }

        return self::fake_data($payload);
    }

    private static function fake_data($payload)
    {
        $faker     = Faker\Factory::create();
        $pokok_pkb = $faker->numberBetween(123, 999) * 100;
        $pokok_swd = $faker->numberBetween(1, 99) * 100;
        $jumlah    = $pokok_pkb + $pokok_swd;

        $fake_response = array(
            'kd_bank'        => isset($payload['kd_bank']) ? $payload['kd_bank'] : 'kd_bank',
            'kd_channel'     => isset($payload['kd_channel']) ? $payload['kd_channel'] : 'kd_channel',
            'kd_produk'      => isset($payload['kd_produk']) ? $payload['kd_produk'] : 'kd_produk',
            'kd_biller'      => isset($payload['kd_biller']) ? $payload['kd_biller'] : 'kd_biller',
            'no_polisi'      => isset($payload['no_polisi']) ? $payload['no_polisi'] : 'no_polisi',
            'kd_plat'        => isset($payload['kd_plat']) ? $payload['kd_plat'] : 'kd_plat',
            'pokok_bbn'      => 0,
            'denda_bbn'      => 0,
            'pokok_pkb'      => $pokok_pkb,
            'denda_pkb'      => 0,
            'pokok_swd'      => $pokok_swd,
            'denda_swd'      => 0,
            'pokok_adm_stnk' => 0,
            'pokok_adm_tnkb' => 0,
            'admin'          => 0,
            'jumlah'         => $jumlah,
            'jatuh_tempo'    => '20200506',
            'nm_wp'          => strtoupper($faker->name),
            'jln_wp'         => strtoupper($faker->address),
            'no_identitas'   => $faker->creditCardNumber(),
            'nm_op'          => 'DATSUN',
            'jenis_op'       => 'MINIBUS',
            'model_op'       => 'GO PANCA T 1.2 M/T',
            'no_rangka'      => 'MHBJ2CH2FGJ-015773',
            'no_mesin'       => 'HR12-761493T',
            'no_identita'    => '',
            'warna_tnkb'     => $faker->randomElement(array('MERAH', 'KUNING', 'ABU-ABU', 'HIJAU', 'BIRU', 'HITAM')),
            'milik_ke'       => 1,
            'tahun_produksi' => $faker->date('Y'),
            'tgl_lama'       => '20200620',
            'tgl_baru'       => '20210620',
            'tgl_akhir_stnk' => '20210620',
        );

        foreach ($payload as $key => $value) {
            if (!array_key_exists($key, $fake_response)) {
                $fake_response[$key] = $value;
            }
        }

        $fake_response = array_merge($fake_response, array(
            'keterangan'  => 'SUKSES',
            'reserved_01' => '01',
        ));

        return array('data' => $fake_response);
    }

}