AliYunSmsService.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020-05-18
  7. *
  8. *
  9. */
  10. namespace crmeb\services;
  11. use AlibabaCloud\Client\AlibabaCloud;
  12. use think\Exception;
  13. use think\facade\Db;
  14. use GuzzleHttp\Exception\ClientException;
  15. use GuzzleHttp\Exception\ServerException;
  16. use think\facade\Log;
  17. /**
  18. * Class YunxinSmsService
  19. * @package crmeb\services
  20. * @author xaboy
  21. * @day 2020-05-18
  22. */
  23. class AliYunSmsService
  24. {
  25. public function send($mobile, $code, $templateId = 'AUTHCODE')
  26. {
  27. if($templateId=='') $templateId = 'AUTHCODE';
  28. // AlibabaCloud::accessKeyClient('LTAI5tPv49zdudnbTGExNKd3', 'nS7eFuPfI92i5h0MSvcAkpbyGsmkeF')
  29. // ->regionId('cn-hangzhou')
  30. // ->asDefaultClient();
  31. AlibabaCloud::accessKeyClient('LTAI5tKivJSckMYz5BHev3u8', 'nvetSdLB1YP7OgvpJcVeyhdJDVs4Ik')
  32. ->regionId('cn-hangzhou')
  33. ->asDefaultClient();
  34. $templateParam['code'] = $code;
  35. log::info("发送短信方法");
  36. switch ($templateId) {
  37. case 'AUTHCODE':
  38. // 移除所有非数字字符(保留+)
  39. $mobile = preg_replace('/[^0-9+]/', '', $mobile);
  40. if (strpos($mobile, '+') === false || strpos($mobile, '+86') === 0) {
  41. if (strpos($mobile, '+86') === 0) {
  42. $mobile = substr($mobile, 3);
  43. }
  44. $SignName = '融合华夏';
  45. $TemplateCode = 'SMS_311255692';
  46. $content = '【华夏幸福保】您的验证码是:' . $code;
  47. } else {
  48. if (strpos($mobile, '+') === 0) {
  49. $mobile = substr($mobile, 1);
  50. }
  51. $SignName = '融合华夏';
  52. $TemplateCode = 'SMS_492105133';
  53. $templateParam = [
  54. 'code_zh' => $code,
  55. 'code_en' => $code
  56. ];
  57. }
  58. break;
  59. case 'ONESELFCARRY':
  60. $SignName = '华夏幸福保';
  61. $TemplateCode = 'SMS_465430830';
  62. $content = '【华夏幸福保】您购买的商品动态码(自提码)为' . $code . ',提货时请出示自提码!';
  63. break;
  64. case 'REDCHANGE':
  65. $SignName = '华夏幸福保';
  66. $TemplateCode = 'SMS_465371794';
  67. $content = '【华夏幸福保】您的短信验证码为' . $code . ',您正在人工调整红积分,如非本人操作,请忽略该短信。';
  68. break;
  69. case 'COMMISSIONCHANGE':
  70. $SignName = '华夏幸福保';
  71. $TemplateCode = 'SMS_465392073';
  72. $content = '【华夏幸福保】您的短信验证码为' . $code . ',您正在人工调整用户佣金,如非本人操作,请忽略该短信。';
  73. break;
  74. }
  75. try {
  76. $result = AlibabaCloud::rpc()
  77. ->product('Dysmsapi')
  78. ->version('2017-05-25')
  79. ->action('SendSms')
  80. ->method('POST')
  81. ->options([
  82. 'query' => [
  83. 'PhoneNumbers' => $mobile,
  84. 'SignName' => $SignName,
  85. 'TemplateCode' => $TemplateCode,//测试的
  86. // 'TemplateCode' => 'SMS_464451169',
  87. 'TemplateParam' => json_encode($templateParam),
  88. ],
  89. ])
  90. ->request();
  91. log::info("短信:返回参数");
  92. log::info(json_encode($result->toArray()));
  93. Db::name('sms_record')->insert(['phone' => $mobile, 'content' => $content, 'template' => $TemplateCode, 'create_time'=>date("Y-m-d H:i:s")]);
  94. return $result->toArray();
  95. // } catch (ClientException $e) {
  96. // return ['code' => 500, 'message' => '阿里云短信客户端异常:' . $e->getErrorMessage()];
  97. // } catch (ServerException $e) {
  98. // return ['code' => 500, 'message' => '阿里云短信服务端异常:' . $e->getErrorMessage()];
  99. } catch (Exception $e) {
  100. return ['code' => 500, 'message' => '阿里云短信服务端异常:' . $e->getMessage()];
  101. }
  102. }
  103. }