SmsMobileStatusPuller.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace addons\qcloudsms\library;
  3. use addons\qcloudsms\library\SmsSenderUtil;
  4. /**
  5. * 拉取单个手机短信状态类
  6. *
  7. */
  8. class SmsMobileStatusPuller
  9. {
  10. private $url;
  11. private $appid;
  12. private $appkey;
  13. private $util;
  14. /**
  15. * 构造函数
  16. *
  17. * @param string $appid sdkappid
  18. * @param string $appkey sdkappid对应的appkey
  19. */
  20. public function __construct($appid, $appkey)
  21. {
  22. $this->url = "https://yun.tim.qq.com/v5/tlssmssvr/pullstatus4mobile";
  23. $this->appid = $appid;
  24. $this->appkey = $appkey;
  25. $this->util = new SmsSenderUtil();
  26. }
  27. /**
  28. * 拉取回执结果
  29. *
  30. * @param int $type 拉取类型,0表示回执结果,1表示回复信息
  31. * @param string $nationCode 国家码,如 86 为中国
  32. * @param string $mobile 不带国家码的手机号
  33. * @param int $beginTime 开始时间(unix timestamp)
  34. * @param int $endTime 结束时间(unix timestamp)
  35. * @param int $max 拉取最大条数,最多100
  36. * @return string 应答json字符串,详细内容参见腾讯云协议文档
  37. */
  38. private function pull($type, $nationCode, $mobile, $beginTime, $endTime, $max)
  39. {
  40. $random = $this->util->getRandom();
  41. $curTime = time();
  42. $wholeUrl = $this->url . "?sdkappid=" . $this->appid . "&random=" . $random;
  43. $data = new \stdClass();
  44. $data->sig = $this->util->calculateSigForPuller($this->appkey, $random, $curTime);
  45. $data->time = $curTime;
  46. $data->type = $type;
  47. $data->max = $max;
  48. $data->begin_time = $beginTime;
  49. $data->end_time = $endTime;
  50. $data->nationcode = $nationCode;
  51. $data->mobile = $mobile;
  52. return $this->util->sendCurlPost($wholeUrl, $data);
  53. }
  54. /**
  55. * 拉取回执结果
  56. *
  57. * @param string $nationCode 国家码,如 86 为中国
  58. * @param string $mobile 不带国家码的手机号
  59. * @param int $beginTime 开始时间(unix timestamp)
  60. * @param int $endTime 结束时间(unix timestamp)
  61. * @param int $max 拉取最大条数,最多100
  62. * @return string 应答json字符串,详细内容参见腾讯云协议文档
  63. */
  64. public function pullCallback($nationCode, $mobile, $beginTime, $endTime, $max)
  65. {
  66. return $this->pull(0, $nationCode, $mobile, $beginTime, $endTime, $max);
  67. }
  68. /**
  69. * 拉取回复信息
  70. *
  71. * @param string $nationCode 国家码,如 86 为中国
  72. * @param string $mobile 不带国家码的手机号
  73. * @param int $beginTime 开始时间(unix timestamp)
  74. * @param int $endTime 结束时间(unix timestamp)
  75. * @param int $max 拉取最大条数,最多100
  76. * @return string 应答json字符串,详细内容参见腾讯云协议文档
  77. */
  78. public function pullReply($nationCode, $mobile, $beginTime, $endTime, $max)
  79. {
  80. return $this->pull(1, $nationCode, $mobile, $beginTime, $endTime, $max);
  81. }
  82. }