短信

更新时间:2023-06-19 10:48

接口支持腾讯云短信、阿里云短信服务发送。

(更多平台支持,持续增加中...)

使用之前必须调用对应服务商的初始化接口,传入配置参数。

腾讯云短信

初始化

Lib\Api::Sms_SendByTencent($options);
参数类型含义
$optionarray腾讯云短信配置数组

$options 参数列表

keyvalue 类型含义
SecretIdstring腾讯云账户云API密钥对(secretId、secretKey) 查询: https://console.cloud.tencent.com/cam/capi
SecretKeystring腾讯云账户云API密钥对(secretId、secretKey) 查询: https://console.cloud.tencent.com/cam/capi
SmsSdkAppIdstringSmsSdkAppId:短信应用ID(SdkAppId)在 [短信控制台] 添加应用后生成的实际SdkAppId,示例如1400006666。可前往 短信控制台 查看
SignNamestring腾讯云短信后台审核通过的 短信签名
TemplateIdstring腾讯云短信后台审核通过的 短信模板id

参数范例:

$options = array(
            'SecretId' => 'abcd',
            'SecretKey' => 'efgh',
            'SmsSdkAppId' => '1400006666',
            'SignName' => 'WitFrame',
            'TemplateId' => '123456',
        );

短信发送

$SendByTencent = Lib\Api::Sms_SendByTencent($options);
$SendByTencent->send('18888888888', array('123456'));

send($phoneNumber, $params, $nationCode, $senderId) 参数说明:

keyvalue 类型含义
phoneNumberstring不带国家码的手机号
paramsarray模板参数列表,如模板 {1}...{2}...{3},那么需要带三个参数
nationCodestring国家码,默认:86
senderIdstring国内短信无需填写该项;国际/港澳台短信已申请独立 SenderId
                                                                                                                   |

返回参数

应答json字符串,详细内容参见腾讯云协议文档

{"SendStatusSet":[{"SerialNo":"2640:172551234716869035571691139","PhoneNumber":"+8618812345678","Fee":1,"SessionContext":"","Code":"Ok","Message":"send success","IsoCode":"CN"}],"RequestId":"d8b209fc-7524-49a6-9cea-754e6af2f8ab"}

完整示例

以发送短信验证码为例(短信参数为示例参数):

public function indexAction() {
        $options = array(
            'SecretId' => 'AKIDhHjz5fdghasdhz74pNjwdfggweCan',
            'SecretKey' => 'BBze6PYVasdfgdgd7pMp9IH3f7OeoxfE',
            'SmsSdkAppId' => '14001234567',
            'SignName' => '云诺网络',
            'TemplateId' => '123456',
        );

        // 调用腾讯云短信API接口
        try {
                // 腾讯云短信初始化
            $SendByTencent = Lib\Api::Sms_SendByTencent($options);
            
            // 生成随机验证码数值
            $random = rand(100000, 999999);//生成随机数
            
            // 调用短信发送接口
            $return = $SendByTencent->send('18812345678', array($random));
            
            // 获得返回值json
            print_r($return);
        }catch (Exception $e) {
            $this->errorMessage($e->getMessage(),'1002' );
        }
    }

阿里云短信服务

初始化

Lib\Api::Sms_SendByAliyun($options);
参数类型含义
$optionarray阿里云短信服务短信配置数组

$options 参数列表

keyvalue 类型含义
accessKeyIdstring阿里云访问控制 accessKeyId
accessKeySecretstring阿里云访问控制 accessKeySecret
SignNamestring阿里云短信服务后台审核通过的 短信签名
TemplateIdstring阿里云短信服务后台审核通过的 短信模板id

参数范例:

$options = array(
            'accessKeyId' => 'LTAIsdfsdfs2n',
            'accessKeySecret' => 'ClyOzOsgdfgdfgdfgdgNRCjSwrWoN',
            'SignName' => '云诺网络',
            'templateCode' => 'SMS_78730221',
        );

短信发送

$SendByAliyun = Lib\Api::Sms_SendByAliyun($options);
$SendByAliyun->send('18812345678', json_encode(array('code' => '123456')));

send($phoneNumber, $params, $nationCode, $senderId) 参数说明:

keyvalue 类型含义
phoneNumberstring不带国家码的手机号
paramsstring模板参数列表,需传入 JSON 字符串,如:{"code":"1234"}
nationCodestring国家码,默认:86

返回参数

应答json字符串,详细内容参见阿里云协议文档

{"bizId":"333624786908558073^0","code":"OK","message":"OK","requestId":"7351AEF9-4A74-561A-BE05-91796EB96ADF"}

完整示例

以发送短信验证码为例(短信参数为示例参数):

public function indexAction() {
        $options = array(
            'accessKeyId' => 'LTAIsdfsdfs2n',
            'accessKeySecret' => 'ClyOzOsgdfgdfgdfgdgNRCjSwrWoN',
            'SignName' => '云诺网络',
            'templateCode' => 'SMS_78730221',
        );

        // 调用腾讯云短信API接口
        try {
                // 阿里云短信服务短信初始化
            $SendByAliyun = Lib\Api::Sms_SendByAliyun($options);
            
            // 生成随机验证码数值
            $random = rand(100000, 999999);
            
            // 调用短信发送接口
            // 第二个参数模板参数列表,需传入 JSON 字符串
            $return = $SendByAliyun->send('18812345678', json_encode(array('code' => $random)));
            
            // 获得返回值json
            print_r($return);
        }catch (Exception $e) {
            $this->errorMessage($e->getMessage(),'1002' );
        }

    }