در نرم افزار ها و سیستم های تحت وب که با زبان php برنامه نویسی شده اند همواره ارسال پیامک یکی از چالش های آن محسوب می شود. در این مقاله بصورت کامل به سوالات برنامه نویسان در رابطه با ارسال پیامک در php پاسخ خواهیم داد و نمونه کد آماده ای را ارائه خواهیم داد.
وب سرویس ارسال پیامک سازگار با زبان PHP
سامانه پیامکی پیام رسان با ارائه وب سرویس ارسال پیامک بصورت رایگان ، امکان اتصال هر نرم افزار و وبسایتی را به پنل اس ام اس را امکان پذیر کرده است.
کسب و کار داری و میخوای تبلیغات پیامکی انبوه داشته باشی؟!
برای انکار ابتدا باید در پیام رسان ثبت نام کنید و سپس از طریق منوی برنامه نویسان اقدام به فعالسازی وب سرویس پیامکی خود نمایید.
وب سرویس پیام رسان بصورت REST API می باشد و به شما یک کلید دسترسی یا همان API KEY جدا اختصاص داده می شود.
نکته اول : شما در هر استفاده از متد هایی که در ادامه معرفی خواهند شد ، به این Apikey نیاز خواهید داشت. در نتیجه می توانید آن را بصورت یک متغیر سراسری یا متغیر ثابت در ابتدای برنامه خود تعریف کنید.
<?php
$ApiKey = "YOUR API KEY";
$Sender = "YOUR SMS SENDER NUMBER";
$BaseUrl = "http://api.sms-webservice.com/api/V3/";
?>
نکته دوم : در هنگام استفاده از این نمونه کد ها حتما حواستان به این نکته باشد که اسم متغیرهایی که در این نمونه کد وجود دارد با متغیر های کد خودتان مغایرت وجود نداشته باشد .
ارسال پیامک کد تایید با php ( بر اساس پترن OTP )
یکی از بهترین روشهای احراز هویت کاربران ارسال پیامک کد تایید برای آنهاست . در این روش شما باید در کد های خود یک عدد 4 یا 6 رقمی تولید کنید و از طریق نمونه کد برنامه نویسی آن را برای وب سرویس پیام رسان ارسال کنید .
سپس کاربر پس از آنکه کد را دریافت کرد ، مقدار کد تایید را در input مربوطه وارد می کند و شما باید اقدام به اعتبار سنجی آن نمایید .
جهت ارسال پیامک بر اساس پترن با زبان php می توانید از نمونه کد زیر استفاده کنید .
<?php
function SendTokenSingle($TemplateKey , $Destination, $param1 , $param2 , $param3){
$params = array(
'ApiKey' => $GLOBALS["ApiKey"],
'TemplateKey' => $TemplateKey,
'Destination' => $Destination,
'p1' => $param1,
'p2' => $param2,
'p3' => $param3,
);
$url = $GLOBALS["BaseUrl"].'SendTokenSingle?' . http_build_query($params);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
?>
ارسال یک متن به چند شماره با php
چنانچه قصد داشته باشید تا در سیستم خود یک متن پیامک را برای چندین شماره و بصورت پیامک انبوه ارسال نمایید باید از نمونه کد زیر استفاده نمایید .
<?php
function Send($recipients , $text){
$params = array(
'ApiKey' =>$GLOBALS["ApiKey"] ,
'Text' => urlencode($text),
'Sender' => $GLOBALS['Sender'],
'Recipients' => $recipients,
);
$url = $GLOBALS["BaseUrl"].'Send?' . http_build_query($params);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
?>
البته توجه داشته باشید این متد بصورت GET است و در یک بار فراخوانی می توانید از 1 پیامک تا حداکثر 99 شماره پیامک ارسال نمایید . در صورت نیاز باید مجددا متد را برای شماره های اضافی فراخوانی نمایید .
اگر میخواهید همین کار را بصورت POST ارسال کنید از نمونه کد زیر استفاده کنید .
<?php
function SendBulk($Destination, $UserTraceId , $Text){
class Recipients{
public $Destination;
public $UserTraceId;
}
if(is_array($Destination) && is_array($UserTraceId)){
$Receptor= [];
for($i=0; $i < count($Destination) ; $i++){
$Recipient = new Recipients();
$Recipient->Destination = $Destination[$i];
$Recipient->UserTraceId = $UserTraceId[$i];
array_push($Receptor , $Recipient);
}
}else{
$Recipient = new Recipients();
$Recipient->Destination = $Destination;
$Recipient->UserTraceId = $UserTraceId;
$Receptor = array($Recipient);
}
$data = array(
'ApiKey'=>$GLOBALS["ApiKey"],
'Text'=> $Text,
'Sender' => $GLOBALS['Sender'],
'Recipients'=>$Receptor
);
$data_json = json_encode($data);
$url = $GLOBALS["BaseUrl"].'SendBulk';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
?>
دریافت وضعیت پیامک های ارسال شده با php
خب تا اینجای مقاله با چندین متد آشنا شدیم که به شما کمک می کند تا با زبان برنامه نویسی php اقدام به ارسال پیامک OTP و یا پیامک تکی گروهی نمایید .
حال اگر بخواهید با استفاده از زبان پی اچ پی، وضعیت پیام ارسالی داشته باشیم ، نیاز است از این متد استفاده نماییم . در یک درخواست می توان از وضعیت بیش از یک پیام نیز استعلام گرفت .
<?php
function StatusById($Ids){
$data = array(
'ApiKey'=>$GLOBALS["ApiKey"],
'Ids'=> $Ids
);
$data_json = json_encode($data);
$url = $GLOBALS["BaseUrl"].'StatusById';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
?>
دریافت اعتبار پنل پیامکی با PHP
یکی از امکانات مورد نیاز در پیاده سازی افزونه های وردپرسی ای که با زبان php پیاده سازی می شوند ، امکان مشاهده اعتبار پنل اس ام اس بصورت زنده می باشد .
همچنین در وبسایت هایی که بصورت اختصاصی پیاده سازی می شوند نیز ای قابلیت جذاب است .
برای این کار کافی است تا از متد زیر استفاده نمایید .
<?php
function AccountInfo(){
$data = array(
'ApiKey'=>$GLOBALS["ApiKey"]
);
$data_json = json_encode($data);
$url =$GLOBALS["BaseUrl"].'AccountInfo';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
?>