alisms 非 sdk

浏览:355 发布日期:2019/03/21 分类:功能实现 关键字: alisms thinkphp5
修改参数就可以使用
https://gitee.com/quejingshi/thinkphp5-alisms-api/blob/master/Alisms.php<?php
/**
 * Created by PhpStorm.
 * User: quejingshi
 * Date: 2019-03-20
 * Time: 08:48
 */

namespace app\expand\controller;

use think\Controller;

/**
 * Class Alisms
 * @package app\expand\controller
 * 阿里云短信通讯服务
 */
class Alisms extends Controller
{
    protected $ACCESSKEY_ID      = '';
    protected $ACCESSKEY_SECRET  = '';
    protected $SEND_MESSAGE      = 'http://dysmsapi.aliyuncs.com';
    protected $RECEPTION_MESSAGE = 'http://dybaseapi.aliyuncs.com';
    protected $SIGN_NAME         = '';

    /**
     * 发送短信
     */
    public function sendSms($PhoneNumbers, $TemplateCode, $TemplateParam)
    {
        $parameter              = [
            //  公共参数
            'AccessKeyId'      => $this->ACCESSKEY_ID,
            'Action'           => 'SendSms',
            'Format'           => 'json',
            'SignatureMethod'  => 'HMAC-SHA1',
            'SignatureNonce'   => time() . rand(10000, 99999),
            'SignatureVersion' => '1.0',
            'Timestamp'        => gmdate("Y-m-d\TH:i:s\Z"),
            'Version'          => '2017-05-25',
            //  接口参数
            'PhoneNumbers'     => $PhoneNumbers,
            'SignName'         => $this->SIGN_NAME,
            'TemplateCode'     => $TemplateCode,
            'TemplateParam'    => $TemplateParam
        ];
        $parameter['Signature'] = self::generateSignature($parameter);
        $url                    = $this->SEND_MESSAGE . '?' . http_build_query($parameter);
        $ch                     = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        $result = curl_exec($ch);
        curl_close($ch);
        $result = json_decode($result, true);
        dump($result);
        //  以数组方式返回,否则解析 json 会报错
        if ($result['Code'] != 'OK') {
            return ['code' => -100, 'msg' => '短信服务wen t错误'];
        }
        return ['code' => 0, 'msg' => '发送成功'];
    }


    /**
     * 生成签名
     */
    function generateSignature($data)
    {
        ksort($data);
        $parameter = null;
        foreach ($data as $k => $v) {
            $parameter .= '&' . self::specialUrlEncode($k) . '=' . self::specialUrlEncode($v);
        }
        $stringToSign = 'GET&%2F&' . self::specialUrlEncode(substr($parameter, 1));
        $signaTure    = base64_encode(hash_hmac('sha1', $stringToSign, $this->ACCESSKEY_SECRET . '&', true));
        return $signaTure;
    }

    /**
     * 构造待签名的请求串
     */
    function specialUrlEncode($string)
    {
        $string = urlencode($string);
        $string = preg_replace('/\+/', '%20', $string);
        $string = preg_replace('/\*/', '%2A', $string);
        $string = preg_replace('/%7E/', '~', $string);
        return $string;
    }

}
评论( 相关
后面还有条评论,点击查看>>