阿里云短信发送接口开发

阿里云短信接口开发

阿里云短信接口开发

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开发者。西二旗老码农!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-10-10 16:35  马鞍山  阅读(1370)  评论(0编辑  收藏  举报