TIL

카카오 알림톡 발송하기 - PHP 버전

개발따라김양 2024. 2. 28. 09:06

1. 카카오 알림톡은 보내는 이와 카카오톡 친구가 아니여도 휴대폰 번호만 알아도 발송이 가능합니다.

2. 사전에 비지니스 계정으로 등록이 필요합니다.

<?php
$base_url = "stg-user.bizmsg.kakaoenterprise.com"; //스테이징 - 일반 / 변경 필요
$clientID = ""; //변경 필요
$clientSecret = ""; //변경 필요

$curl = curl_init();

//1단계 OAuth 2.0 인증 -> 토큰 발급
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://$base_url/v2/oauth/token",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "grant_type=client_credentials",
    CURLOPT_HTTPHEADER => array(
        "Content-Type: application/x-www-form-urlencoded",
        "Authorization: Basic " . base64_encode("$clientID $clientSecret")
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
     echo "cURL Error #:" . $err;
} else if ($users) {
     echo $response;
    
    $responseData = json_decode($response, true);
    $accessToken = $responseData['access_token'];
    $senderKey = ""; //변경 필요

    foreach ($users as $item) {
    
        //2단계 카카오톡 메시지 발송
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => "https://$base_url/v2/send/kakao",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => false,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => json_encode(array(
                "message_type" => "AT",
                "sender_key" => $senderKey,
                "cid" => "1234",
                "template_code" => "TEMPLATE_001",
                "phone_number" => 82 . $item['phone'],
                "sender_no" => "0100000000",
                "message" => "알림톡 메시지 테스트",
                "fall_back_yn" => false
            )),
            CURLOPT_HTTPHEADER => array(
                "Content-Type: application/json",
                "Authorization: Bearer $access_token"
            ),
        ));
        

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);

        if ($err) {
            echo "cURL Error #:" . $err;
        } else {
            echo $response;
            $responseData = json_decode($response, true);
            $code = $responseData['code']; //200 성공
        }
    }
}
?>