当前位置:   article > 正文

thinkphp6接入阿里云短信实战和踩坑_class 'darabonba\openapi\models\config' not found

class 'darabonba\openapi\models\config' not found

1、下载sdk,注意切换到你的项目目录下去,我的第一个坑我的composer版本太老了,下载的时候一直被终止,然后我更新了composer,参考官方给的安装方法:

  1. a、安装依赖
  2. composer require alibabacloud/darabonba-openapi
  3. b、切换阿里云镜像
  4. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  5. c、安装最新版的sdk
  6. //这个版本我第一次安装的时候文件不全,我也不知道啥情况
  7. composer require alibabacloud/dysmsapi-20170525 2.0.22
  8. //后面我用的这个版本
  9. composer require alibabacloud/dysmsapi-20170525 2.0.9

2、封装短信发送类文件,我这里我放到 app\index\controller 下的

  1. <?php
  2. namespace app\index\controller;
  3. use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
  4. use Darabonba\OpenApi\Models\Config;
  5. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
  6. use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  7. class AliSms {
  8. /**
  9. * 使用AK&SK初始化账号Client
  10. * @param string $accessKeyId
  11. * @param string $accessKeySecret
  12. * @return Dysmsapi Client
  13. */
  14. public static function createClient($accessKeyId, $accessKeySecret){
  15. $config = new Config([
  16. // 您的 AccessKey ID
  17. "accessKeyId" => "L**********************t",
  18. // 您的 AccessKey Secret
  19. "accessKeySecret" => "n****************************6"
  20. ]);
  21. // 访问的域名
  22. $config->endpoint = "dysmsapi.aliyuncs.com";
  23. return new Dysmsapi($config);
  24. }
  25. /**
  26. * @param string[] $args
  27. * @return void
  28. */
  29. public static function main($args){
  30. $client = self::createClient("accessKeyId", "accessKeySecret");
  31. $sendSmsRequest = new SendSmsRequest([
  32. "phoneNumbers" => $args['phone'], //发送的手机号码
  33. "signName" => "我的真实签名", //签名
  34. "templateCode" => $args['template'], //模板CODE
  35. "templateParam" => json_encode($args['info']) //这个根据你的模板信息来
  36. ]);
  37. $result = $client->sendSms($sendSmsRequest);
  38. if ($result->body->message == 'OK' && $result->body->code == 'OK') {
  39. return ['code' => 200,'msg'=>'success'];
  40. }
  41. if ($result->body->code == 'isv.MOBILE_NUMBER_ILLEGAL') {
  42. return ['code' => 0, 'msg' => '手机号码格式不正确'];
  43. }
  44. return ['code' => 0, 'msg' => '短信发送失败,网络繁忙'];
  45. }
  46. }
  47. ?>

这里注意一下流程:买完短信服务包后,需要把短信签名,AccessKey,短信模板(一般验证码这种模板是默认赠送的,可以直接使用)先申请,签名和模板是需要审核时间的,具体的操作请在控制台根据提示进行。

3、调用方法发送短信

  1. <?php
  2. namespace app\index\controller;
  3. use think\Controller;
  4. use think\facade\Request;
  5. use think\facade\View;
  6. class Index extends Base
  7. {
  8. //首页详情
  9. public function index()
  10. {
  11. $data = [
  12. 'phone'=> '13******',
  13. 'template' => 'SMS_********',
  14. 'info' => ['name'=>'测试','time'=>'2022-10-30'] //根据模板里面的变量来填写
  15. ];
  16. //调用阿里云短信发送方法
  17. $send = new AliSms;
  18. $result = $send::main($data);
  19. var_dump($result);
  20. die;
  21. }
  22. }
  23. ?>

以为这样就能顺利发送吗(线上我到这里就可以发送成功,是没有问题的),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" 

配置完之后记得重启环境,然后我就看到了发送成功。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/70298
推荐阅读
相关标签
  

闽ICP备14008679号