木叶三忍的博客

web开发

Menu Close

Laravel中关于阿里云短信接口的使用

由于个人项目中需要用到短信验证码,所以购买了阿里云的短信服务,之前是阿里大于,不过到现在已经不再是之前的接口了,下面介绍laravel中怎么使用它。
* 方式一:使用composer安装sdk
* 方式二:手动引入官方sdk

这里只介绍方式二,也是我目前使用的方案,不过使用composer去安装前辈们已经做好的包确实方便,但有时候也不得不说有一种那个什么。因为不是所有的三方接口都能那么有幸有人做成包共享的,虽然说可以自己做成依赖包或者自己搭建一个本地git仓库,存放公司内部共享类包,然后composer去管理依赖。嗯,好像扯远了,回到正题。

下载SDK

https://help.aliyun.com/document_detail/55451.html 它的结构如下:

这里我只引入api_sdk,也就是发短信用的,目录结构介绍,请自行查看文档! 进入到api_sdk,发现它的结构:

它的composer文件内容如下:

{
    "name": "aliyuncs/aliyun-dysms-php-sdk",
    "description": "Aliyun SMS SDK for PHP",
    "keywords": [ "aliyun", "SMS", "sdk" ],
    "type": "library",
    "license": "Apache-2.0",
    "homepage": "https://www.aliyun.com/product/sms",
    "authors": [
        {
            "name": "Aliyuncs",
            "homepage": "https://www.aliyun.com"
        }
    ],
    "require": {
        "php": ">=5.5.0"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0"
    },
    "minimum-stability": "stable",
    "autoload": {
        "psr-4": {
            "Aliyun\\": "lib/",
            "Aliyun\\Test\\": "tests/"
        }
    }
}

我并不需要那个tests目录,所以核心是lib目录,结构如下:

在app目录下,新建一个Libraries目录 当然,你放在哪里都可以,名字也可以随意,例如: app/Konohanaruto/Libraries 然后,我在这个目录下创建了一个Aliyun的目录: app/Konohanaruto/Libraries/Aliyun 接着,复制api_sdk/lib目录下的Api和Core目录,到我们的app/Konohanaruto/Libraries/Aliyun目录:

再然后,编辑我们laravel项目的composer.json文件,在classmap中,我们加入我们包的路径:

//省略...
"autoload": {
        "classmap": [
            "database",
            "app/Konohanaruto/Libraries"
        ],
        "psr-4": {
            "App\\": "app/",
            "Tests\\": "tests/"
        }
    },
//省略...

最后,运行如下命令: composer dumpautoload 我们在项目中就可以如同官方demo文件中一般使用,我这样就轻松使用了它:

总结 可能会遇到各种可能出错的情况,我在调用中,出现了一个错误,如下:

InvalidTimeStamp.Expired Specified time stamp or date value is expired. HTTP Status: 400 RequestID: 7DA7D916-3419-47E9-BFDE-C2D04480D517

按照官方的FAQ发现是我开发机的时区问题,而且时间也不对,后来把开发机的时间调准确就没问题了。

© 2019 木叶三忍的博客. All rights reserved.

Theme by Anders Norén.