Dokumentasi/WhatsApp
Panduan TerverifikasiWhatsAppID

Migrasi dari krmpesan.app

Panduan lengkap langkah migrasi integrasi API dari krmpesan.app legacy ke platform baru.

5 menit baca•Diperbarui 26/8/2026•/whatsapp/migrasi-krmpesan

Panduan ini berisi langkah-langkah praktis untuk memigrasikan integrasi sistem backend Anda dari layanan krmpesan.app versi lama ke platform WhatsApp Business API yang baru.


1. Ringkasan Perubahan (Overview)

Platform baru dirancang dengan kompatibilitas mundur (backward-compatibility). Anda tidak perlu langsung merombak format JSON payload lama Anda. Cukup perbarui Base URL dan API Key.

Komponenkrmpesan.app (Lama)Platform BaruCatatan
Base URLhttps://api.krmpesan.app/https://pfnapp.id/api/whatsapp/Prefix /api/whatsapp
AutentikasiAuthorization: Bearer <userToken>Authorization: Bearer <API_KEY> atau x-api-key: <API_KEY>Gunakan Static Org API Key
Kirim PesanPOST /messagesPOST /api/whatsapp/messagesMendukung payload lama & baru
Daftar PesanGET /messagesGET /api/whatsapp/messagesRiwayat pesan dan status
Daftar TemplateGET /templatesGET /api/whatsapp/templatesSinkronisasi template Meta
Daftar KontakGET /contactsGET /api/whatsapp/contactsManajemen kontak audiens
Webhook StatusPOST /webhooksGET /api/whatsapp/webhooks/eventsLog event & status pengiriman

2. Autentikasi & API Key Baru

Pada platform baru, autentikasi menggunakan Organization API Key yang dapat digenerate melalui Console:

  1. Masuk ke Console > WhatsApp > API Keys (/console/whatsapp/api-keys).
  2. Klik tombol Generate API key dan simpan token rahasia yang muncul (berawalan pfn_wa_sec_ atau wa_live_).
  3. Tambahkan token ke header permintaan HTTP Anda:
HTTP
Authorization: Bearer pfn_wa_sec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

Atau menggunakan header kustom:

HTTP
x-api-key: pfn_wa_sec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

3. Komparasi Payload & Contoh Pengiriman

A. Pengiriman Pesan Template

1. Format Legacy krmpesan (Drop-in Replacement)

Anda dapat tetap menggunakan struktur JSON payload lama Anda tanpa perubahan kode logika:

BASH
1curl -X POST "https://pfnapp.id/api/whatsapp/messages" \
2 -H "Authorization: Bearer pfn_wa_sec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "phone": "081234567890",
6 "template_name": "notifikasi_tagihan",
7 "template_language": "id",
8 "template": {
9 "body": ["Budi Santoso", "INV-2026-001", "Rp 150.000"]
10 }
11 }'

2. Format Standar Baru (OpenAPI / Meta Cloud Architecture)

Format baru yang direkomendasikan untuk mendukung parameter dinamis header (gambar/dokumen/video) serta tombol interaktif:

BASH
1curl -X POST "https://pfnapp.id/api/whatsapp/messages" \
2 -H "Authorization: Bearer pfn_wa_sec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "to": "+6281234567890",
6 "type": "template",
7 "template": {
8 "name": "notifikasi_tagihan",
9 "language": {
10 "code": "id"
11 },
12 "components": [
13 {
14 "type": "body",
15 "parameters": [
16 { "type": "text", "text": "Budi Santoso" },
17 { "type": "text", "text": "INV-2026-001" },
18 { "type": "text", "text": "Rp 150.000" }
19 ]
20 }
21 ]
22 }
23 }'

B. Pengiriman Pesan Teks Bebas (Session Message)

Ketentuan Meta: Pesan teks bebas (non-template) hanya dapat dikirim jika pelanggan telah mengirim pesan ke nomor WhatsApp Anda dalam kurun waktu 24 jam terakhir.

BASH
1curl -X POST "https://pfnapp.id/api/whatsapp/messages" \
2 -H "Authorization: Bearer pfn_wa_sec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "phoneNumber": "081234567890",
6 "type": "text",
7 "message": "Halo Budi, customer support kami sedang meninjau pertanyaan Anda."
8 }'

C. Pengiriman Pesan Media (Gambar / Dokumen)

BASH
1curl -X POST "https://pfnapp.id/api/whatsapp/messages" \
2 -H "Authorization: Bearer pfn_wa_sec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "phoneNumber": "081234567890",
6 "type": "image",
7 "mediaUrl": "https://assets.domain.com/invoices/inv-001.jpg",
8 "caption": "Lampiran Bukti Transaksi #INV-2026-001"
9 }'

4. Contoh Integrasi Kode

Node.js / TypeScript

TYPESCRIPT
1async function sendWhatsAppNotification() {
2 const response = await fetch("https://pfnapp.id/api/whatsapp/messages", {
3 method: "POST",
4 headers: {
5 "Authorization": `Bearer ${process.env.WHATSAPP_API_KEY}`,
6 "Content-Type": "application/json",
7 },
8 body: JSON.stringify({
9 phone: "081234567890",
10 template_name: "notifikasi_tagihan",
11 template_language: "id",
12 template: {
13 body: ["Budi Santoso", "INV-2026-001", "Rp 150.000"],
14 },
15 }),
16 })
17
18 const result = await response.json()
19 console.log("Response:", result)
20}

PHP (cURL / Guzzle)

PHP
1<?php
2
3$curl = curl_init();
4
5$payload = [
6 "phone" => "081234567890",
7 "template_name" => "notifikasi_tagihan",
8 "template_language" => "id",
9 "template" => [
10 "body" => ["Budi Santoso", "INV-2026-001", "Rp 150.000"]
11 ]
12];
13
14curl_setopt_array($curl, [
15 CURLOPT_URL => "https://pfnapp.id/api/whatsapp/messages",
16 CURLOPT_RETURNTRANSFER => true,
17 CURLOPT_POST => true,
18 CURLOPT_POSTFIELDS => json_encode($payload),
19 CURLOPT_HTTPHEADER => [
20 "Authorization: Bearer " . getenv("WHATSAPP_API_KEY"),
21 "Content-Type: application/json"
22 ],
23]);
24
25$response = curl_exec($curl);
26curl_close($curl);
27
28echo $response;

5. Checklist Langkah Migrasi

  • Langkah 1: Buat API Key baru di Console WhatsApp (/console/whatsapp/api-keys).
  • Langkah 2: Perbarui konfigurasi environment aplikasi (WHATSAPP_API_BASE_URL dan WHATSAPP_API_KEY).
  • Langkah 3: Uji coba pengiriman pesan template ke nomor pengujian.
  • Langkah 4: Pastikan nama template dan urutan variabel body sesuai dengan template yang disetujui di Meta.
  • Langkah 5: Hubungkan webhook callback untuk memantau status pesan masuk dan delivery report (sent, delivered, read, failed).