API Verifikasi SMS dengan PHP

Version – 1.0

Pengaturan untuk Verifikasi SMS

  1. Buat Akun MessageCentral: Mendaftar untuk Pusat Pesan akun untuk memulai. Anda akan menerima ID pelanggan, yang akan Anda gunakan dalam aplikasi Anda.
  1. Untuk menginstal PHP, ikuti langkah-langkah ini:

Unduh PHP:

Buka halaman unduhan PHP di situs web PHP resmi: https://www.php.net/downloads.

Unduh versi terbaru PHP untuk sistem operasi Anda (Windows, macOS, atau Linux).

Instal PHP:

Jendela:

Jalankan penginstal PHP yang diunduh.

Ikuti petunjuk di layar untuk menginstal PHP. Anda mungkin perlu memilih direktori instalasi dan mengkonfigurasi beberapa opsi.

MacOS/Linux:

Ekstrak arsip PHP yang diunduh ke lokasi di sistem Anda.

Konfigurasikan PHP dengan mengedit file php.ini. Anda mungkin perlu mengatur ekstensi dan pengaturan lain berdasarkan kebutuhan Anda.

Verifikasi Instalasi:

Buka command prompt (pada Windows) atau terminal (di MacOS/Linux).

Jalankan perintah berikut untuk memverifikasi instalasi:

php --version

Ini harus mencetak versi PHP yang diinstal. Jika diinstal dengan benar, Anda akan melihat sesuatu seperti:

PHP x.x.x (cli) (built: xxxxxx) (...)

Atur Variabel Lingkungan PATH (Windows):

Klik kanan pada “PC ini” atau “My Computer” dan pilih “Properties”.

Klik “Pengaturan sistem lanjutan” dan kemudian “Variabel Lingkungan”.

Di bagian “Variabel sistem”, pilih variabel “Path” dan klik “Edit”.

Tambahkan path ke direktori instalasi PHP (misalnya, C:\PHP) jika belum ada.

Klik “OK” untuk menyimpan perubahan.

Atur Variabel Lingkungan PATH (macOS/Linux):

Buka terminal dan buka atau buat file.bash_profile di direktori home Anda.

Tambahkan baris berikut, ganti /path/to/php dengan path aktual ke

Instalasi PHP:

export PATH=$PATH:/path/to/php

Simpan file dan mulai ulang terminal agar perubahan berlaku.

Setelah mengikuti langkah-langkah ini, Anda harus menginstal PHP dan siap digunakan pada sistem Anda.

Langkah Integrasi

Proses ini melibatkan tiga langkah penting berikut:

  1. Rincian Pusat Pesan
  2. Menambahkan Detail Pusat Pesan dalam Kode
  3. Kirim Test Otp untuk verifikasi

a. Rincian Pusat Pesan

Setelah membuat akun di Pusat Pesan, Anda memerlukan detail berikut:

  • ID Pelanggan - Anda bisa mendapatkan ID pelanggan dari Message Central Home Console
  • Kredensi Login: Anda memerlukan email dan perlu membuat kata sandi.

b. Menambahkan Detail MessageCentral dalam Kode

Untuk menambahkan detail MessageCentral pada kode cari tahu definisi variabel dengan nama “CustomerID”, “email” dan “password”:

$customerID = "C-45539F39A4****";
$email = "abhishek******k68@gmail.com";
$password = "********";
$baseURL = "https://cpaas.messagecentral.com";
$authToken = null;
$verificationId = null;
$verificationStatus = null;

Sekarang, Anda perlu membuat file PHP bernama Program.php dan menambahkan kode PHP yang disediakan ke dalam file ini.

<?php

require __DIR__ . '/vendor/autoload.php';

use Http\Discovery\HttpClientDiscovery;
use Http\Discovery\Psr17FactoryDiscovery;
use Http\Discovery\Psr18ClientDiscovery;
use Psr\Http\Client\ClientExceptionInterface;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Psr\Http\Message\UriFactoryInterface;

$customerID = "C-45539F39A44****";
$email = "abhishek*****k68@gmail.com";
$password = "*****";
$baseURL = "https://cpaas.messagecentral.com";
$authToken = null;
$verificationId = null;
$verificationStatus = null;

function parseJSON($jsonString, $key)
{
    $jsonObject = json_decode($jsonString, true);
    return $jsonObject[$key] ?? null;
}

function generateAuthToken($httpClient, $requestFactory)
{
    global $password, $baseURL, $customerID, $email, $authToken;

    $base64String = base64_encode($password);
    $url = "{$baseURL}/auth/v1/authentication/token?country=IN&customerId={$customerID}&email={$email}&key={$base64String}&scope=NEW";
    $request = $requestFactory->createRequest('GET', $url);

    try {
        $response = $httpClient->sendRequest($request);
        $responseString = $response->getBody()->getContents();
        $authToken = parseJSON($responseString, "token");
        return $authToken;
    } catch (ClientExceptionInterface $e) {
        echo "Error generating auth token. Response code: {$e->getCode()}\n";
        return null;
    }
}

function sendOtp($httpClient, $requestFactory, $authToken, $countryCode, $mobileNumber)
{
    global $baseURL, $customerID, $verificationId;

    $url = "{$baseURL}/verification/v3/send?countryCode={$countryCode}&customerId={$customerID}&flowType=SMS&mobileNumber={$mobileNumber}";
    $request = $requestFactory->createRequest('POST', $url, ['authToken' => $authToken]);

    try {
        $response = $httpClient->sendRequest($request);
        $responseString = $response->getBody()->getContents();
        $verificationId = parseJSON(parseJSON($responseString, "data"), "verificationId");
        return $verificationId;
    } catch (ClientExceptionInterface $e) {
        echo "Error sending OTP. Response code: {$e->getCode()}\n";
        return null;
    }
}

