Sms.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace App\Libs\Aliyun;
  3. use Config;
  4. use Aliyun\Core\SmsConfig;
  5. use Aliyun\Core\Profile\DefaultProfile;
  6. use Aliyun\Core\DefaultAcsClient;
  7. use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
  8. use Aliyun\Api\Sms\Request\V20170525\SendBatchSmsRequest;
  9. use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;
  10. // 加载区域结点配置
  11. SmsConfig::load();
  12. class Sms
  13. {
  14. /**
  15. * 取得AcsClient
  16. *
  17. * @return DefaultAcsClient
  18. */
  19. public function __construct() {
  20. //产品名称:云通信流量服务API产品,开发者无需替换
  21. $product = "Dysmsapi";
  22. //产品域名,开发者无需替换
  23. $domain = "dysmsapi.aliyuncs.com";
  24. $accessKeyId = Config::get('sms.accessKeyId');
  25. $accessKeySecret = Config::get('sms.accessKeySecret');
  26. // 暂时不支持多Region
  27. $region = "cn-hangzhou";
  28. // 服务结点
  29. $endPointName = "cn-hangzhou";
  30. //初始化acsClient,暂不支持region化
  31. $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
  32. // 增加服务结点
  33. DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
  34. // 初始化AcsClient用于发起请求
  35. $this->acsClient = new DefaultAcsClient($profile);
  36. }
  37. /**
  38. * 发送短信
  39. * @return stdClass
  40. */
  41. public function sendSms($phoneNumber, $templeteCode, $smsCode) {
  42. // 初始化SendSmsRequest实例用于设置发送短信的参数
  43. $request = new SendSmsRequest();
  44. //可选-启用https协议
  45. //$request->setProtocol("https");
  46. // 必填,设置短信接收号码
  47. $request->setPhoneNumbers($phoneNumber);
  48. // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
  49. $request->setSignName(Config::get('sms.sign'));
  50. // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
  51. $request->setTemplateCode($templeteCode);
  52. // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
  53. $request->setTemplateParam(json_encode(array( // 短信模板中字段的值
  54. "code"=>$smsCode
  55. ), JSON_UNESCAPED_UNICODE));
  56. // 可选,设置流水号
  57. //$request->setOutId("yourOutId");
  58. // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
  59. //$request->setSmsUpExtendCode("1234567");
  60. // 发起访问请求
  61. $acsResponse = $this->acsClient->getAcsResponse($request);
  62. return $acsResponse;
  63. }
  64. /**
  65. * 短信发送记录查询
  66. * @return stdClass
  67. */
  68. public function querySendDetails($phoneNumber, $sendDate, $pageSize, $currentPage) {
  69. // 初始化QuerySendDetailsRequest实例用于设置短信查询的参数
  70. $request = new QuerySendDetailsRequest();
  71. //可选-启用https协议
  72. //$request->setProtocol("https");
  73. // 必填,短信接收号码
  74. $request->setPhoneNumber($phoneNumber);
  75. // 必填,短信发送日期,格式Ymd,支持近30天记录查询
  76. $request->setSendDate($sendDate);
  77. // 必填,分页大小
  78. $request->setPageSize($pageSize);
  79. // 必填,当前页码
  80. $request->setCurrentPage($currentPage);
  81. // 选填,短信发送流水号
  82. //$request->setBizId("yourBizId");
  83. // 发起访问请求
  84. $acsResponse = $this->acsClient->getAcsResponse($request);
  85. return $acsResponse;
  86. }
  87. }