Tampilan
Referensi Integrasi Eksternal
Semua integrasi dibungkus dalam helper di folder helpers/. Berikut ringkasan tiap integrasi, file helper, dan fungsi kunci.
Zimbra (SOAP Admin API)
Helper: helpers/zimbra.helper.js
Provisioning & manajemen relay account via SOAP (SMTP_URL). Di production, mirror ke instance Zimbra kedua (SMTP_URL_EXC / @excellent.co.id).
| Fungsi | Tujuan |
|---|---|
loginZimbra(name, password, url) | Auth admin → token |
createAccountZimbra(token, {name, password}) | Buat relay account (status awal closed) |
deleteAccountZimbra(token, {id}) | Hapus account |
searchAccountZimbra(token, {name/id, justId}) | Cari by email/ID |
getAccountRequest(token, params) | Ambil atribut account |
modifyAccountRequest(token, {id, attribute, value}) | Ubah atribut (mis. zimbraNotes) |
zimbraAccountStatus(token, {id, status}) | Set status (active/closed) — suspend/reactivate |
zimbraSetPassword(token, {id, password}) | Reset password relay |
Dipakai oleh: checkout, aktivasi/suspend relay, enforcement kuota, callback Xendit, manajemen relay admin.
ZoneMTA (ZMTA)
Helper: helpers/zone-mta.helper.js
Mengelola token pengiriman & registrasi domain di ZMTA_URL. Tidak mengirim email sendiri.
| Fungsi | Tujuan |
|---|---|
getToken(companyUuid) | Ambil token |
getListALlToken() | List semua token |
generateToken(companyUuid, userUuid) | Buat token baru |
regenerateToken(companyUuid, userUuid) | Regenerasi token |
deleteToken(companyUuid) | Hapus token |
editTokenStatus(companyUuid, status) | Ubah status token |
createDomain(companyUuid, domainName, maxSize) | Daftar domain + batas attachment |
getDomain(domainName) | Ambil config domain |
deleteDomain(domainId) | Hapus domain |
updateDomain(maxSize, companyUuid, domainName) | Ubah batas attachment |
Dipakai oleh: generateEmailApiToken, renewEmailApiToken, getEmailApiToken, cron sync-domain-zmta.
Xendit (Payment Gateway)
Helper: helpers/xendit.helper.js (wrapper xendit-node)
| Fungsi | Tujuan |
|---|---|
initX(xService) | Inisialisasi client (SECRET_KEY_XENDIT) |
rp(opts) | Instance RecurringPayment |
xInv(opts) | Instance Invoice |
intervals(type) | Enum interval recurring |
actions(type) | Enum action recurring (Stop, dll.) |
Dipakai oleh: checkout, callbackXendit, service recurring/overquota, manual payment admin.
Zoho Books
Helper: helpers/zoho.helper.js
Integrasi penuh: contact, estimate, invoice, payment, item, bank.
| Fungsi | Tujuan |
|---|---|
defRequest(method, path, data, params) | Request terotentikasi generik |
createZohoContact / updateZohoContact | Customer contact |
createEstimateInvoice(...) | Estimate (proforma) |
createInvoice(...) | Invoice pajak dari estimate |
createOverQuotaEstimate / createOverQuotaInvoice | Billing over-quota |
markPaidEstimate / markDeclinedEstimate | Status estimate |
markPaidInvoice(id, cusId, amount) | Catat pembayaran (auto) |
recordPaymentInvoice(...) | Pembayaran bank manual |
getInvEstimate / getInvoice | Ambil dokumen |
getPdfInvEstimate / getPdfInv | Download PDF |
getListAllBanks / getBankDetails | Rekening bank |
createItem / updateItem / deleteItem | Item katalog Zoho |
updateInvoice / updateEstimate | Update dokumen |
OAuth refresh: repositories/config.repository.js (getTokenZoho), cron job-update-access-token-zoho.js.
Elasticsearch
Helper inti: helpers/es.helper.js
| Fungsi | Tujuan |
|---|---|
add(indexName, body) | Index dokumen (body.id jadi doc ID) |
find / search(indexName, options) | Search |
getHits(response) | Ekstrak hits |
updateById(indexName, options) | Partial update |
Sub-helper pengolahan clean-log: lihat Logging Pengiriman.
Index: dashboard-raw-log (ES_RAW_LOG_INDEX) & dashboard-clean-log (ES_CLEAN_LOG_INDEX).
AWS S3 / Linode Object Storage
Helper: helpers/s3Upload.helper.js (aws-sdk, endpoint ap-south-1.linodeobjects.com, bucket aktiva-relay)
| Fungsi | Tujuan |
|---|---|
s3Upload(type, file, companyUuid, companyName) | Upload file company (NPWP, logo) → public/{uuid}/ |
s3UploadDailyReport(...) | Upload CSV laporan harian |
s3UploadDailyReportImage(...) | Upload PNG chart laporan |
s3Get(companyUuid) | Ambil upload NPWP |
Nodemailer / SMTP
Helper: helpers/mailing.helper.js (utama), helpers/sending-email.helper.js (invoice legacy inline HTML)
Detail di Notifikasi Email.
MailWizz / AMC
Helper: helpers/mailwizz.helper.js
API list/subscriber management marketing (AMC_BASE_URL). Registrasi kontak saat onboarding/pembayaran. Cron: cron/mailwizz/job-register-contact-mailwizz.js. Referensi UID disimpan di TransCompanyContacts.amcListUid / amcSubsUid.
Helper pendukung lain
| Path | Peran |
|---|---|
helpers/dnsChecker.helper.js | Validasi DNS SPF/DKIM/DMARC |
helpers/fileConfig.helper.js | Tulis file config relay postfix (listdomain.txt, bysender, slm-exceptions-db) |
helpers/suppression.helper.js | Suppression list email |
helpers/plain-log-regex.helper.js | Regex parsing baris log postfix |
helpers/cp.helper.js | Spawn child process untuk job |
helpers/config.helper.js | envParams, envBool, parameterizeDb |
helpers/logger.helper.js | Logger Winston |
helpers/token.helper.js | Pembuatan & verifikasi JWT |
helpers/response.helper.js | Format response API |
helpers/index.js | Barrel export |
Ringkasan environment per integrasi
Lihat Konfigurasi Environment untuk daftar lengkap variabel tiap integrasi.
Postal
Integrasi Postal tidak ada di branch ini. Hanya ada di branch feature/postal-integration. Relevan saat mempertimbangkan alternatif pengiriman pada Roadmap Migrasi.