function validateOtp($httpClient, $requestFactory, $authToken, $otpCode, $countryCode, $mobileNumber)
{
    global $baseURL, $customerID, $verificationId, $verificationStatus;

    $url = "{$baseURL}/verification/v3/validateOtp?countryCode={$countryCode}&mobileNumber={$mobileNumber}&verificationId={$verificationId}&customerId={$customerID}&code={$otpCode}";
    $request = $requestFactory->createRequest('GET', $url, ['authToken' => $authToken]);

    try {
        $response = $httpClient->sendRequest($request);
        $responseString = $response->getBody()->getContents();
        $verificationStatus = parseJSON($responseString, "verificationStatus");
        return $verificationStatus;
    } catch (ClientExceptionInterface $e) {
        echo "Error validating OTP. Response code: {$e->getCode()}\n";
        return null;
    }
}

$httpClient = Psr18ClientDiscovery::find();
$requestFactory = Psr17FactoryDiscovery::findRequestFactory();

$server = new \React\Http\Server(function (\Psr\Http\Message\ServerRequestInterface $request) use ($httpClient, $requestFactory) {
    global $customerID, $email, $password, $baseURL, $authToken, $verificationId, $verificationStatus;

    $path = $request->getUri()->getPath();
    $method = $request->getMethod();
    $query = $request->getQueryParams();
    $body = json_decode($request->getBody()->getContents(), true);

    if ($method === "POST" && $path === "/sendotp" && isset($body["countryCode"]) && isset($body["mobileNumber"])) {
        $countryCode = $body["countryCode"];
        $mobileNumber = $body["mobileNumber"];

        generateAuthToken($httpClient, $requestFactory);
        $verificationId = sendOtp($httpClient, $requestFactory, $authToken, $countryCode, $mobileNumber);

        return new \React\Http\Message\Response(
            200,
            ['Content-Type' => 'application/json'],
            json_encode(["message" => $verificationId ? "Otp sent! Successfully" : "Bad Request"])
        );
    } elseif ($method === "GET" && $path === "/validateotp" && isset($query["countryCode"]) && isset($query["mobileNumber"]) && isset($query["otpCode"])) {
        $countryCode = $query["countryCode"];
        $mobileNumber = $query["mobileNumber"];
        $otpCode = $query["otpCode"];

        generateAuthToken($httpClient, $requestFactory);
        $verificationStatus = validateOtp($httpClient, $requestFactory, $authToken, $otpCode, $countryCode, $mobileNumber);

        return new \React\Http\Message\Response(
            200,
            ['Content-Type' => 'application/json'],
            json_encode(["message" => $verificationStatus === "VERIFICATION_COMPLETED" ? "Otp verification Done!" : "Bad Request"])
        );
    } else {
        return new \React\Http\Message\Response(
            404,
            ['Content-Type' => 'text/plain'],
            "Not Found"
        );
    }
});

$socket = new \React\Socket\Server('127.0.0.1:3000');
$server->listen($socket);

echo "Server running at http://localhost:3000/\n";

$loop = \React\EventLoop\Factory::create();
$loop->run();

c. Kirim SMS Test Otp untuk Verifikasi

Jika Anda perlu menguji layanan tanpa kode, Anda dapat pergi ke verifikasi SMS gratis halaman di situs web Pusat Pesan.

Untuk memastikan integrasi berhasil, kirim SMS OTP uji sebagai berikut:

1.Untuk menjalankan kode PHP, Anda tidak perlu mengkompilasinya. PHP adalah bahasa yang ditafsirkan, sehingga Anda dapat menjalankan skrip PHP secara langsung.

Berikut adalah cara menjalankan skrip PHP:

Simpan kode PHP Anda dalam file dengan ekstensi.php, misalnya, my_script.php.

Buka terminal atau command prompt.

Arahkan ke direktori tempat file PHP Anda berada.

Jalankan skrip PHP menggunakan penerjemah PHP. Misalnya, untuk menjalankan my_script.php, Anda akan menggunakan perintah berikut:

php my_script.php

2. Buka Postman dan atur Metode Permintaan sebagai POST dan

URL sebagai http://localhost:3000/sendotp/<countryCode>/<phone_number> Inilah port 3000, itu default dan didefinisikan dalam kode, dapat diubah.

Contoh, Untuk Nomor Telepon India URL: http://localhost:3000/sendotp/91/123****123

  1. Gambar 1: Mengirim Otp
Image 1 : Sending Otp

3. Sekarang Anda memiliki otp di kotak masuk sms Anda. Coba validasi Otp API Anda sendiri untuk memvalidasi OTP.

Buka Postman dan atur Metode Permintaan sebagai GET dan

URL sebagai http://localhost:3000/validateOtp/<countryCode>/<phone_number>/<otp>

Inilah port 3000, itu default dan didefinisikan dalam kode, dapat diubah.

Contoh, Untuk Nomor Telepon IndiaURL: http://localhost:3000/validateOtp/91/123****123/ ****

  • Gambar 2: Memverifikasi Otp
Image 2: Verifying Otp

Share this article
verification code

Boost your sales and customer engagement with Message Central now!

Message Central Logo Blue
Close Icon
Tim Pusat Pesan
Halo
Bagaimana kami bisa membantu Anda hari ini?
WhatsApp Icon
Mulai Obrolan Whatsapp
Obrolan WhatsApp
WhatsApp Icon