php短信接口对接

2021-03-24


645.jpg

1.国外短信这里介绍:短信宝

用的是thinkphp 框架
在TP模块下的目录新建Service文件夹,在里面新建service服务类用于短信宝发送短信。
更多详情可参考官网:
namespace Home\Service;

class SmsbaoService {
    function __construct() {
        $config = array(
            'user' => D('Config')->get('msg_user'),
            'pass' => D('Config')->get('msg_pass'),
            'smsapi' => 'http://api.smsbao.com/',
        );
        $statusCode = array(
            "0" => "短信发送成功",
            "-1" => "参数不全",
            "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
            "30" => "密码错误",
            "40" => "账号不存在",
            "41" => "余额不足",
            "42" => "帐户已过期",
            "43" => "IP地址限制",
            "50" => "内容含有敏感词"
        );
        $this->config = $config;
        $this->statusCode = $statusCode;
    }

    /**
     * 发送验证码
     * @param $phone
     * @param $code 验证码
     * @return mixed
     */
    public function sendMsg($phone, $code) {
        $config = $this->config;
        $statusCode = $this->statusCode;
        $autograph = D('Config')->get('msg_autograph');
        $content = D('Config')->get('msg_content');
        $content = '【' . $autograph . '】' . str_replace('{code}', $code, $content);
        $sendurl = $config['smsapi'] . "sms?u=" . $config['user'] . "&p=" . md5($config['pass']) . "&m=" . $phone . "&c=" . urlencode($content);
        $status = file_get_contents($sendurl);
        $reData['status'] = $status;
        $reData['info'] = $statusCode[$status];
        return $reData;
    }

}


数据库中要建配置参数:
msg_user(短信宝用户名)
msg_pass(短信宝密码)
msg_autograph(短信宝签名)
msg_content(短信内容,必须包含验证码替换符{code})

2.国外的介绍QcloudSMS腾讯短信

可以发送国内短信的接口有很多,之前也有整理比较好用的。当有用户需要发送国际短信时,比较常用就是阿里和腾讯的了。下面是腾讯短信简单发送对接TP的Service
下面以国际短信为例
1、在腾讯短信控制台申请“海外文本短信”,只需要申请短信模板即可,海外短信不需要申请签名,国内短信必须申请签名。
2、下载官方的phpSDK,在TP使用时需要小改一下命名空间,文章下有提供可下载。放到TP的Vendor/Qcloudsms文件夹中。
3、在要使用的模块下新建QcloudsmsService.class.php,代码如下:
<?php
namespace Home\Service;

class QcloudsmsService {
    function __construct() {
        $config = array(
            'appid' => '14054******',//控制台查看
            'appkey' => '6fe55********************',//控制台查看
            'templId' => '295555**',
            'nationCode' => '852555', //国家或地区区号,香港852,大陆86
        );
        $this->config = $config;
    }

    /**
     * 发送验证码
     * @param $phone
     * @param $code 验证码
     * @return mixed
     */
    public function sendMsg($phone, $code) {
        vendor('Qcloudsms.SmsSender');
        $config = $this->config;
        $singleSender = new \SmsSingleSender($config['appid'], $config['appkey']);
        // 普通单发
        $result = $singleSender->send(0, $config['nationCode'], $phone, "您好,您的验证码为" . $code, "", "");
        //返回的成功示例:{"result":0,"errmsg":"OK","ext":"","sid":"2:670479-0268698729-028972-001510040916","fee":1}
        //result为0表示发送成功
        $rsp = json_decode($result, true);
        return $rsp;
    }

}
写评论...