Panduan Pasukan Lucee MY

SSM MyData: semak profil syarikat dari CFML

MyData SSM tiada API awam percuma; perlu pendaftaran dan kelulusan. Panduan CFML: simpan profil syarikat, sahkan nombor pendaftaran, paut ke carian rasmi SSM.

SSM MyData: semak profil syarikat dari CFML
0
Kandungan

SSM MyData: semak profil syarikat dari CFML

MyData SSM tiada API awam percuma. Setiap saluran rasmi Suruhanjaya Syarikat Malaysia (SSM) memerlukan pendaftaran, log masuk dan bayaran, dan akses API penuh hanya melalui langganan korporat atau rakan integrator yang diluluskan. Jadi tiada "sambung terus dari CFML" yang boleh ditunjukkan, kerana titik hujung sedemikian tidak wujud untuk umum. Artikel ini jujur tentang perkara itu dahulu, kemudian mengajar apa yang sebenarnya boleh anda buat: memohon akses, menyimpan data syarikat dalam pangkalan data sendiri, dan memaut ke carian rasmi SSM untuk pengesahan manual.

Apa sebenarnya MyData SSM dan kenapa tiada API awam

SSM ialah badan berkanun yang menyimpan daftar semua syarikat dan perniagaan berdaftar di Malaysia, dan data itu bernilai komersial, jadi ia tidak diberi percuma. Terdapat tiga muka rasmi yang sering keliru antara satu sama lain: portal korporat ssm.com.my, portal perkhidmatan ssm-einfo.my, dan portal MyData di mydata-ssm.com.my. Ketiga-tiganya memerlukan akaun, dan carian profil syarikat di sebaliknya adalah perkhidmatan berbayar.

Bagi pembangun, jalan yang disebut "API" ialah dua produk pada SSM e-Info: Corporate Integration Data untuk pengambilan data masa nyata melalui integrasi API, dan Corporate Subscription Data (CSD), pelan langganan eksklusif untuk profil syarikat dan perniagaan bukan CTC. Kedua-duanya tidak boleh didaftar sendiri: butangnya ialah "Enquire Now", bermakna anda perlu berhubung dengan SSM atau rakan integrator, menandatangani perjanjian, dan membayar langganan sebelum sebarang kunci atau titik hujung diberikan. Tiada pendaftaran pembangun, tiada kunci percubaan, dan tiada dokumentasi titik hujung awam.

Data apa yang tersedia dalam profil syarikat

Jadual di bawah menyenaraikan data yang biasanya anda perlukan, sumbernya, dan sejauh mana ia boleh dicapai. Semua baris memerlukan log masuk dan bayaran; lajur kebolehcapaian menyatakan bentuk aksesnya.

DataSumberKebolehcapaian
Nama syarikatProfil syarikat SSM (e-Info, MyData, e-Search)Log masuk dan bayaran; tiada API awam percuma
Nombor pendaftaranProfil syarikat dan sijil penubuhanLog masuk dan bayaran; format lama dan baharu 12 digit
Status (wujud, dibubarkan, penggulungan)Rekod SSM dengan kod E, W, DLog masuk dan bayaran
Alamat berdaftarDokumen "Particulars of Registered Address"Log masuk dan bayaran; versi CTC dan bukan CTC
Pengarah (nama, nombor IC, alamat)Profil syarikat SSMLog masuk dan bayaran

Perhatikan bahawa status syarikat ialah perkara yang paling kerap berubah dan paling kritikal: sebuah syarikat yang "wujud" semalam boleh memasuki penggulungan, dan status itu menentukan sama ada anda patut meneruskan urus niaga dengannya.

Aliran permohonan akses: apa yang SSM perlukan

Kalau anda perlukan data SSM secara automatik, laluannya begini. Pertama, daftar akaun pada portal SSM e-Info: borang pendaftaran meminta nama penuh, nama pengguna, kata laluan, emel, nombor telefon dan tarikh lahir, dan identiti anda disahkan sebelum carian dibenarkan. Carian individu kemudiannya manual: log masuk, pergi ke seksyen carian syarikat, masukkan nama atau nombor pendaftaran, dan sistem memaparkan butiran serta dokumen.

Untuk integrasi automatik, langkah seterusnya ialah menghubungi SSM atau rakan integrator melalui saluran "Enquire Now" bagi Corporate Integration Data atau CSD. Di sini SSM memerlukan maklumat syarikat anda, tujuan penggunaan data, dan komitmen terhadap terma lesen, kerana data itu dilesenkan, bukan dijual bebas. Selepas kelulusan, anda menerima kredensial dan dokumentasi titik hujung, dan hanya pada masa itu barulah anda boleh memanggil API dari CFML. Tanpa langkah ini, sebarang percubaan memanggil titik hujung ialah carian di dalam gelap.

