阿里大于短信接口整合TP5

将自己下载下来的短信库放入extend下(阿里大于:https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.2.8.2cc53a76oPizZF)
<?php
namespace auth;

require_once EXTEND_PATH . 'Aliyun/DayuSMS.php';

class Alisms
{
public static $SMS = null;

const SignName = '自己的签名';
const AccessKeyId = '填写自己申请的';
const AccessKeySecret = '填写自己申请的';


/**
* 系统验证码
* @param $phoneNumbers
* @param null $code
* @return bool
*/
public static function sendCodeSms($phoneNumbers, $code = null)
{
return self::sendSms($phoneNumbers,'SMS_143740225', array('code' => $code));
}

/**
* 店主订单通知
* @param $phoneNumbers
* @return bool
*/
// public static function sendOrderNotifi($phoneNumbers)
// {
// return self::sendSms($phoneNumbers, 'SMS_109445028');
// }

/**
* 阿里大于短信接口
* @param $phoneNumbers
* @param null $templateCode
* @param array $data
* @return bool
*/
private static function sendSms($phoneNumbers, $templateCode = null, $data = array())
{
if(empty($phoneNumbers) || empty($templateCode)) {
Log::fatal('DayuSMS::sendSms $phoneNumbers OR $templateCode Is Empty');
return false;
}
if (empty(self::$SMS)) {
self::$SMS = new \DayuSMS(self::AccessKeyId, self::AccessKeySecret);
}
$acsResponse = self::$SMS->sendSms(self::SignName,$templateCode, $phoneNumbers, $data);
// dump($acsResponse);die();
// Log::debug(json_encode($acsResponse));
// return self::errCode($acsResponse);
$result = json_decode(json_encode($acsResponse),true);
return $result;
}

private static function errCode($ret)
{
if ($ret->Code == 'OK') {
return true;
} else {
return false;
}
}
}

<?php
/**
* Created by PhpStorm.
* User: ydylove
* Date: 2017/8/18
* Time: 16:50
*/


ini_set("display_errors", "on");

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

// 加载区域结点配置
Config::load();
$config = \config('alidayusms'); //获取配置信息

/**
* Class SmsDemo
*
* @property \Aliyun\Core\DefaultAcsClient acsClient
*/
class DayuSMS
{

/**
* 构造器
*
* @param string $accessKeyId 必填,AccessKeyId
* @param string $accessKeySecret 必填,AccessKeySecret
*/
public function __construct($accessKeyId, $accessKeySecret)
{

// 短信API产品名
$product = "Dysmsapi";

// 短信API产品域名
$domain = "dysmsapi.aliyuncs.com";

// 暂时不支持多Region
$region = "cn-hangzhou";

// 服务结点
$endPointName = "cn-hangzhou";

// 初始化用户Profile实例
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);

// 增加服务结点
DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);

// 初始化AcsClient用于发起请求
$this->acsClient = new DefaultAcsClient($profile);
}

/**
* 发送短信范例
*
* @param string $signName <p>
* 必填, 短信签名,应严格"签名名称"填写,参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/sign">短信签名页</a>
* </p>
* @param string $templateCode <p>
* 必填, 短信模板Code,应严格按"模板CODE"填写, 参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/template">短信模板页</a>
* (e.g. SMS_0001)
* </p>
* @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901)
* @param array|null $templateParam <p>
* 选填, 假如模板中存在变量需要替换则为必填项 (e.g. Array("code"=>"12345", "product"=>"阿里通信"))
* </p>
* @param string|null $outId [optional] 选填, 发送短信流水号 (e.g. 1234)
* @return stdClass
*/
public function sendSms($signName, $templateCode, $phoneNumbers, $templateParam = null, $outId = null) {

// 初始化SendSmsRequest实例用于设置发送短信的参数
$request = new SendSmsRequest();

// 必填,设置雉短信接收号码
$request->setPhoneNumbers($phoneNumbers);

// 必填,设置签名名称
$request->setSignName($signName);

// 必填,设置模板CODE
$request->setTemplateCode($templateCode);

// 可选,设置模板参数
if($templateParam) {
$request->setTemplateParam(json_encode($templateParam));
}

// 可选,设置流水号
if($outId) {
$request->setOutId($outId);
}

// 发起访问请求
$acsResponse = $this->acsClient->getAcsResponse($request);

// 打印请求结果
// var_dump($acsResponse);

return $acsResponse;

}

/**
* 查询短信发送情况范例
*
* @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901)
* @param string $sendDate 必填,短信发送日期,格式Ymd,支持近30天记录查询 (e.g. 20170710)
* @param int $pageSize 必填,分页大小
* @param int $currentPage 必填,当前页码
* @param string $bizId 选填,短信发送流水号 (e.g. abc123)
* @return stdClass
*/
public function queryDetails($phoneNumbers, $sendDate, $pageSize = 10, $currentPage = 1, $bizId=null) {

// 初始化QuerySendDetailsRequest实例用于设置短信查询的参数
$request = new QuerySendDetailsRequest();

// 必填,短信接收号码
$request->setPhoneNumber($phoneNumbers);

// 选填,短信发送流水号
$request->setBizId($bizId);

// 必填,短信发送日期,支持近30天记录查询,格式Ymd
$request->setSendDate($sendDate);

// 必填,分页大小
$request->setPageSize($pageSize);

// 必填,当前页码
$request->setCurrentPage($currentPage);

// 发起访问请求
$acsResponse = $this->acsClient->getAcsResponse($request);

// 打印请求结果
// var_dump($acsResponse);

return $acsResponse;
}

}


在controller控制器调用接口
public function sms()
{
$code = Session::get('code');
$phone_number = $this->request->param('useProPhone');
// dump($phone_number);
if(!$phone_number){
return success(['code'=>0,'message'=>'请输入手机号','data'=>'']);
}
//创建模型
// $user = new UserModel;
//判断用户是否已注册
// $res = Db::name('user_profile')
// ->where('useProPhone',$phone_number)
// ->find();
$arr = [];
$useProPhone = input('param.useProPhone');
$res = Db::name('user_profile')
->where('useProPhone', $phone_number)
->find();
// dump($res);
if($res){
return success(['code'=>5,'message'=>"该号码已经注册",'data'=>'']);
}

//获取随机6位数字
// $randString = Message::randString();
$randString = rand(10000,999999);
// dump($randString);
// 调用示例:
//设置程序执行时间,参数为0,表示永久执行,直到程序结束
set_time_limit(0);
//向客户端发送原始的http请求
header('Content-Type: text/plain; charset=utf-8');

$response = new Alisms();
$response->sendCodeSms(
// '$phone_number','$code'
"$phone_number",
"$randString"
);
// dump($response);die();
// $response = DayuSMS::sendSms(
// "拾久应用", // 短信签名
// "SMS_143740225", // 短信模板编号
// "$phone_number", // 短信接收者
// Array( // 短信模板中字段的值
// "code"=>"$randString"
// // "product"=>"dsd"
// ),
// "123" // 流水号,选填
// );
cache($phone_number,$randString);

if($response){
return success(['code'=>1,'message'=>'发送成功','data'=>'']);
}else{
return success(['code'=>2,'message'=>'发送失败','data'=>'']);
}
}



猜你喜欢

转载自www.cnblogs.com/swmin/p/9585198.html