PHP-阿里云短信-部署和SDK使用总结
只涉及国内短信服务,开通国内短信。
阿里云国内短信开通之后进行如下的步骤。
一:进入“短信服务”控制台,从快速学习中了解实际发送的内容是什么样子
签名:【里面写自己的业务实体名称】,模板:示例为验证码模板
二:签名设置,按需求填写,审核时间有快有慢
签名:SignName,sdk会用到,不需要带【】
三:模板设置,按需求填写,审核时间有快有慢
模板名称:自行设置,方便寻找。
模板内容:${code}为固定格式,后面sdk里面使用也要和code单词一致。
模板创建成功以后会有自己固定的TemplateCode,SDK会用到
四:用户组权限
1.用户组权限并不需要设置,只给子用户设置权限就够了
2.然后选好内容就可以点确定了
3.设置管理短信服务的权限
五:SDK部署
1.全局安装composer
2.win+R用 cmd命令行,使用该镜像地址:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
3.win+R用 cmd命令行进入工程目录下,比如www文件夹,运行:composer require alibabacloud/client
4.获得accesskey
操作步骤:云账号登录RAM控制台。
在左侧导航栏的人员管理菜单下,单击用户。
在用户登录名称/显示名称列表下,单击目标RAM用户名称。
在用户AccessKey 区域下,单击创建新的AccessKey。
【AccessKeySecret只在创建时显示,不提供查询】
5.代码:两个文件和下载的vender文件夹放在一个目录下。代码无关返回值的判断和错误提示,需要的自行查阅阿里云手册
六:代码示例
代码片
.
// An highlighted block
send.php
<?
include 'index.php';
$sms = new sms_index();
$phone='179****8888';
$code=rand(100000,999999);
$config = [
'accessKeyId' => 'd*********w',
'accessSecret' => 'a********b',
'SignName' => '宇宙边缘',
'TemplateCode' => 'SMS_***88',
'regionId' => 'cn-hangzhou'//不需要改
];
$re = $sms->sendCode($config,$phone,$code);
var_dump($re);
?>
index.php
<?php
require 'vendor/autoload.php';
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\NlsCloudMeta\NlsCloudMeta;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
class sms_index{
/**
* 发送短信验证码
*/
public function sendCode($config,$phone,$code)
{
$param = [
'code' => $code
];
AlibabaCloud::accessKeyClient($config['accessKeyId'], $config['accessSecret'])
->regionId($config['regionId'])
->asGlobalClient();
try {
$result = AlibabaCloud::rpcRequest()
->product('Dysmsapi')
->version('2017-05-25')
->action('SendSms')
->method('POST')
->options([
'query' => [
'PhoneNumbers' => $phone,
'SignName' => $config['SignName'],
'TemplateCode' => $config['TemplateCode'],
'TemplateParam' => json_encode($param)
],
])
->request();
return $result->toArray();
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}
}
}
七:问题汇总
1.短信类型-- 文本短信根据短信模板的类型,可以分为:
验证码
向手机号码发送的包含验证码的短信,支持通过变量替换实现个性短信定制。
通常用于会员注册、快捷登录、安全提醒、找回密码等场景。
短信通知
向手机号码发送的通知类短信,支持通过变量替换实现个性短信定制。
通常用于向注册用户下发系统相关信息,包括升级或维护、服务开通、价格调整、 订单确认、物流动态、消费确认、 支付通知等普通通知短信。
推广短信
向手机号码发送的包含推广信息的短信,短信内容为经过审核的模板内容,不支持通过变量替换实现个性短信定制。
通常用于向注册用户和潜在客户发送通知和推广信息,包括促销活动通知、业务推广、新产品宣讲、会员关怀等商品与活动的推广信息,可以增加企业产品曝光率、提高产品和企业的知名度。
2.阿里云短信isp.RAM_PERMISSION_DENY没有访问权
需要去给子账号添加sms的权限,搜索sms然后选择所有短信的权限
3.Using version ^1.8 for alibabacloud/sdk Root package ‘alibabacloud/sdk’ cannot require itself in its composer.json
这个地方不可以提前从别的地方下载composer.json放到我们的工程路径里面
4.代码的返回值
array(4) {
[“Message”]=> string(2) “OK”
[“RequestId”]=> string(36) “222U-E4-88-C*-8***8”
[“BizId”]=> string(20) “8***^Q”
[“Code”]=> string(2) “OK” }