一、短信服务使用阿里大于提供的短信接口
阿里大于官方网站上的接入流程:
在阿里大于申请接口后,需要做以下操作:
二、在laravel中使用阿里大于接口
之前在laravel中使用composer安装阿里大于的扩展包,但是尝试之后,一直返回code=11的错误码,是扩展包的权限不足,具体原因还未找到
然后就在laravel引入官方提供的skd包,下面介绍具体在laravel中使用官方sdk包的过程:
然后执行 composer dumpautoload
1 <?php
2
3
4
5 //use 命名空间+类名
6
7 use Aliyun\Core\Config; //命名空间 Aliyun\Core 类名是 Config (命名空间不必一定存在)
8 use Aliyun\Core\Profile\DefaultProfile;
9 use Aliyun\Core\DefaultAcsClient;
10 use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
11 use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;
12
13
14 use App\Http\Controllers\Controller;
15
16
17
18
19 // 加载区域结点配置
20 Config::load();
21
22
23 class SmsController extends Controller
24 {
25
26
27 /**
28 * 构造器
29 * @param string $accessKeyId 必填,AccessKeyId
30 * @param string $accessKeySecret 必填,AccessKeySecret
31 */
32 public function __construct($accessKeyId="######",$accessKeySecret="#######")
33 {
34
35
36 // 短信API产品名
37 $product = "Dysmsapi";
38
39
40 // 短信API产品域名
41 $domain = "dysmsapi.aliyuncs.com";
42
43
44 // 暂时不支持多Region
45 $region = "cn-hangzhou";
46
47
48 // 服务结点
49 $endPointName = "cn-hangzhou";
50
51
52 // 初始化用户Profile实例
53 $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
54
55
56 // 增加服务结点
57 DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
58
59
60 // 初始化AcsClient用于发起请求
61 $this->acsClient = new DefaultAcsClient($profile);
62
63
64 }
65
66
67
68
69 /**
70 * 发送短信范例
71 * @param [type] $phoneNumbers 必填, 短信接收号码
72 * @param string $signName 必填, 短信签名,应严格"签名名称"填写,
73 * @param string $templateCode 必填, 短信模板Code,应严格按"模板CODE"填写,
74 * @param [type] $outId 选填, 假如模板中存在变量需要替换则为必填项
75 * @return [type] [description]
76 */
77 public function sendSms($phoneNumbers,$signName="XX软件",$templateCode="SMS_XXXXXX",$outId=null)
78 {
79
80
81 // 初始化SendSmsRequest实例用于设置发送短信的参数
82 $request = new SendSmsRequest;
83
84
85 // 必填,设置雉短信接收号码
86 $request->setPhoneNumbers($phoneNumbers);
87
88
89 // 必填,设置签名名称
90 $request->setSignName($signName);
91
92
93 // 必填,设置模板CODE
94 $request->setTemplateCode($templateCode);
95
96
97 $num = rand(100000,999999);
98
99
100 // 可选,设置模板参数
101 $request->setTemplateParam(json_encode(
102 Array(
103 "code" => "$num"
104 )
105 ));
106
107
108 // 可选,设置流水号
109 if($outId) {
110 $request->setOutId($outId);
111 }
112
113
114 // 发起访问请求
115 $acsResponse = $this->acsClient->getAcsResponse($request);
116
117
118
119
120 }
121
122
123 /**
124 * 查询短信发送情况范例
125 * @param [type] $phoneNumbers 必填, 短信接收号码
126 * @param [type] $sendDate 必填,短信发送日期,格式Ymd,支持近30天记录查询
127 * @param integer $pageSize 必填,分页大小
128 * @param integer $currentPage 必填,当前页码
129 * @param [type] $bizId 选填,短信发送流水号
130 * @return [type] [description]
131 */
132 public function queryDetails($phoneNumbers,$sendDate,$pageSize=10,$currentPage=1,$bizId=null)
133 {
134
135
136 // 初始化QuerySendDetailsRequest实例用于设置短信查询的参数
137 $request = new QuerySendDetailsRequest();
138
139
140 $request->setPhoneNumber($phoneNumbers);
141
142
143 $request->setSendDate($sendDate);
144
145
146 $request->setPageSize($pageSize);
147
148
149 $request->setCurrentPage($currentPage);
150
151
152 if($bizId) {
153 $request->setBizId($bizId);
154 }
155
156
157 $acsResponse = $this->acsClient->getAcsResponse($request);
158
159
160 }
161
162
163 }
本文参考:http://blog.csdn.net/lishanleilixin/article/details/78126955