开发者社区> 问答> 正文

php调用短信接口报错

传入参数调用
$result = \plugins\mobile_code_demo\SmsSend::sendSms($mobile, $config['sign_name'], $config['template_code'], $code);
修改smsdemo如下
   /**
     * 取得AcsClient
     *
     * @return DefaultAcsClient
     */
    public static function getAcsClient() {
        $config = \think\Db::name('plugin')->where('name', 'MobileCodeDemo')->value('config');
        $config = json_decode($config, TRUE);
    //产品名称:云通信短信服务API产品,开发者无需替换
        $product = "Dysmsapi";

        //产品域名,开发者无需替换
        $domain = "dysmsapi.aliyuncs.com";

        // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
        $accessKeyId = $config['access_key_id']; // AccessKeyId
        $accessKeySecret = $config['access_key_secret']; // AccessKeySecret
        // 暂时不支持多Region
        $region = "cn-hangzhou";

        // 服务结点
        $endPointName = "cn-hangzhou";


        if (static::$acsClient == null) {

            //初始化acsClient,暂不支持region化
            $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);

            // 增加服务结点
            DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);

            // 初始化AcsClient用于发起请求
            static::$acsClient = new DefaultAcsClient($profile);
        }
        return static::$acsClient;
    }

    /**
     * 发送短信
     * @return stdClass
     * @param string $phone_numbers 发送短信的手机号吗
     * @param string $sign_name 短信签名
     * @param string $template_code 短信签名模板
     * @param init $code 手机验证码
     */
    public static function sendSms($phone_numbers, $sign_name, $template_code, $code) {

        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new SendSmsRequest();

        //可选-启用https协议
        //$request->setProtocol("https");
        // 必填,设置短信接收号码
        $request->setPhoneNumbers($phone_numbers);

        // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
        $request->setSignName($sign_name);

        // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
        $request->setTemplateCode($template_code);

        // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
        $request->setTemplateParam(json_encode(array(// 短信模板中字段的值
            "code" => "$code"
//            "product" => "dsd"
                        ), JSON_UNESCAPED_UNICODE));
        dump($request);

        // 可选,设置流水号
//        $request->setOutId("yourOutId");
        // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
//        $request->setSmsUpExtendCode("1234567");
        // 发起访问请求
        $acsResponse = static::getAcsClient()->getAcsResponse($request);

        return $acsResponse;
    }

展开
收起
金玉洋文化 2018-10-30 10:41:45 1033 0
1 条回答
写回答
取消 提交回答
  • 开发工程师O(∩_∩)O
    建议参考官方文档https://help.aliyun.com/document_detail/55451.html?spm=a2c4g.11186623.6.572.d1eb3be7Xz0MjW
    里面写的比较详细
    2018-10-30 10:54:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载