PHP-阿里云短信-部署和SDK使用总结

只涉及国内短信服务,开通国内短信。

一:进入“短信服务”控制台,从快速学习中了解实际发送的内容是什么样子

01模板示例

签名:【里面写自己的业务实体名称】

模板:示例为验证码模板

签名/模板 添加入口

二:签名设置,按需求填写,审核时间有快有慢

签名设置

签名: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文件夹放在一个目录下。代码无关返回值的判断和错误提示,需要的自行查阅阿里云手册

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

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放到我们的工程路径里面

03

4.代码的返回值

array(4) { 

["Message"]=> string(2) "OK"

 ["RequestId"]=> string(36) "222**U-E**4-8**8-C***-8***8" 

["BizId"]=> string(20) "8***^Q" 

["Code"]=> string(2) "OK" }

你可能感兴趣的:(PHP-阿里云短信-部署和SDK使用总结)