Sms.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\alisms\model;
  11. use app\model\BaseModel;
  12. use Overtrue\EasySms\EasySms;
  13. use Overtrue\EasySms\Exceptions\InvalidArgumentException;
  14. use Overtrue\EasySms\Exceptions\NoGatewayAvailableException;
  15. use Overtrue\EasySms\Strategies\OrderStrategy;
  16. /**
  17. * 阿里云短信
  18. */
  19. class Sms extends BaseModel
  20. {
  21. /**
  22. * 短信发送
  23. * @param array $param
  24. * @return array|mixed
  25. * @throws InvalidArgumentException
  26. */
  27. public function send($param = [])
  28. {
  29. $config_model = new Config();
  30. $config_result = $config_model->getSmsConfig();
  31. if ($config_result[ "data" ][ "is_use" ]) {
  32. $config = $config_result[ "data" ][ "value" ];
  33. $sms_info = $param[ "message_info" ][ "sms_json_array" ];//消息类型模板 短信模板信息
  34. if (empty($sms_info[ "alisms" ])) return $this->error([], "消息模板尚未配置");
  35. $sms_info = $sms_info[ "alisms" ];
  36. $var_parse = $param[ "var_parse" ];//变量解析
  37. $account = $param[ "sms_account" ];//发送手机号
  38. //加入阿里云短信配置
  39. $sms_config = [
  40. // HTTP 请求的超时时间(秒)
  41. 'timeout' => 5.0,
  42. // 默认发送配置
  43. 'default' => [
  44. // 网关调用策略,默认:顺序调用
  45. 'strategy' => OrderStrategy::class,
  46. // 默认可用的发送网关
  47. 'gateways' => [ 'aliyun' ],
  48. ],
  49. // 可用的网关配置
  50. 'gateways' => [
  51. "aliyun" => [
  52. 'access_key_id' => $config[ "access_key_id" ],
  53. 'access_key_secret' => $config[ "access_key_secret" ],
  54. 'sign_name' => $config[ "smssign" ],
  55. ]
  56. ],
  57. ];
  58. try {
  59. $easySms = new EasySms($sms_config);
  60. $easySms->send($account, [
  61. 'template' => $sms_info[ "template_id" ],
  62. 'data' => $var_parse,
  63. ]);
  64. return $this->success([ "addon" => "alisms", "addon_name" => "阿里云短信", "content" => $sms_info[ "content" ] ]);
  65. } catch (NoGatewayAvailableException $exception) {
  66. $message = $exception->getException('aliyun')->getMessage();
  67. return $this->error([ "content" => $sms_info[ "content" ] ], $message ? : '短信发送异常');
  68. }
  69. }
  70. }
  71. }