阿里云短信发送接口开发
阿里云短信接口开发
阿里云短信接口开发
1 开发准备... 2
1.1 签名名称... 2
1.2 模版CODE. 2
1.3 获取阿里云访问密钥... 2
1.4 下载PHP开发demo. 3
2 部署文件(最难最关键的一步) 4
2.1 复制文件到项目中... 4
2.2 具体调用代码... 5
2.3 注意事项... 19
2.3.1 短信模板变量的查看,和在调用短信发送的接口要一致,否则报错缺少模板变量... 19
2.3.2 更改模板,需更改对应的模板变量... 20
2.3.3 短信签名的查看... 20
1 开发准备
1.1 签名名称
1.2 模版CODE
1.3 获取阿里云访问密钥
1.4 下载PHP开发demo
2 部署文件(最难最关键的一步)
2.1 复制文件到项目中
把这个文件复制到你的项目中,具体放在那里,根据你调用的文件来放在。
2.2 具体调用代码
1 <?php 2 // 阿里云短信发送接口 3 use Aliyun\Core\Config; 4 use Aliyun\Core\Profile\DefaultProfile; 5 use Aliyun\Core\DefaultAcsClient; 6 use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; 7 use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest; 8 9 if($act == 'getVrifyCode'){ 10 //接收参数 11 $phone = isset($_REQUEST['phone']) ? $_REQUEST['phone'] : ''; 12 13 if($phone){ 14 //检测电话号码 15 if (!is_numeric($phone) || ! $function->validate_phone($phone)) 16 { 17 $result = array( 18 'code' => 200, 19 'msg' => '请输入正确的手机号', 20 'success' => 0, 21 'data' => array(), 22 ); 23 //返回数据 24 echo json_encode($result); 25 exit; 26 } 27 28 //开始发送短信 29 30 ini_set("display_errors", "on"); 31 32 require_once dirname(__DIR__) . '/api_sdk/vendor/autoload.php'; 33 34 35 // 加载区域结点配置 36 Config::load(); 37 38 /** 39 * Class SmsDemo 40 * 41 * @property \Aliyun\Core\DefaultAcsClient acsClient 42 */ 43 class SmsDemo 44 { 45 46 /** 47 * 构造器 48 * 49 * @param string $accessKeyId 必填,AccessKeyId 50 * @param string $accessKeySecret 必填,AccessKeySecret 51 */ 52 public function __construct($accessKeyId, $accessKeySecret) 53 { 54 55 // 短信API产品名 56 $product = "Dysmsapi"; 57 58 // 短信API产品域名 59 $domain = "dysmsapi.aliyuncs.com"; 60 61 // 暂时不支持多Region 62 $region = "cn-hangzhou"; 63 64 // 服务结点 65 $endPointName = "cn-hangzhou"; 66 67 // 初始化用户Profile实例 68 $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret); 69 70 // 增加服务结点 71 DefaultProfile::addEndpoint($endPointName, $region, $product, $domain); 72 73 // 初始化AcsClient用于发起请求 74 $this->acsClient = new DefaultAcsClient($profile); 75 } 76 77 /** 78 * 发送短信范例 79 * 80 * @param string $signName <p> 81 * 必填, 短信签名,应严格"签名名称"填写,参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/sign">短信签名页</a> 82 * </p> 83 * @param string $templateCode <p> 84 * 必填, 短信模板Code,应严格按"模板CODE"填写, 参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/template">短信模板页</a> 85 * (e.g. SMS_0001) 86 * </p> 87 * @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901) 88 * @param array|null $templateParam <p> 89 * 选填, 假如模板中存在变量需要替换则为必填项 (e.g. Array("code"=>"12345", "product"=>"阿里通信")) 90 * </p> 91 * @param string|null $outId [optional] 选填, 发送短信流水号 (e.g. 1234) 92 * @return stdClass 93 */ 94 public function sendSms($signName, $templateCode, $phoneNumbers, $templateParam = null, $outId = null) { 95 96 // 初始化SendSmsRequest实例用于设置发送短信的参数 97 $request = new SendSmsRequest(); 98 99 // 必填,设置雉短信接收号码 100 $request->setPhoneNumbers($phoneNumbers); 101 102 // 必填,设置签名名称 103 $request->setSignName($signName); 104 105 // 必填,设置模板CODE 106 $request->setTemplateCode($templateCode); 107 108 // 可选,设置模板参数 109 if($templateParam) { 110 $request->setTemplateParam(json_encode($templateParam)); 111 } 112 113 // 可选,设置流水号 114 if($outId) { 115 $request->setOutId($outId); 116 } 117 118 // 发起访问请求 119 $acsResponse = $this->acsClient->getAcsResponse($request); 120 121 // 打印请求结果 122 // var_dump($acsResponse); 123 124 return $acsResponse; 125 126 } 127 128 /** 129 * 查询短信发送情况范例 130 * 131 * @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901) 132 * @param string $sendDate 必填,短信发送日期,格式Ymd,支持近30天记录查询 (e.g. 20170710) 133 * @param int $pageSize 必填,分页大小 134 * @param int $currentPage 必填,当前页码 135 * @param string $bizId 选填,短信发送流水号 (e.g. abc123) 136 * @return stdClass 137 */ 138 public function queryDetails($phoneNumbers, $sendDate, $pageSize = 10, $currentPage = 1, $bizId=null) { 139 140 // 初始化QuerySendDetailsRequest实例用于设置短信查询的参数 141 $request = new QuerySendDetailsRequest(); 142 143 // 必填,短信接收号码 144 $request->setPhoneNumber($phoneNumbers); 145 146 // 选填,短信发送流水号 147 $request->setBizId($bizId); 148 149 // 必填,短信发送日期,支持近30天记录查询,格式Ymd 150 $request->setSendDate($sendDate); 151 152 // 必填,分页大小 153 $request->setPageSize($pageSize); 154 155 // 必填,当前页码 156 $request->setCurrentPage($currentPage); 157 158 // 发起访问请求 159 $acsResponse = $this->acsClient->getAcsResponse($request); 160 161 // 打印请求结果 162 // var_dump($acsResponse); 163 164 return $acsResponse; 165 } 166 167 } 168 169 // 调用示例: 170 171 header('Content-Type: text/plain; charset=utf-8'); 172 173 174 //此处需要替换成自己的AK信息 175 $accessKeyId = "LTAxfdsdfdsWb";//参考本文档步骤2 176 $accessKeySecret = "TJOENXdsafasdfasdfasdfaA3LZ";//参考本文档步骤2 177 178 179 $demo = new SmsDemo( 180 "LTAsadfsadfasZSokWb", 181 "TJOENsadfsadfsadfgrtbFjgA3LZ" 182 ); 183 184 // echo "SmsDemo::sendSms\n"; 185 186 $generate_code=rand(1000, 9999); 187 188 $customer ='--短信测试专用--'; 189 注意:模板变量,具体是根据,短信类型里面确定的,比如 'code'=>$generate_code, 是来发送短信验证码的,每一个都不一样。 190 $response = $demo->sendSms( 191 "阿里云短信测试专用", // 短信签名 192 "SMS_100960133", // 短信模板编号 193 "$phone", // 短信接收者 194 Array( // 短信模板中字段的值 195 'customer'=>$customer, 196 // 'code'=>$generate_code, 197 198 ) 199 ); 200 201 $return_code = $response->Code; 202 $return_Message = $response->Message; 203 204 if($return_code == 'OK' && $return_Message == 'OK'){ 205 206 $result = array( 207 'code' => 200, 208 'msg' => '发送短信验证码成功', 209 'success' => 1, 210 'data' => array('code'=>$generate_code), 211 ); 212 //返回数据 213 echo json_encode($result); 214 exit; 215 }else{ 216 217 $result = array( 218 'code' => 200, 219 'msg' => '发送短信验证码失败', 220 'success' => 0, 221 'data' => array(), 222 ); 223 //返回数据 224 echo json_encode($result); 225 exit; 226 } 227 228 229 // 230 // echo "SmsDemo::queryDetails\n"; 231 // $response = $demo->queryDetails( 232 // "12345678901", // phoneNumbers 电话号码 233 // "20170718", // sendDate 发送时间 234 // 10, // pageSize 分页大小 235 // 1 // currentPage 当前页码 236 // // "abcd" // bizId 短信发送流水号,选填 237 // ); 238 // 239 240 241 242 }else{ 243 //电话号码必须 244 245 $result = array( 246 'code' => 200, 247 'msg' => '请输入电话号码', 248 'success' => 0, 249 'data' => array(), 250 ); 251 //返回数据 252 echo json_encode($result); 253 exit; 254 255 } 256 257 }
2.3.1 短信模板变量的查看,和在调用短信发送的接口要一致,否则报错缺少模板变量2.3 注意事项
此处就是code 调用是就填写code
代码如下:
$response = $demo->sendSms(
"阿里云短信测试专用", // 短信签名
"SMS_100960133", // 短信模板编号
"$phone", // 短信接收者
Array( // 短信模板中字段的值
'code'=>$generate_code,
)
);
2.3.2 更改模板,需更改对应的模板变量
$response = $demo->sendSms(
"阿里云短信测试专用", // 短信签名
"SMS_100960133", // 短信模板编号
"$phone", // 短信接收者
Array( // 短信模板中字段的值
'customer'=>$customer,
)
);
2.3.3 短信签名的查看
此处的短信签名就是数组中的短信签名: "阿里云短信测试专用", // 短信签名
上面代码来自于互联网,自己修改后的。感谢无私奉献的IT开发者。西二旗老码农!
传播知识,分享快乐!
作者:IT_BULL
出处:http://www.cnblogs.com/itBulls/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
博客园-博客园。