赞
踩
1、下载sdk,注意切换到你的项目目录下去,我的第一个坑我的composer版本太老了,下载的时候一直被终止,然后我更新了composer,参考官方给的安装方法:
- a、安装依赖
- composer require alibabacloud/darabonba-openapi
-
- b、切换阿里云镜像
- composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
- c、安装最新版的sdk
- //这个版本我第一次安装的时候文件不全,我也不知道啥情况
- composer require alibabacloud/dysmsapi-20170525 2.0.22
-
- //后面我用的这个版本
- composer require alibabacloud/dysmsapi-20170525 2.0.9
2、封装短信发送类文件,我这里我放到 app\index\controller 下的
- <?php
- namespace app\index\controller;
- use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
- use Darabonba\OpenApi\Models\Config;
- use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
- use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
-
- class AliSms {
-
- /**
- * 使用AK&SK初始化账号Client
- * @param string $accessKeyId
- * @param string $accessKeySecret
- * @return Dysmsapi Client
- */
- public static function createClient($accessKeyId, $accessKeySecret){
- $config = new Config([
- // 您的 AccessKey ID
- "accessKeyId" => "L**********************t",
- // 您的 AccessKey Secret
- "accessKeySecret" => "n****************************6"
- ]);
- // 访问的域名
- $config->endpoint = "dysmsapi.aliyuncs.com";
- return new Dysmsapi($config);
- }
-
- /**
- * @param string[] $args
- * @return void
- */
- public static function main($args){
- $client = self::createClient("accessKeyId", "accessKeySecret");
- $sendSmsRequest = new SendSmsRequest([
- "phoneNumbers" => $args['phone'], //发送的手机号码
- "signName" => "我的真实签名", //签名
- "templateCode" => $args['template'], //模板CODE
- "templateParam" => json_encode($args['info']) //这个根据你的模板信息来
- ]);
-
- $result = $client->sendSms($sendSmsRequest);
- if ($result->body->message == 'OK' && $result->body->code == 'OK') {
- return ['code' => 200,'msg'=>'success'];
- }
- if ($result->body->code == 'isv.MOBILE_NUMBER_ILLEGAL') {
- return ['code' => 0, 'msg' => '手机号码格式不正确'];
- }
- return ['code' => 0, 'msg' => '短信发送失败,网络繁忙'];
- }
- }
- ?>
这里注意一下流程:买完短信服务包后,需要把短信签名,AccessKey,短信模板(一般验证码这种模板是默认赠送的,可以直接使用)先申请,签名和模板是需要审核时间的,具体的操作请在控制台根据提示进行。
3、调用方法发送短信
- <?php
- namespace app\index\controller;
- use think\Controller;
- use think\facade\Request;
- use think\facade\View;
-
- class Index extends Base
- {
-
- //首页详情
- public function index()
- {
- $data = [
- 'phone'=> '13******',
- 'template' => 'SMS_********',
- 'info' => ['name'=>'测试','time'=>'2022-10-30'] //根据模板里面的变量来填写
- ];
- //调用阿里云短信发送方法
- $send = new AliSms;
- $result = $send::main($data);
- var_dump($result);
- die;
- }
- }
- ?>
以为这样就能顺利发送吗(线上我到这里就可以发送成功,是没有问题的),no,我在本地测试的时候遇到我的第二个坑,报错了 cURL error 60: SSL certificate problem: unable to get local issuer certifica 一堆长长的代码,看到ssl应该能判断出是什么协议有问题,百度了一下,是CA证书,调用HTTPS资源的时候验证对方网站是否是CA颁布的证书,这个需要下载CA证书:
下载地址是 http://curl.haxx.se/ca/cacert.pem 这里万一失效的话可以进我的云盘
链接:https://pan.baidu.com/s/1wtgmmuPMiqB2XTtyE8qm3A 提取码:hxt4
下载完之后随便你放哪里,但是要在你当前使用版本的php.ini 中的配置一下正确的引用路径,在 curl.cainfo 后添加路径 : curl.cainfo = "D:\phpcacert\cacert.pem"
配置完之后记得重启环境,然后我就看到了发送成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。