samsat-banten-new.php 7.59 KB
<?php
// irul @ 20200522

/**
 * fake samsat-banten-new (samsat banten pos/sts)
 *
 * inquiry: http://36.67.59.193:8383/bjb/bayarbjb.php/?token=TDA0YTFRUWRIS2FlQjlvUUxoYTNPQzZtTHZ3ZFpWM0cxVGs3UUJ5SDU3bz0=&nopol=B6461JAA&kdpolda=1
 * payment: http://36.67.59.193:8383/bjb/statusbjb.php/?token=TDA0YTFRUWRIS2FlQjlvUUxoYTNPQzZtTHZ3ZFpWM0cxVGs3UUJ5SDU3bz0=&status=3&nopol=B6461JAA&kdpolda=1
 *
 */

class SamsatBantenNew
{
    public static function inquiry()
    {
        // QUERY PARAMS:
        // token=TDA0YTFRUWRIS2FlQjlvUUxoYTNPQzZtTHZ3ZFpWM0cxVGs3UUJ5SDU3bz0=&nopol=B6461XXX&kdpolda=1

        // daftar nopol buat test, kalo mo ga dibatesin tinggal set ke array()
        $arr_nopol = array('A-1092-XK', 'A-1223-XO', 'A-1248-XO', 'A-1253-XO', 'A-1259-XO', 'A-1277-XO', 'A-1288-XK', 'A-1307-XO', 'A-1320-XO', 'A-1350-XO', 'A-1364-XK', 'A-1398-YV', 'A-1512-YF', 'A-1791-ZK', 'A-2000-XXX', 'A-2346-YI', 'A-3327-XD', 'A-3602-ZAX', 'A-3650-ZL', 'A-3788-ZAX', 'A-3803-ZS', 'A-4074-VC', 'A-4264-XE', 'A-4688-VAM', 'A-4881-VAM', 'A-5026-ZAX', 'A-5168-YW', 'A-5502-YX', 'A-5513-VAC', 'A-5539-ZAX', 'A-5649-VAC', 'A-5748-VAC', 'A-5805-VAJ', 'A-5871-ZE', 'A-5902-ZAX', 'A-6134-XZ', 'A-9701-ZX', 'B-1045-WYE', 'B-1051-VLR', 'B-1054-GFH', 'B-1054-WYE', 'B-1109-GER', 'B-1124-NVF', 'B-1133-VOO', 'B-1149-GKH', 'B-1176-JLO', 'B-1183-JLO', 'B-1191-JLO', 'B-1226-JEN', 'B-1240-JEN', 'B-1241-GEN', 'B-1290-GJB', 'B-1306-WZX', 'B-1356-GJA', 'B-1364-JVB', 'B-1401-GMH', 'B-1470-VLO', 'B-1483-JVA', 'B-1511-JVB', 'B-1523-JVB', 'B-1542-WRC', 'B-1561-WZX', 'B-1625-WZX', 'B-1643-VOD', 'B-1664-NOP', 'B-1681-VJD', 'B-1681-WGZ', 'B-1696-NVF', 'B-1700-VUJ', 'B-1739-NFZ', 'B-1813-WYD', 'B-1864-VMQ', 'B-1867-WYD', 'B-1883-VUG', 'B-1967-ON', 'B-2009-VBC', 'B-2271-VBC', 'B-2285-VBC', 'B-6008-WZC', 'B-6047-JYX', 'B-6355-JFA', 'B-6510-VUK', 'B-6517-JFC', 'B-6623-VIE', 'B-6625-VLP', 'B-6636-JFC', 'B-6677-VHX', 'B-6689-VJN', 'B-6766-VLB', 'B-9050-JQA', 'B-9133-JYT', 'B-9176-VDB', 'B-9609-ON', 'B-9654-VAF', 'B-9837-GYV', 'B-9850-NAH');

        $token   = isset($_GET['token']) ? $_GET['token'] : '';
        $nopol   = isset($_GET['nopol']) ? $_GET['nopol'] : '';
        $kdpolda = isset($_GET['kdpolda']) ? $_GET['kdpolda'] : '';

        if (empty($token) || empty($nopol) || empty($kdpolda)) {
            self::echo_text('Paramater harus lengkap dan diisi semua.');
        } else if (!count($arr_nopol) || (count($arr_nopol) && !in_array($nopol, $arr_nopol))) {
            self::echo_text('Data tidak ditemukan.');
        } else {
            $params = compact("token", "nopol", "kdpolda");
            // self::echo_json($params);
            self::echo_json(self::inquiry_response($params));
        }
    }

