RoutineServer.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace app\routine\model\routine;
  3. use app\admin\model\system\SystemConfig;
  4. use think\Db;
  5. class RoutineServer{
  6. /**
  7. * curl get方式
  8. * @param string $url
  9. * @param array $options
  10. * @return mixed
  11. */
  12. public static function curlGet($url = '', $options = array())
  13. {
  14. $ch = curl_init($url);
  15. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  16. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  17. if (!empty($options)) {
  18. curl_setopt_array($ch, $options);
  19. }
  20. //https请求 不验证证书和host
  21. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  22. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  23. $data = curl_exec($ch);
  24. curl_close($ch);
  25. return $data;
  26. }
  27. /**
  28. * curl post
  29. * @param string $url
  30. * @param string $postData
  31. * @param array $options
  32. * @return mixed
  33. */
  34. public static function curlPost($url = '', $postData = '', $options = array())
  35. {
  36. if (is_array($postData)) {
  37. $postData = http_build_query($postData);
  38. }
  39. $ch = curl_init();
  40. curl_setopt($ch, CURLOPT_URL, $url);
  41. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  42. curl_setopt($ch, CURLOPT_POST, 1);
  43. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
  44. curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数
  45. if (!empty($options)) {
  46. curl_setopt_array($ch, $options);
  47. }
  48. //https请求 不验证证书和host
  49. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  50. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  51. $data = curl_exec($ch);
  52. curl_close($ch);
  53. return $data;
  54. }
  55. /**
  56. * 微信公众号
  57. * @param string $routineAppId
  58. * @param string $routineAppSecret
  59. * @return mixed
  60. */
  61. public static function getAccessToken($routineAppId = '',$routineAppSecret = ''){
  62. $routineAppId = SystemConfig::getValue('routine_appId');
  63. $routineAppSecret = SystemConfig::getValue('routine_appsecret');
  64. $url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$routineAppId."&secret=".$routineAppSecret;
  65. return json_decode(self::curlGet($url),true);
  66. }
  67. /**
  68. * 获取access_token 数据库
  69. * @return mixed
  70. */
  71. public static function get_access_token(){
  72. $accessToken = Db::name('routine_access_token')->where('id',1)->find();
  73. if($accessToken['stop_time'] > time()) return $accessToken['access_token'];
  74. else{
  75. $accessToken = self::getAccessToken();
  76. if(isset($accessToken['access_token'])){
  77. $data['access_token'] = $accessToken['access_token'];
  78. $data['stop_time'] = bcadd($accessToken['expires_in'],time(),0);
  79. Db::name('routine_access_token')->where('id',1)->update($data);
  80. }
  81. return $accessToken['access_token'];
  82. }
  83. }
  84. }