Simpan data syarikat dalam pangkalan data sendiri

Sementara menunggu kelulusan akses, pendekatan paling munasabah ialah menyimpan data syarikat dalam pangkalan data anda sendiri: anda membeli profil yang diperlukan secara manual, menaip nilai yang relevan, dan membiarkan aplikasi bekerja dengan salinan itu. Lajur disemak_pada merekod tarikh semakan terakhir, dan dua baris contoh rekaan di bawah menunjukkan satu syarikat yang masih wujud dan satu yang sudah dibubarkan:

<cfscript>
queryExecute("
    CREATE TABLE IF NOT EXISTS syarikat (
        id INT AUTO_INCREMENT PRIMARY KEY,
        nama VARCHAR(160) NOT NULL,
        no_pendaftaran VARCHAR(20) NOT NULL UNIQUE,
        status VARCHAR(30) NOT NULL,
        alamat_berdaftar VARCHAR(255),
        pengarah VARCHAR(255),
        disemak_pada TIMESTAMP
    )
", [], { datasource: "kedai" });

queryExecute("
    INSERT INTO syarikat (nama, no_pendaftaran, status, alamat_berdaftar, pengarah, disemak_pada)
    VALUES
    ('Syarikat Maju Jaya Sdn Bhd', '1234567-A', 'Wujud', 'No. 12, Jalan Contoh, 50000 Kuala Lumpur', 'Ahmad bin Ali', CURRENT_TIMESTAMP),
    ('Toko Contoh Niaga', '7654321-W', 'Dibubarkan', 'No. 5, Lorong Uji, 47000 Petaling Jaya', 'Siti binti Rahman', CURRENT_TIMESTAMP)
", [], { datasource: "kedai" });
</cfscript>

Nama datasource kedai hanyalah contoh; baca panduan konfigurasi datasource untuk cara mendaftarkannya dalam Lucee. Jangan simpan nombor MyKad pengarah atau butiran sensitif lain melainkan anda benar-benar memerlukannya dan melindunginya mengikut Akta Perlindungan Data Peribadi 2010.

Semak semula secara berkala

Data yang disimpan ialah syot kilat, dan ia reput. Jadualkan satu tugas yang menandakan rekod yang disemak_pada sudah melebihi satu tempoh, contohnya tiga puluh hari, supaya anda tahu bila perlu menyemak semula. Semakan semula itu kekal manual selagi anda tiada akses API, tetapi penanda masanya boleh diautomatikan dalam Lucee.

Fungsi semakan nombor pendaftaran

Sebelum menyimpan atau memaut nombor, sahkan formatnya dahulu. Nombor pendaftaran lama berbentuk digit diikuti sempang dan satu huruf semak, contohnya 1234567-A, manakala format baharu sejak 11 Oktober 2019 ialah 12 digit, contohnya 201901000005. Fungsi berikut menyemak kedua-dua format dan memulangkan status:

<cfscript>
public struct function semakNoPendaftaran(required string nombor) {
    var n = trim(arguments.nombor);
    if (reFind("^[0-9]{1,7}-[A-Z]$", n) GT 0) {
        return { format: "SAH", nota: "format lama: digit + sempang + huruf semak" };
    }
    if (reFind("^[0-9]{12}$", n) GT 0) {
        return { format: "SAH", nota: "format baharu 12 digit (sejak 11 Okt 2019)" };
    }
    return { format: "TIDAK SAH", nota: "bukan format nombor pendaftaran SSM" };
}
</cfscript>

Ungkapan ^[0-9]{1,7}-[A-Z]$ menerima satu hingga tujuh digit diikuti sempang dan satu huruf besar, jadi ia menolak nombor tanpa huruf semak atau yang mengandungi aksara asing. Ia tidak mengesahkan huruf semak itu sendiri, kerana algoritma semakan SSM tidak didokumenkan secara awam; pengesahan penuh kekal pada sumber rasmi.

Paut ke carian rasmi SSM untuk pengesahan manual

Cara paling jujur dan paling murah untuk "mengesahkan dari CFML" ialah tidak memanggil sebarang API, tetapi memaut pengguna ke carian rasmi. Di sebelah rekod syarikat yang disimpan, letakkan pautan ke portal SSM supaya pengguna boleh menyemak status terkini dengan mata sendiri.

Untuk menunjukkan kenapa pautan itu perlu, berikut ialah apa yang berlaku apabila CFML cuba memanggil portal MyData terus:

<cfscript>
cfhttp(url="https://www.mydata-ssm.com.my/", method="get", timeout="30", result="hasil", redirect="true");
writeOutput("Kod status: " & hasil.statuscode & "<br>");
writeOutput("Jenis kandungan: " & hasil.mimetype & "<br>");
writeOutput("Saiz badan: " & len(hasil.fileContent) & " bait");
</cfscript>

Permintaan itu berjaya dari segi rangkaian, tetapi badan yang pulang ialah cangkerang HTML yang penuh JavaScript, bukan data syarikat. Tiada titik hujung awam yang memulangkan profil tanpa pengesahan, dan itulah mesejnya: cfhttp boleh sampai ke portal, tetapi data kekal berkunci di belakang log masuk dan bayaran. Asas penggunaan cfhttp untuk memanggil API luar dibincangkan dalam panduan cfhttp dan API luar.

Had undang-undang dan terma

Data SSM dilesenkan, bukan milik awam. Apabila anda membeli profil, terma penggunaan menetapkan apa yang boleh anda buat dengannya, dan lazimnya melarang pengedaran semula secara pukal, penjualan semula data, dan pengikisan automatik laman portal. Menyalin carian secara automatik ke dalam pangkalan data sendiri untuk tujuan komersial tanpa lesen ialah risiko undang-undang, bukan sekadar risiko teknikal.

Dua perkara tambahan perlu diingat. Pertama, Akta Perlindungan Data Peribadi 2010 terpakai kepada butiran peribadi seperti nombor MyKad dan alamat pengarah dalam profil syarikat, jadi simpan minimum yang anda perlukan dan lindunginya. Kedua, data SSM berubah, jadi jangan sesekali membentangkan salinan anda sebagai sah pada tarikh lain selain tarikh semakan. Untuk konteks integrasi kerajaan yang lain, lihat cara memanggil API terbuka data.gov.my, yang berbeza kerana ia benar-benar terbuka tanpa kunci, dan integrasi MyInvois e-Invois LHDN.

Bukti dalam rig Lucee

Semua kod di atas dijalankan dalam rig Lucee 7.1.2.54 pada Java 25 di http://127.0.0.1:8904, dengan jadual syarikat dibina dalam datasource kedai. Keluaran sebenar yang dipulangkan oleh enjin:

=== SEMAKAN FORMAT NOMBOR PENDAFTARAN ===
1234567-A -> SAH | format lama: digit + sempang + huruf semak
7654321-W -> SAH | format lama: digit + sempang + huruf semak
13232-A -> SAH | format lama: digit + sempang + huruf semak
201901000005 -> SAH | format baharu 12 digit (sejak 11 Okt 2019)
12345678 -> TIDAK SAH | bukan format nombor pendaftaran SSM
12A45 -> TIDAK SAH | bukan format nombor pendaftaran SSM

=== ISI JADUAL syarikat (2 baris) ===
1234567-A | Syarikat Maju Jaya Sdn Bhd | Wujud
7654321-W | Toko Contoh Niaga | Dibubarkan

=== CFHTTP KE PORTAL MYDATA ===
URL: https://www.mydata-ssm.com.my/
Kod status: 200 OK
Jenis kandungan: text/html
Saiz badan: 10761 bait (cangkerang JavaScript, tiada data syarikat)

Dua nombor tidak sah, 12345678 dan 12A45, ditolak oleh fungsi, manakala kedua-dua format sah diterima. Panggilan cfhttp memulangkan kod status 200 OK dengan badan HTML, mengesahkan portal boleh dicapai tetapi tiada data terbuka yang boleh diambil.

Soalan Lazim (FAQ)

Adakah MyData SSM menyediakan API awam percuma?

Tidak. Semua saluran rasmi SSM memerlukan pendaftaran, log masuk dan bayaran, dan akses API hanya melalui langganan korporat seperti Corporate Integration Data atau CSD, yang memerlukan perjanjian dengan SSM atau rakan integrator.

Apa yang saya boleh buat dari CFML sementara menunggu akses API?

Simpan data syarikat yang anda beli secara manual dalam pangkalan data sendiri, sahkan format nombor pendaftaran dengan regex, dan paut pengguna ke carian rasmi SSM untuk pengesahan manual status terkini.

Apakah format nombor pendaftaran syarikat Malaysia?

Format lama ialah digit diikuti sempang dan huruf semak, contohnya 1234567-A, manakala format baharu sejak 11 Oktober 2019 ialah 12 digit, contohnya 201901000005.

Bolehkah saya mengikis carian SSM secara automatik untuk menyimpan data?

Jangan. Terma penggunaan melarang pengikisan automatik, dan pengedaran semula data berlesen tanpa kebenaran ialah risiko undang-undang. Gunakan akses berlesen atau semakan manual.

Berapa kerap saya perlu menyemak semula data syarikat yang disimpan?

Status syarikat, pengarah dan alamat boleh berubah pada bila-bila masa, jadi tandakan tarikh semakan dan semak semula secara berkala, contohnya setiap tiga puluh hari, terutamanya sebelum urus niaga penting.

Sumber

0 komen

0 komen

Log masuk untuk menjawab atau memberi komen.

Log masuk