    public static function payment()
    {
        // QUERY PARAMS:
        // token=TDA0YTFRUWRIS2FlQjlvUUxoYTNPQzZtTHZ3ZFpWM0cxVGs3UUJ5SDU3bz0=&status=3&nopol=B6461JAA&kdpolda=1

        $token   = isset($_GET['token']) ? $_GET['token'] : '';
        $status  = isset($_GET['status']) ? $_GET['status'] : '';
        $nopol   = isset($_GET['nopol']) ? $_GET['nopol'] : '';
        $kdpolda = isset($_GET['kdpolda']) ? $_GET['kdpolda'] : '';

        if (empty($token) || empty($nopol) || empty($kdpolda) || empty($status)) {
            self::echo_json(array(
                'status'  => 'fail',
                'message' => 'data tidak ditemukan',
                'data'    => array(),
            ));
        } else {
            $params = compact("token", "nopol", "kdpolda");
            // self::echo_json($params);
            self::echo_json(self::payment_response($params));
        }
    }

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

        $fake_response = array(
            'status' => 'OK',
            'Data'   => array(
                'no_polisi'      => $params['nopol'],
                'nm_pemilik'     => strtoupper($faker->name), //'PT. KENCANA LAJU MANDIRI',
                'al_pemilik'     => strtoupper($faker->address), //'MEDANG LESTARI BLOK A.IV/M7 RT.001 RW. 011 KEL. MEDANG PAGEDANGAN',
                'jenis_kb'       => '702',
                'merek_kb'       => 'VIAR',
                'tipe_kb'        => 'V 10 R',
                'warna_kb'       => $faker->randomElement(array('MERAH', 'KUNING', 'ABU-ABU', 'HIJAU', 'BIRU', 'HITAM')), ,
                'tahun_buatan'   => '2019',
                'no_rangka'      => 'MGRVR10TAKL002430',
                'no_mesin'       => 'YX151FMG19002063',
                'no_ktp'         => $faker->creditCardNumber(),
                'cc'             => '100',
                'bbm'            => '1',
                'kd_plat_nomor'  => '1',
                'no_bpkb'        => 'Q00768295',
                'tgl_stnk'       => '19-05-2025',
                'kd_nama'        => '1',
                'no_hp'          => '',
                'nm_jenis'       => '702',
                'tgl_pajak'      => '19-05-2020',
                'tgl_akhir_stnk' => '19-05-2025',
                'tgl_pajak_yad'  => '19-05-2021',
                'bbnkb'          => '0',
                'bbnkb_den'      => '0',
                'pkb'            => $pokok_pkb,
                'pkb_den'        => '0',
                'swdkllj'        => $pokok_swd,
                'swdkllj_den'    => '0',
                'bea_adm'        => $bea_adm,
                'bea_plat'       => '0',
                'total_bayar'    => $jumlah,
            ),
        );

        return $fake_response;
    }

    private static function payment_response($params = array())
    {
        $fake_response = array(
            'status' => 'OK',
            'data'   => array(
                'no_polisi'      => $params['nopol'],
                'nm_pemilik'     => 'PT. KENCANA LAJU MANDIRI',
                'al_pemilik'     => 'MEDANG LESTARI BLOK A.IV/M7 RT.001 RW. 011 KEL. MEDANG PAGEDANGAN',
                'jenis_kb'       => '702',
                'merek_kb'       => 'VIAR',
                'tipe_kb'        => 'V 10 R',
                'warna_kb'       => 'BIRU',
                'tahun_buatan'   => '2019',
                'no_rangka'      => 'MGRVR10TAKL002430',
                'no_mesin'       => 'YX151FMG19002063',
                'no_ktp'         => '0',
                'cc'             => '100',
                'bbm'            => '1',
                'kd_plat_nomor'  => '1',
                'no_bpkb'        => 'Q00768295',
                'tgl_stnk'       => '19-05-2025',
                'kd_nama'        => '1',
                'no_hp'          => '',
                'nm_jenis'       => '702',
                'tgl_pajak'      => '19-05-2020',
                'tgl_akhir_stnk' => '19-05-2025',
                'tgl_pajak_yad'  => '19-05-2021',
                'bbnkb'          => '2025000',
                'bbnkb_den'      => '0',
                'pkb'            => '283500',
                'pkb_den'        => '0',
                'swdkllj'        => '35000',
                'swdkllj_den'    => '0',
                'bea_adm'        => '    100000',
                'bea_plat'       => '     60000',
                'total_bayar'    => '2503500',
            ),
        );

        return $fake_response;
    }

    private static function echo_json($data = array())
    {
        header('Content-type: application/json');
        echo json_encode($data) . PHP_EOL;
    }

    private static function echo_text($data = '')
    {
        header('Content-type: text/html; charset=UTF-8');
        echo $data . PHP_EOL;
    }
}