Laravel引入第三方短信平台,实现发现邮箱
一、创蓝短信平台:https://zz.253.com/
SDK下载:PHP https://github.com/cl253/chuanglan253-php
ChuanglanSmsApi.php
<?php namespace App\Lib; header("Content-type:text/html; charset=UTF-8"); /* * * 类名:ChuanglanSmsApi * 功能:创蓝接口请求类 * 详细:构造创蓝短信接口请求,获取远程HTTP数据 * 版本:1.3 * 日期:2017-04-12 * 说明: * 以下代码只是为了方便客户测试而提供的样例代码,客户可以根据自己网站的需要,按照技术文档自行编写,并非一定要使用该代码。 * 该代码仅供学习和研究创蓝接口使用,只是提供一个参考。 */ class ChuanglanSmsApi { //参数的配置 请登录zz.253.com 获取以下API信息 ↓↓↓↓↓↓↓ const API_SEND_URL='http://intapi.253.com/send/json'; //创蓝发送短信接口URL const API_VARIABLE_URL = 'http://XXX/msg/send/json';//创蓝变量短信接口URL const API_BALANCE_QUERY_URL= 'http://XXX/msg/balance/json';//创蓝短信余额查询接口URL const API_ACCOUNT= 'xxxxxx'; // 创蓝API账号 const API_PASSWORD= 'xxxxxxxxxxx';// 创蓝API密码 //参数的配置 请登录zz.253.com 获取以下API信息 ↓↓↓↓↓↓↓ /** * 发送短信 * * @param string $mobile 手机号码 * @param string $msg 短信内容 * @param string $needstatus 是否需要状态报告 */ public function sendSMS( $mobile, $msg, $needstatus = 'true') { //创蓝接口参数 $postArr = array ( 'account' => self::API_ACCOUNT, 'password' => self::API_PASSWORD, 'msg' => urlencode($msg), 'mobile' => $mobile, 'report' => $needstatus, ); $result = $this->curlPost( self::API_SEND_URL, $postArr); return $result; } /** * 发送变量短信 * * @param string $msg 短信内容 * @param string $params 最多不能超过1000个参数组 */ public function sendVariableSMS( $msg, $params) { //创蓝接口参数 $postArr = array ( 'account' => self::API_ACCOUNT, 'password' => self::API_PASSWORD, 'msg' => $msg, 'params' => $params, 'report' => 'true' ); $result = $this->curlPost( self::API_VARIABLE_URL, $postArr); return $result; } /** * 查询额度 * * 查询地址 */ public function queryBalance() { //查询参数 $postArr = array ( 'account' => self::API_ACCOUNT, 'password' => self::API_PASSWORD, ); $result = $this->curlPost(self::API_BALANCE_QUERY_URL, $postArr); return $result; } /** * 通过CURL发送HTTP请求 * @param string $url //请求URL * @param array $postFields //请求参数 * @return mixed * */ private function curlPost($url,$postFields){ $postFields = json_encode($postFields); $ch = curl_init (); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8' //json版本需要填写 Content-Type: application/json; ) ); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); //若果报错 name lookup timed out 报错时添加这一行代码 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $ch, CURLOPT_POST, 1 ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $postFields); curl_setopt( $ch, CURLOPT_TIMEOUT,60); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0); $ret = curl_exec ( $ch ); if (false == $ret) { $result = curl_error( $ch); } else { $rsp = curl_getinfo( $ch, CURLINFO_HTTP_CODE); if (200 != $rsp) { $result = "请求状态 ". $rsp . " " . curl_error($ch); } else { $result = $ret; } } curl_close ( $ch ); return $result; } }
把创蓝短信 sdk 放到 App下的 Lib 目录下。
<?php namespace App\Http\Controllers; use App\Lib\ChuanglanSmsApi; class UserController extends BaseController { /** * @desc 获取手机号验证码 interface * @date 2020/5/18 * */ public function sms_code(Request $request) { $phone = $request->post('phone'); /*创蓝短信start*/ //发送创蓝短信 $clapi = new ChuanglanSmsApi(); $area_code= $request->post('area_code') ? $request->post('area_code') : '86'; //区号 $code = randomkeys(); $expireTime = 5*60; $to=$phone; //设置您要发送的内容:其中“【】”中括号为运营商签名符号,多签名内容前置添加提交 $result = $clapi->sendSMS($area_code.$to,'【创蓝】您好!验证码是:'.$code); if(!is_null(json_decode($result))){ $output=json_decode($result,true); if(isset($output['code']) && $output['code']=='0'){ //TODO 添加成功处理逻辑 OutJson::outJsonResult(Hint::SUCCESS, []); }else{ OutJson::outJsonResult(Hint::ERROR, []); } }else{ //TODO 添加错误处理逻辑 OutJson::outJsonResult(Hint::ERROR, []); } /*创蓝短信start*/ } } ?>
文章评论(0)