视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
阿里云PHP SMS短信服务验证码发送方法详解
2020-11-02 18:28:05 责编:小采
文档


开通SMS服务

首先去这个网站开通阿里云的SMS短信服务:https://www.aliyun.com/product/sms?spm=5176.8142029.388261.295.vU5T5g

相关学习推荐:php编程(视频)

创建签名、模板

要使用短信服务器需要先创建签名和模板,并提交给阿里云审核通过才可以正常使用短信服务。

创建签名

创建签名的时候注意一下签名名称,其他的话就不累赘了。

记住签名名称

现在请记住你创建的签名名称,一会在代码中需要使用。

创建模板

创建模板也很简单,阿里云已经把要如何填写写的很清楚了。

查看并记住模板CODE

返回你的控制台,当你的模板审核通过时这就会出现大于0的数。

点击这个数,会进入模板管理面板就能看到你的模板CODE了,请记住他。

创建并记住KeyId和KeySecret

到控制台,把鼠标放到右上角你的用户名的位置会出现一个accessKeySecret点进去就可以创建KeyId和KeySecret了,如果他提醒你用RAM安全什么的,你看你要不要给你的员工分配权限,如果要的话就用RAM,否则就直接点击继续使用就行了。

下载阿里云短信服务器PHP-SDK

官方下载地址:https://help.aliyun.com/document_detail/55359.html?spm=5176.8195934.507901.12.b1ngGK
本教程使用SDK下载地址:http://pan.baidu.com/s/1bpF5B8z

密匙:pult

创建PHP-SMS项目

创建代码文件

创建你的代码文件,并把这个文件放在刚才下载的SDK文件夹中的api_sdk的aliyun-php-sdk-core目录下,并把一下代码写入代码文件。

aliyun-php-sdk-core目录里包含了SMS短信服务的各种模块,所以必须得放在这里面才能使用服务

<?php
 include 'Config.php';
 include_once 'Request/V20170525/SendSmsRequest.php';
 include_once 'Request/V20170525/QuerySendDetailsRequest.php';
 $accessKeyId = "LTAIvAaNs61JeBiN";
//阿里云KeyId 
 $accessKeySecret = "Y3H7durYJ6GIqmJJrsdbJwPi6E8O8M";
//阿里云KeySecret
 //短信API产品名
 $product = "Dysmsapi";
//照写就行了
 //短信API产品域名
 $domain = "dysmsapi.aliyuncs.com";
//照着写就行了
 //暂时不支持多Region
 $region = "cn-hangzhou";
//照着写就行了
 //初始化访问的acsCleint
 $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
 DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
 $acsClient= new DefaultAcsClient($profile);
 $request = new SendSmsRequest;
 //必填-短信接收号码。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
 $request->setPhoneNumbers("1234567");
//这里填你要发送的电话号码
 //必填-短信签名
 $request->setSignName("xx项目");
//这里就是刚才让你记住的项目签名
 //必填-短信模板Code
 $request->setTemplateCode("SMS_123456");
//这里就是模板CODE
 //选填-假如模板中存在变量需要替换则为必填(JSON格式)
 $request->setTemplateParam("{"name":"郭涛","number":"316"}");
 //选填-发送短信流水号
 $request->setOutId("1234");//照填就行了
 //发起访问请求
 $acsResponse = $acsClient->getAcsResponse($request);
 var_dump($acsResponse);//返回结果

移入Requset

还是在下载的SDK文件夹中的api_sdk目录下,有一个交Dysmsapi的文件夹,打开这个文件夹就会看到一个叫Request的文件夹,把这个Reques。的件夹复制粘贴到aliyun-php-sdk-core里面。说实在的我搞不清阿里云这个为什么要这样分开装SDK,可能是我使用的姿势不对吧,如果有大神搞得清,还劳烦赐教小弟,好人一生平安。
移入后,打开RequestV20170525目录里有一个SendSmsRequest.php的源文件。请屏蔽第一行的空间命名。 也就是这一行namespace DysmsapiReqestV20170525;最后效果如下

<?php
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
//namespace DysmsapiRequestV20170525;//就是屏蔽这一行代码!!!!
class SendSmsRequest extends RpcAcsRequest
{
 function __construct()
 {
 parent::__construct("Dysmsapi", "2017-05-25", "SendSms");
 }
 private $outId;
 private $signName;
 private $ownerId;
 private $resourceOwnerId;
 private $templateCode;
 private $phoneNumbers;
 private $resourceOwnerAccount;
 private $templateParam;
 public function getOutId() {
 return $this->outId;
 }
 public function setOutId($outId) {
 $this->outId = $outId;
 $this->queryParameters["OutId"]=$outId;
 }
 public function getSignName() {
 return $this->signName;
 }
 public function setSignName($signName) {
 $this->signName = $signName;
 $this->queryParameters["SignName"]=$signName;
 }
 public function getOwnerId() {
 return $this->ownerId;
 }
 public function setOwnerId($ownerId) {
 $this->ownerId = $ownerId;
 $this->queryParameters["OwnerId"]=$ownerId;
 }
 public function getResourceOwnerId() {
 return $this->resourceOwnerId;
 }
 public function setResourceOwnerId($resourceOwnerId) {
 $this->resourceOwnerId = $resourceOwnerId;
 $this->queryParameters["ResourceOwnerId"]=$resourceOwnerId;
 }
 public function getTemplateCode() {
 return $this->templateCode;
 }
 public function setTemplateCode($templateCode) {
 $this->templateCode = $templateCode;
 $this->queryParameters["TemplateCode"]=$templateCode;
 }
 public function getPhoneNumbers() {
 return $this->phoneNumbers;
 }
 public function setPhoneNumbers($phoneNumbers) {
 $this->phoneNumbers = $phoneNumbers;
 $this->queryParameters["PhoneNumbers"]=$phoneNumbers;
 }
 public function getResourceOwnerAccount() {
 return $this->resourceOwnerAccount;
 }
 public function setResourceOwnerAccount($resourceOwnerAccount) {
 $this->resourceOwnerAccount = $resourceOwnerAccount;
 $this->queryParameters["ResourceOwnerAccount"]=$resourceOwnerAccount;
 }
 public function getTemplateParam() {
 return $this->templateParam;
 }
 public function setTemplateParam($templateParam) {
 $this->templateParam = $templateParam;
 $this->queryParameters["TemplateParam"]=$templateParam;
 }
}

完成

运行试试吧


相关学习推荐:编程视频

下载本文
显示全文
专题