AliSMS.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Libs;
  3. use Exception;
  4. use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
  5. use Darabonba\OpenApi\Models\Config;
  6. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
  7. use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  8. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySmsTemplateListRequest;
  9. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsResponse;
  10. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySmsTemplateListResponse;
  11. class AliSMS
  12. {
  13. /**
  14. * 使用AK&SK初始化账号Client
  15. *
  16. * @return Dysmsapi Client
  17. */
  18. public static function createClient(): Dysmsapi
  19. {
  20. $config = new Config([
  21. // 必填,您的 AccessKey ID
  22. "accessKeyId" => env('SMS_AccessKeyId'),
  23. // 必填,您的 AccessKey Secret
  24. "accessKeySecret" => env('SMS_AccessKeySecret')
  25. ]);
  26. // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
  27. $config->endpoint = "dysmsapi.aliyuncs.com";
  28. return new Dysmsapi($config);
  29. }
  30. /**
  31. * 发送短信
  32. * https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/SendSms
  33. *
  34. * @param $phone
  35. * @param $templateCode
  36. * @param $param
  37. * @param $sign
  38. * @return SendSmsResponse|void
  39. */
  40. public static function sendSms($phone, $templateCode, $param, $sign)
  41. {
  42. $client = self::createClient();
  43. // 组装请求参数
  44. $sendSmsRequest = new SendSmsRequest([]);
  45. $sendSmsRequest->phoneNumbers = $phone;
  46. $sendSmsRequest->templateCode = $templateCode;
  47. $sendSmsRequest->templateParam = json_encode($param, JSON_UNESCAPED_UNICODE);
  48. $sendSmsRequest->signName = $sign;
  49. $runtime = new RuntimeOptions([]);
  50. try {
  51. // 复制代码运行请自行打印 API 的返回值
  52. return $client->sendSmsWithOptions($sendSmsRequest, $runtime);
  53. } catch (Exception $error) {
  54. dLog('exception')->info('sendSms', [$error->getMessage(), $error->getCode()]);
  55. }
  56. }
  57. /**
  58. * 查询短信模板
  59. * https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/QuerySmsTemplateList
  60. *
  61. * @return QuerySmsTemplateListResponse|void
  62. */
  63. public static function querySmsTemplateList()
  64. {
  65. $client = self::createClient();
  66. $querySmsTemplateListRequest = new QuerySmsTemplateListRequest([]);
  67. $runtime = new RuntimeOptions([]);
  68. try {
  69. // 复制代码运行请自行打印 API 的返回值
  70. return $client->querySmsTemplateListWithOptions($querySmsTemplateListRequest, $runtime);
  71. } catch (Exception $error) {
  72. dLog('exception')->info('querySmsTemplateList', [$error->getMessage(), $error->getCode()]);
  73. }
  74. }
  75. }