老莫的笔记本  
  
查看: 917|回复: 0

调用腾讯云短信的代码

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2020-7-10 17:18:29 | 显示全部楼层 |阅读模式
前提: 成功安装了腾讯云的php SDK 1. 创建个config文件 留存腾讯云短信相关配置,以及 腾讯应用的ID和秘钥
2. 然后 搞一个控制器 我这叫
CommonController
  1. <?php

  2. namespace App\Http\Controllers;

  3. use Illuminate\Http\Request;



  4. // 都是腾讯云短信的接口
  5. // require '/path/to/vendor/autoload.php';
  6. // require_once('TCloudAutoLoader.php');
  7. // require '/path/to/vendor/autoload.php';
  8. // 导入 SMS 的 client
  9. use TencentCloud\Sms\V20190711\SmsClient;
  10. // 导入要请求接口对应的 Request 类
  11. use TencentCloud\Sms\V20190711\Models\SendSmsRequest;
  12. use TencentCloud\Common\Exception\TencentCloudSDKException;
  13. use TencentCloud\Common\Credential;
  14. // 导入可选配置类
  15. use TencentCloud\Common\Profile\ClientProfile;
  16. use TencentCloud\Common\Profile\HttpProfile;



  17. /**
  18. *  写一个通用回调函数
  19. */
  20. class CommonController extends Controller
  21. {

  22.     /**
  23.      *  腾讯云短信接口
  24.      *  $phone  要发送短信的手机号
  25.      *  $code   发送过来的验证码
  26.      *  $smgId  对应的短信模板ID
  27.      *  $qianmingText    签名用到的汉字[必须是经过审核的]
  28.      */

  29.     public function getTxSmg($phone,$code,$smgID,$qianmingText)
  30.     {

  31.         $phone = $phone;

  32.         // 模板ID
  33.         $smgId = $smgID;

  34.         // 签名文字[得是备案过的]
  35.         $qianmingText = $qianmingText;

  36.         $config = array();
  37.         // 短信应用ID 注意 是应用的
  38.         $config['SDKAppID'] = config('tengxunsmg.smg.SDKAppID');
  39.         // 短信应用ID 注意 是应用的
  40.       
  41.         // App Key是用来校验短信发送合法性的密码
  42.         $config['AppKey'] = config('tengxunsmg.smg.AppKey');

  43.         // 这是一对调用腾讯云应用的秘钥 在个人api 秘钥管理中
  44.         $config['SecretId'] = config('tengxunsmg.smg.SecretId');
  45.         $config['SecretKey'] = config('tengxunsmg.smg.SecretKey');

  46.         try {
  47.             /* 必要步骤:
  48.              * 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
  49.              * 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值
  50.              * 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人
  51.              * CAM 密钥查询:https://console.cloud.tencent.com/cam/capi */
  52.         
  53.             $cred = new Credential($config['SecretId'], $config['SecretKey']);
  54.             //  这好像是密钥 不是skdappid
  55.             //$cred = new Credential(getenv("TENCENTCLOUD_SECRET_ID"), getenv("TENCENTCLOUD_SECRET_KEY"));
  56.         
  57.             // 实例化一个 http 选项,可选,无特殊需求时可以跳过
  58.             $httpProfile = new HttpProfile();
  59.             $httpProfile->setReqMethod("POST");  // POST 请求(默认为 POST 请求)
  60.             $httpProfile->setReqTimeout(30);    // 请求超时时间,单位为秒(默认60秒)
  61.             $httpProfile->setEndpoint("sms.tencentcloudapi.com");  // 指定接入地域域名(默认就近接入)
  62.         
  63.             // 实例化一个 client 选项,可选,无特殊需求时可以跳过
  64.             $clientProfile = new ClientProfile();
  65.             $clientProfile->setSignMethod("HmacSHA256");  // 指定签名算法(默认为 HmacSHA256)
  66.             $clientProfile->setHttpProfile($httpProfile);
  67.         
  68.             // 实例化 SMS 的 client 对象,clientProfile 是可选的
  69.             $client = new SmsClient($cred, "ap-shanghai", $clientProfile);
  70.         
  71.             // 实例化一个 sms 发送短信请求对象,每个接口都会对应一个 request 对象。
  72.             $req = new SendSmsRequest();
  73.         
  74.             /* 填充请求参数,这里 request 对象的成员变量即对应接口的入参
  75.              * 您可以通过官网接口文档或跳转到 request 对象的定义处查看请求参数的定义
  76.              * 基本类型的设置:
  77.                * 帮助链接:
  78.                * 短信控制台:https://console.cloud.tencent.com/smsv2
  79.                * sms helper:https://cloud.tencent.com/document/product/382/3773 */
  80.         
  81.             /* 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666 */
  82.             $req->SmsSdkAppid =  $config['SDKAppID'];
  83.             /* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息 */
  84.             $req->Sign = $qianmingText;
  85.             /* 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper] */
  86.             $req->ExtendCode = "0";  // 用不上
  87.             /* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
  88.                * 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号*/
  89.             // $req->PhoneNumberSet = array("+8613711112222", "+8613711333222", "+8613711144422");
  90.             $req->PhoneNumberSet = array('+86'.$phone);
  91.             /* 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper] */
  92.             $req->SenderId = "xxx";  // 用不上
  93.             /* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回 */
  94.             $req->SessionContext = "xxx";  // 用不上
  95.             /* 模板 ID: 必须填写已审核通过的模板 ID。可登录 [短信控制台] 查看模板 ID */
  96.             $req->TemplateID = $smgId;
  97.             /* 模板参数: 若无模板参数,则设置为空*/
  98.             $req->TemplateParamSet = array(
  99.                 $code
  100.             );
  101.         
  102.         
  103.             // 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
  104.             $resp = $client->SendSms($req);
  105.         
  106.             // 输出 JSON 格式的字符串回包
  107.             // print_r($resp->toJsonString());
  108.             $m = $resp;

  109.             // 判断是否成功 Fee 数量 为发送成功数量
  110.             if($m){
  111.                     
  112.                 return $m->SendStatusSet[0]->Fee;
  113.             
  114.             }

  115.             
  116.         
  117.             // 可以取出单个值,您可以通过官网接口文档或跳转到 response 对象的定义处查看返回字段的定义
  118.             // print_r($resp->TotalCount);
  119.         }
  120.         catch(TencentCloudSDKException $e) {
  121.             // echo $e;
  122.         }

  123.     }


  124. }
复制代码


3. 第三步就是调用啦  注意传进去的参数基本都是字符串
  1.     /**
  2.      * 测试腾讯云短信接口的使用
  3.      */
  4.     public function t()
  5.     {

  6.         $common = new Common();

  7.         // $common->sendsmg($phone,'101312','#code#='.$code);
  8.         // dd($common->getTxSmg());
  9.         // dd(config('tengxunsmg.smg.SecretId'));
  10.         // $common->getTxSmg('15351888596', '456789' ,"653935" ,"权客信息科技" );
  11.         dd($common->getTxSmg('17851252090', '888888' ,"653935" ,"权客信息科技" ));

  12.     }
复制代码








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表