php阿里云短信功能


需要签名比如:【阿里云】xxxx。
只有签名通过的,才可以发送。


需要创建短信模版。
支持验证码,以及各种自定义的消息模版。
新建模版,需要审核,审核通过才可以使用。

阿里云使用,需要配置key,secret。

php中可以先下载sdk。

composer require alibabacloud/client


然后参考demo,写出自己的工具类。
https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/SendSms?spm=a2c4g.11186623.2.9.40561a23AKu5S4&sdkStyle=old&lang=PHP

<?php

/**
 * 短信发送工具类
 * User: Eden
 * Date: 19-4-26 上午9:23
 */

namespace Common\Util;

use AlibabaCloud\Client\AlibabaCloud;

// Download:https://github.com/aliyun/openapi-sdk-php
// Usage:https://github.com/aliyun/openapi-sdk-php/blob/master/README.md

class SmsUtil extends CommonUtil
{
    public static function sendSms($phone, $template, $param, $signName = 'xx')
    {
        $sms_key = C('ALIYUN.AccessKey');
        $sms_secret = C('ALIYUN.AccessSecret');
        $sms_region = C('ALIYUN.RegionId');
        AlibabaCloud::accessKeyClient($sms_key, $sms_secret)
            ->regionId($sms_region)
            ->asDefaultClient();

        $result = AlibabaCloud::rpc()
            ->product('Dysmsapi')
            // ->scheme('https') // https | http
            ->version('2017-05-25')
            ->action('SendSms')
            ->method('POST')
            ->host('dysmsapi.aliyuncs.com')
            ->options([
                // 'query' => [
                //     'PhoneNumbers' => "xxx",
                //     'SignName' => "xxx",
                //     'TemplateCode' => "SMS_212694008",
                //     'TemplateParam' => "{'password':'123456'}",
                // ],
                'query' => [
                    'PhoneNumbers' => $phone,
                    'SignName' => $signName,
                    'TemplateCode' => $template,
                    'TemplateParam' => $param,
                ],
            ])
            ->request();
        $result =$result->toArray();
        if ($result['Code'] == 'OK') {
            return true;
        } else {
            return false;
        }
    }
}

使用

/**
 * 发送短信
 * @return stdClass
 */
public function sendSms() {
    $smsUtil = new SmsUtil();
    $param = [
        'password' => '123456'
    ];
    $res = $smsUtil::sendSms('xxx',C('ALIYUN_SMS_TEMPLATE.INIT_PASSWORD'),json_encode($param));
    if ($res) {
        $this->json->ok();
    } else {
        $this->json->err();
    }
}
posted @ 2021-03-09 18:14  TBHacker  阅读(515)  评论(0编辑  收藏  举报