1. 申请短信签名和模板, 短信签名不能带有”测试”, 否则通过不了.
2. composer require alibabacloud/sdk
3. 代码部分
<?php
namespace alisms;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
// Download:https://github.com/aliyun/openapi-sdk-php
// Usage:https://github.com/aliyun/openapi-sdk-php/blob/master/README.md
class alisms
{
// 密钥账号
static $accessKeyId = '*****';
// 密钥密码
static $accessSecret = '*****';
// 发送短信,$phone 为接收短信的手机号码
// 国内短信:11 位手机号码, 例如 15951955195, 国际 / 港澳台消息: 国际区号 + 号码, 例如 85200000000
public static function sendSms($phone)
{
// 验证码
$code = mt_rand(100000, 999999);
AlibabaCloud::accessKeyClient(static::$accessKeyId, static::$accessSecret)
->regionId('cn-hangzhou') // replace regionId (地区) as you need
->asDefaultClient();
$code_arr = ['code' => $code];
try {$result = AlibabaCloud::rpc()
->product('Dysmsapi')
// ->scheme('https') // https | http
->version('2017-05-25')
->action('SendSms')
->method('POST')
->options([
'query' => [
'PhoneNumbers' => $phone, // 手机号码
'SignName' => "*****", // 短信签名名称 (必须和签名管理的签名名字一致)
'TemplateCode' => "*****", // 短信模板 ID
'TemplateParam' => json_encode($code_arr), // 短信模板变量对应的实际值,JSON 格式
],
])
->request();
return $result->toArray(); // 对象转数组} catch (ClientException $e) {echo $e->getErrorMessage() . PHP_EOL;
return [];} catch (ServerException $e) {echo $e->getErrorMessage() . PHP_EOL;
return [];}
}
// 返回结果例子
/*
* Array ([Message] => OK [RequestId] => F144F01A-EB4E-48F9-9E90-D3D775B2D2E4 [BizId] => 799010660648933410^0 [Code] => OK )
*/
}
4. 说明: 新版短信接口代码于 19 年 4 月底更新了, 抛弃了以前写法, 这里是最新写法,
5. 注意: 价格 0.045-0.055/ 条 (国内), 为了防止盗刷, 建议加上图形验证码、拖动验证等.,
6. 为了代码的高度复用, 建议封装.
7. 请求接口网址说明: https://help.aliyun.com/document_detail/101414.html?spm=a2c4g.11186623.6.616.e1473e2cHaBVB5
正文完