首页 > 编程语言 >阿里云:用php开发短信接口

阿里云:用php开发短信接口

时间:2024-07-23 09:17:41浏览次数:13  
标签:use 短信 Utils 接口 Dysmsapi api error php alibabacloud

一,准备工作:

在阿里云控制台->短信服务中,需完成以下三项的配置,等官方审核通过后,则可以使用接口

二,下载安装php的sdk

1,官方文档地址

https://help.aliyun.com/zh/sms/developer-reference/sdk-product-overview/?spm=a2c4g.11186623.0.0.1db061a5jSzBwS

2,用composer下载安装

liuhongdi@lhdpc:/web/api$ composer require alibabacloud/dysmsapi-20170525 3.0.0

查看安装的版本信息

liuhongdi@lhdpc:/web/api$ composer show alibabacloud/dysmsapi-20170525
name     : alibabacloud/dysmsapi-20170525
descrip. : Alibaba Cloud Dysmsapi (20170525) SDK Library for PHP
keywords : 
versions : * 3.0.0
released : 2024-06-25, 3 weeks ago
type     : library
license  : Apache License 2.0 (Apache-2.0) (OSI approved) https://spdx.org/licenses/Apache-2.0.html#licenseText
homepage : 

3,安装阿里的openapi库

liuhongdi@lhdpc:/web/api$ composer require alibabacloud/darabonba-openapi

查看安装的版本信息:

liuhongdi@lhdpc:/web/api$ composer show alibabacloud/darabonba-openapi
name     : alibabacloud/darabonba-openapi
descrip. : Alibaba Cloud OpenApi Client
keywords : 
versions : * 0.2.12
released : 2024-06-21, 1 month ago
type     : library

三,代码

1,php代码

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;


class UserController extends Controller
{
    //发送短信息
    public function sms(Request $request) {
        //设置accesskeyid和accesskeysecret,用自己在阿里云后台的真实的id和secret代替
        $config = new Config([
            // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        ]);
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        // 阿里云发送短信的主机
        $config->endpoint = "dysmsapi.aliyuncs.com";
        //创建client实例
        $client = new Dysmsapi($config);
        //验证码
        $code = rand(1000,9999);
        //生成请求
        $sendSmsRequest = new SendSmsRequest([
            "phoneNumbers" => "138xxxxxxxx",   //接收短信的手机号
            "signName" => "河北微众信息技术",     //签名,要与阿里云后台设置一致
            "templateCode" => 'SMS_301234567',  //这里是短信的模板id
            "templateParam" => json_encode([
                'code' => $code
            ])
        ]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $result = $client->sendSmsWithOptions($sendSmsRequest, new RuntimeOptions([]));
            //var_dump($result);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            var_dump($error->message);
            // 诊断地址
            var_dump($error->data["Recommend"]);
            Utils::assertAsString($error->message);
        }
    }

 

四,报错信息的解决:

1, 报错:

["bizId"]=> NULL 
["code"]=> string(23) "isp.RAM_PERMISSION_DENY" 
["message"]=> string(73) "RAM权限不足,请为当前使用的AccessKey对应RAM用户进行授权"

解决:为api访问权限的用户添加短信授权即可

 

标签:use,短信,Utils,接口,Dysmsapi,api,error,php,alibabacloud
From: https://www.cnblogs.com/architectforest/p/18317534

相关文章

  • python接口自动化(四十)- logger 日志 - 下(超详解)
    宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介按照上一篇的计划,这一篇给小伙伴们讲解一下:(1)多模块使用logging,(2)通过文件配置logging模块,(3)自己封装一个日志(logging)类。可能有的小伙伴在这里会有个疑问一个logging为什么分两篇的篇幅......
  • 1323、基于51单片机按键发送GPS时间定位信息 GSM短信收LCD12864显示报警(程序+原理图+
    毕设帮助、开题指导、技术解答(有偿)见文未  目录方案选择单片机的选择一、设计功能二、实物图单片机模块设计三、原理图四、程序源码五、PCB图资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的......
  • 很详细!接口使用教程(二)
    接上篇内容,这篇继续案例接口使用教程!!!一、了解接口在开始调用接口之前,您需要充分了解接口的以下特性:1.功能:明确接口所提供的具体服务和能够实现的业务逻辑。2.访问权限:确定您是否有权限调用该接口,以及可能需要的授权方式。3.输入和输出:清楚接口所需的输入参数格式和类型,以......
  • 超热门!身份证实名认证接口Java调用示例
    一、什么是身份证实名认证?输入姓名、身份证号,校验此两项是否匹配,同时返回生日、性别、籍贯等信息。二、身份证实名认证接口适用哪些场景呢?金融领域、电商与支付、社交与通讯、交通与出行、在线教育与培训等。三、如何用Java快速调用该接口呢?以下以阿里云为例:接口地址:身份......
  • 接口自动化测试框架实战-0-项目功能概览
    熟悉我CSDN的朋友们应该知道,之前已经更新了requests、pytest、allure2、yaml、jenkins、postman等基础知识的合集。相信大家对接口测试已经有了全面的认识,现在应该迫不及待地想要一个实战项目了。接下来的文章中,我们将把这些知识点串联起来,以钉钉开放接口为例,一起从0到1开发一......
  • php通用防伪溯源查询系统可自定义字段
    性能描述:1.适合中小规模查询,建议100万条以内(具体视服务器配置)。2.自定义前台是否使用验证码,即可以自行开启/关闭验证码。3.灵活支持N列内容,只要前几列按照规则;其余列均自定义内容。4.可单个新加,也可以批量外部导入。。。后台功能:1.单管理员登录页面,修改密码页面......
  • 后端API接口定义返回编码规则
    code状态码code返回状态码,一般小伙伴们是在开发的时候需要什么,就添加什么。如接口要返回用户权限异常,我们加一个状态码为101吧,下一次又要加一个数据参数异常,就加一个102的状态码。这样虽然能够照常满足业务,但状态码太凌乱了。我们应该可以参考HTTP请求返回的状态码(下面是常见的......
  • thinkPHP/fastAdmin框架使用memcached缓存
    1.安装memcached扩展: 2.重启PHP,在thinkPHP或者fastAdmin启用扩展(开放相应端口:例如11211) 在fastAdmin中,则需修改config.php里面的cache配置: 3.实际运行测试:  第一个信息正常显示说明运行成功,第二个显示false,说明缓存删除成功......
  • thinkphp Nginx伪静态
    过滤api前缀location/{add_headerAccess-Control-Allow-Origin*;add_headerAccess-Control-Allow-Methods'GET,POST,OPTIONS';add_headerAccess-Control-Allow-Headers'DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization';......
  • PHP银行卡实名认证接口对接、银行卡识别
    在这个数字时代,每一张银行卡都承载着你的故事,它是你辛勤汗水的见证,是你生活品质的保障。就像你的身份证一样,银行卡也需要“实名认证”,这不仅仅是一次信息的匹配,更是对个人财产安全的一份承诺。随着市场需求的不断增多,翔云银行卡实名认证接口应用而生,可根据银行卡号、身份......