阿里云PHP-SMS短信服务——验证码发送教程

来源:互联网 发布:中国象棋手机版软件 编辑:程序博客网 时间:2024/05/21 04:22
  • 开通SMS服务
  • 创建签名模板
    • 创建签名
    • 记住签名名称
    • 创建模板
    • 查看并记住模板CODE
  • 创建并记住KeyId和KeySecret
  • 下载阿里云短信服务器PHP-SDK
  • 创建PHP-SMS项目
    • 创建代码文件
    • 移入Requset
  • 完成
  • SMS短信服务DEMO打包

开通SMS服务

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

创建签名、模板

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

这里写图片描述

创建签名

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

这里写图片描述

记住签名名称

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

创建模板

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

这里写图片描述

查看并记住模板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 = "yourAccessKeyId";//阿里云KeyId     $accessKeySecret = "yourAccessKeySecret";//阿里云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("123456789");//这里填你要发送的电话号码    //必填-短信签名    $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);//返回结果
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

移入Requset

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

<?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 Dysmsapi\Request\V20170525;//就是屏蔽这一行代码!!!!(后来我重新实验了一次,好像更新了,这一行就不要屏蔽了。反正大家多试试嘛,要是不行就试试屏蔽或解除屏蔽)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;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117

完成

运行试试吧

这里写图片描述 
这里写图片描述

SMS短信服务DEMO打包

这是我自己弄的DEMO已经测试可用啦,只要修改S\SMS\aliyun-php-sdk-core目录下的smsDemo就可以使用啦!,其他的东西都不要改,要保证S文件目录下的完整性。 
百度云 
链接:http://pan.baidu.com/s/1pLkFgVp 密码:1fi1



原文地址:http://blog.csdn.net/a735311619/article/details/74939887

原创粉丝点击