Meta WhatsApp Business API

अपने बिज़नेस को ऑटोमेट करें और कस्टमर्स से जुड़ें।
Secure, Fast, and Scalable.

Start Setup

महत्वपूर्ण आवश्यकताएँ (Requirements)

API लाइव करने से पहले इन नियमों का पालन करना अनिवार्य है।

  • Fresh Number: नंबर किसी भी WhatsApp App (Personal/Business) पर एक्टिव नहीं होना चाहिए।
  • Existing Number: अगर आप पुराना नंबर यूज़ करना चाहते हैं, तो पहले आपको App से Delete Account करना होगा।
  • No Virtual Numbers: VoIP नंबर या Virtual नंबर अक्सर ब्लॉक हो जाते हैं। असली सिम कार्ड या लैंडलाइन नंबर ही यूज़ करें।
  • Incoming SMS/Call: नंबर पर OTP प्राप्त करने के लिए इनकमिंग चालू होनी चाहिए।

Facebook Business Verification के लिए इनमें से कोई एक दस्तावेज़ अनिवार्य है:

  • GST Certificate (सबसे तेज़ वेरिफिकेशन के लिए अनुशंसित)।
  • MSME / Udyam Certificate
  • Shop & Establishment License (गुमास्ता)।
  • Certificate of Incorporation (LLP/Pvt Ltd के लिए)।
ध्यान दें: दस्तावेज़ पर लिखा नाम और पता आपकी वेबसाइट और Facebook Manager में हुबहू मिलना चाहिए।

  • Live Website: आपकी वेबसाइट लाइव होनी चाहिए (Error 404 नहीं)।
  • Legal Name in Footer: वेबसाइट के Footer सेक्शन में बिज़नेस का वही कानूनी नाम लिखा होना चाहिए जो GST पर है।
  • Facebook Business Manager: आपके पास बिज़नेस मैनेजर का 'Admin Access' होना चाहिए ताकि हम API को लिंक कर सकें।

Meta को सीधे भुगतान करने के लिए:

  • एक Credit Card या Debit Card जिसमें International Transaction (इन्टरनेशनल ट्रांजेक्शन) चालू हो।
  • API का बिल सीधे Facebook को जाएगा, यह प्रीपेड या पोस्टपेड हो सकता है।

Conversation Pricing (भारत के लिए अनुमानित)

नोट: हर महीने पहले 1,000 Service Conversations (User Initiated) फ्री होते हैं।
Marketing

₹ 0.82 /msg

ऑफर, प्रमोशन, डिस्काउंट मैसेज।

Utility

₹ 0.35 /msg

ऑर्डर कंफर्मेशन, बिल, शिपिंग अपडेट।

Authentication

₹ 0.35 /msg

OTP वेरिफिकेशन (One Time Password)।

Service

₹ 0.35 /msg

कस्टमर की क्वेरी का जवाब देना।

*कीमतें USD-INR रेट के अनुसार बदल सकती हैं।

Transparent Pricing Model

Pay only for what you use. (Based on Meta India Rates)

Category Price (INR) Description Example
Marketing ₹ 0.82 /24hrs बिज़नेस द्वारा भेजे गए ऑफ़र, कूपन या नए प्रोडक्ट की जानकारी। "Diwali Sale! Get 50% off on all items."
Utility ₹ 0.35 /24hrs ट्रांजेक्शन अपडेट, बिल, या ऑर्डर कन्फर्मेशन। (Marketing नहीं होना चाहिए) "Your order #123 has been shipped."
Authentication ₹ 0.35 /msg सिर्फ OTP या लॉगिन कोड। (24 घंटे का नियम लागू नहीं, per message charge) "1234 is your verification code."
Service ₹ 0.35 /24hrs जब कस्टमर मैसेज करता है और आप रिप्लाई करते हैं। "Customer: Price kya hai? You: ₹500 sir."

24-Hour Session Rule को समझें:

WhatsApp चार्ज "Per Message" नहीं, बल्कि "Per 24-Hour Session" लेता है।
उदाहरण: अगर आपने कस्टमर को एक Marketing मैसेज भेजा (₹0.82 चार्ज लगा), तो अगले 24 घंटे तक आप उसे जितने चाहें उतने Marketing Template भेज सकते हैं, कोई एक्स्ट्रा चार्ज नहीं लगेगा।

Developer Zone

Send Template Message

PHP cURL का उपयोग करके मैसेज भेजें।

  • Authorization: Bearer Token (Permanent)
  • Content-Type: application/json
<?php
$token = 'YOUR_PERMANENT_ACCESS_TOKEN';
$phone_id = 'YOUR_PHONE_NUMBER_ID';
$url = "https://graph.facebook.com/v19.0/$phone_id/messages";

