thinkphp3.2对接短信验证码平台代码

    技术2022-07-17  66

    1.短信验证码平台

    云之讯短信验证码平台 注册账号实名验证,余额充值,获取对接密钥等信息 添加短信模板并审核通过

    2.发送验证码代码

    <?php namespace Home\Controller; use Think\Controller; //默认控制器 class SmsController extends Controller { //API请求地址 const BaseUrl = "https://open.ucpaas.com/ol/sms/"; //开发者账号ID。由32个英文字母和阿拉伯数字组成的开发者账号唯一标识符。 private $accountSid; //开发者账号TOKEN private $token; public function __construct($options) { if (is_array($options) && !empty($options)) { $this->accountSid = isset($options['accountsid']) ? $options['accountsid'] : ''; $this->token = isset($options['token']) ? $options['token'] : ''; } else { throw new Exception("非法参数"); } } private function getResult($url, $body = null, $method) { $data = $this->connection($url,$body,$method); if (isset($data) && !empty($data)) { $result = $data; } else { $result = '没有返回数据'; } return $result; } /** * @param $url 请求链接 * @param $body post数据 * @param $method post或get * @return mixed|string */ private function connection($url, $body,$method) { if (function_exists("curl_init")) { $header = array( 'Accept:application/json', 'Content-Type:application/json;charset=utf-8', ); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); if($method == 'post'){ curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$body); } curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $result = curl_exec($ch); curl_close($ch); } else { $opts = array(); $opts['http'] = array(); $headers = array( "method" => strtoupper($method), ); $headers[]= 'Accept:application/json'; $headers['header'] = array(); $headers['header'][]= 'Content-Type:application/json;charset=utf-8'; if(!empty($body)) { $headers['header'][]= 'Content-Length:'.strlen($body); $headers['content']= $body; } $opts['http'] = $headers; $result = file_get_contents($url, false, stream_context_create($opts)); } return $result; } /** 单条发送短信的function,适用于注册/找回密码/认证/操作提醒等单个用户单条短信的发送场景 * @param $appid 应用ID * @param $mobile 接收短信的手机号码 * @param $templateid 短信模板,可在后台短信产品→选择接入的应用→短信模板-模板ID,查看该模板ID * @param null $param 变量参数,多个参数使用英文逗号隔开(如:param=“a,b,c”) * @param $uid 用于贵司标识短信的参数,按需选填。 * @return mixed|string * @throws Exception */ public function SendSms($appid,$templateid,$param=null,$mobile,$uid){ $url = self::BaseUrl . 'sendsms'; $body_json = array( 'sid'=>$this->accountSid, 'token'=>$this->token, 'appid'=>$appid, 'templateid'=>$templateid, 'param'=>$param, 'mobile'=>$mobile, 'uid'=>$uid, ); $body = json_encode($body_json); $data = $this->getResult($url, $body,'post'); return $data; } /** 群发送短信的function,适用于运营/告警/批量通知等多用户的发送场景 * @param $appid 应用ID * @param $mobileList 接收短信的手机号码,多个号码将用英文逗号隔开,如“18088888888,15055555555,13100000000” * @param $templateid 短信模板,可在后台短信产品→选择接入的应用→短信模板-模板ID,查看该模板ID * @param null $param 变量参数,多个参数使用英文逗号隔开(如:param=“a,b,c”) * @param $uid 用于贵司标识短信的参数,按需选填。 * @return mixed|string * @throws Exception */ public function SendSms_Batch($appid,$templateid,$param=null,$mobileList,$uid){ $url = self::BaseUrl . 'sendsms_batch'; $body_json = array( 'sid'=>$this->accountSid, 'token'=>$this->token, 'appid'=>$appid, 'templateid'=>$templateid, 'param'=>$param, 'mobile'=>$mobileList, 'uid'=>$uid, ); $body = json_encode($body_json); $data = $this->getResult($url, $body,'post'); return $data; } }

    3.调用方法发送验证码

    public function sendMessage(){ $mobile = '13912345678'; $code = '123456'; $uid = '123456'; $options['accountsid']='16997d8eeb6******530d82cb28b21';//填写在开发者控制台首页上的Account Sid $options['token']='73d5d709dd31******1d3dc04fe39e8';//填写在开发者控制台首页上的Auth Token $ucpass = new \Home\Controller\SmsController($options);//初始化 $options必填 $appid = "e9d37263d4******540d26455e31e"; //应用的ID,可在开发者控制台内的短信产品下查看 $templateid = "5**75"; //可在后台短信产品→选择接入的应用→短信模板-模板ID,查看该模板ID $res = json_decode( $ucpass -> SendSms($appid,$templateid,$code ,$mobile,$uid));//$uid用户透传ID,随状态报告返回,自定义参数原样返回 dump($res); }
    Processed: 0.018, SQL: 9