$payload = [
    'messaging_product' => 'whatsapp',
    'to' => '919876543210',
    'type' => 'template',
    'template' => [
        'name' => 'hello_world',
        'language' => ['code' => 'en_US']
    ]
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

Receive Message (Webhook)

इस कोड को webhook.php फाइल में सेव करें।

यह कोड वेरिफिकेशन और मैसेज रिसीविंग दोनों संभालता है।
<?php
$verify_token = "MY_SECRET_TOKEN";

// 1. VERIFICATION (GET)
if (isset($_GET['hub_mode']) && $_GET['hub_mode'] === 'subscribe') {
    if ($_GET['hub_verify_token'] === $verify_token) {
        echo $_GET['hub_challenge'];
        exit;
    }
}

// 2. RECEIVE MESSAGE (POST)
$input = file_get_contents('php://input');
$data = json_decode($input, true);

if (isset($data['entry'][0]['changes'][0]['value']['messages'][0])) {
    $msg = $data['entry'][0]['changes'][0]['value']['messages'][0];
    $from = $msg['from']; // Sender Number
    $text = $msg['text']['body']; // Message Body
    
    // Save to DB logic here...
}
?>

Developer's Zone

आपकी वेबसाइट से WhatsApp मैसेज भेजने के लिए नीचे दिए गए कोड का उपयोग करें।

API Credentials कैसे पाएं?

  1. developers.facebook.com पर जाएं और App बनाएं।
  2. WhatsApp प्रोडक्ट ऐड करें।
  3. आपको Access Token मिलेगा।
  4. आपको Phone Number ID मिलेगी।
Endpoint URL:
https://graph.facebook.com/v17.0/PHONE_NUMBER_ID/messages

PHP Code Example (cURL)

<?php
// Configuration
$token = 'YOUR_ACCESS_TOKEN_HERE';
$phone_id = 'YOUR_PHONE_NUMBER_ID';
$version = 'v17.0';
$url = "https://graph.facebook.com/$version/$phone_id/messages";

// Payload Data (Template Message)
$data = [
    'messaging_product' => 'whatsapp',
    'to' => '919876543210', // Customer Number
    'type' => 'template',
    'template' => [
        'name' => 'hello_world',
        'language' => ['code' => 'en_US']
    ]
];

// Initialize cURL
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute
$response = curl_exec($ch);
curl_close($ch);

echo "Response: " . $response;
?>

Developer Documentation

Step-by-Step Integration Guide for Developers (PHP)

Access Token & App Setup

API कॉल करने के लिए आपको Token और ID की जरूरत होगी।

  1. Go to developers.facebook.com > My Apps.
  2. Create App > Select "Other" > Select "Business".
  3. Add Product > WhatsApp.
  4. महत्वपूर्ण: Temporary Token केवल 24 घंटे चलता है।
  5. Permanent Token के लिए: Business Settings में जाएं > Users > System Users > Add User (Admin) > Generate Token.
Credential Requirements:
1. Phone Number ID (App Dashboard से)
2. WhatsApp Business Account ID (App Dashboard से)
3. Access Token (System User से)

Sending a Template Message

Customer को पहला मैसेज हमेशा Template होना चाहिए। Free text मैसेज सेशन शुरू होने के बाद ही भेजें।


Common Errors:
  • Error 100: Invalid Parameter (चेक करें नंबर सही फॉर्मेट में है या नहीं)
  • Error 131026: Message Undeliverable (Template approve नहीं है)
PHP (cURL) - Send Template
<?php
$token = 'YOUR_PERMANENT_TOKEN';
$phone_id = 'YOUR_PHONE_NUMBER_ID';
$url = "https://graph.facebook.com/v19.0/$phone_id/messages";

$data = [
    'messaging_product' => 'whatsapp',
    'to' => '919876543210', // Country code ke sath
    'type' => 'template',
    'template' => [
        'name' => 'hello_world',
        'language' => ['code' => 'en_US']
    ]
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

Receiving Messages (Webhooks)

जब कोई कस्टमर रिप्लाई करता है, तो Meta आपके सर्वर पर डेटा भेजता है। इसके लिए Webhook Setup जरूरी है।

इस कोड को webhook.php नाम से सेव करें और Meta App Dashboard में URL सेट करें।

Verify Token: यह वो पासवर्ड है जो आप Meta डैशबोर्ड में सेट करेंगे और कोड में मैच करेंगे।
webhook.php - Verify & Receive
<?php
$hub_verify_token = "MY_SECRET_PASSWORD";

// 1. Verification Request (GET)
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    if ($_GET['hub_verify_token'] === $hub_verify_token) {
        echo $_GET['hub_challenge'];
        exit;
    }
}

// 2. Receive Message (POST)
$input = file_get_contents('php://input');
$data = json_decode($input, true);

if (isset($data['entry'][0]['changes'][0]['value']['messages'])) {
    $message = $data['entry'][0]['changes'][0]['value']['messages'][0];
    $phone_no = $message['from'];
    $text_body = $message['text']['body'];
    
    // Database me save karein ya reply karein
    file_put_contents('log.txt', "Received: $text_body from $phone_no", FILE_APPEND);
}
?>