wxapp.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. class wxapp
  3. {
  4. public $access_token ="";
  5. public function getWxAccessToken(){
  6. $access_token['access_token'] = "54_1FFzg4V7iHLWyC0BQLLZo7UHX2xq1g8lJl9691YawRg6yDy16diXXqmGa_s3kWRRVaT8E9Ofa9fpxyFKCrUMAEi_FsAyvGr29XW7x689AyZuUNqAQKoQe_QFKl_V6xNa6BA4Wp64KW4Qid7ODBAeACAGED";
  7. return $access_token;
  8. $appid='wx6880e2c03de221c9';
  9. $appsecret='452732864439a04a49e860d5e454dc9d';
  10. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
  11. $access_token = $this->makeRequest($url);
  12. $access_token = json_decode($access_token['result'],true);
  13. $this->access_token = $access_token['access_token'];
  14. return $access_token;
  15. // if(Session::get('access_token_'.$appid) && Session::get('expire_time_'.$appid)>time()){
  16. // return Session::get('access_token_'.$appid);
  17. // }else{
  18. // $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
  19. // $access_token = $this->makeRequest($url);
  20. // $access_token = json_decode($access_token['result'],true);
  21. // Session::set('access_token_'.$appid,$access_token);
  22. // Session::set('expire_time_'.$appid,time()+7000);
  23. // return $access_token;
  24. // }
  25. }
  26. /**
  27. * 发起http请求
  28. * @param string $url 访问路径
  29. * @param array $params 参数,该数组多于1个,表示为POST
  30. * @param int $expire 请求超时时间
  31. * @param array $extend 请求伪造包头参数
  32. * @param string $hostIp HOST的地址
  33. * @return array 返回的为一个请求状态,一个内容
  34. */
  35. public function makeRequest($url, $params = array(), $expire = 0, $extend = array(), $hostIp = '')
  36. {
  37. if (empty($url)) {
  38. return array('code' => '100');
  39. }
  40. $_curl = curl_init();
  41. $_header = array(
  42. 'Accept-Language: zh-CN',
  43. 'Connection: Keep-Alive',
  44. 'Cache-Control: no-cache'
  45. );
  46. // 方便直接访问要设置host的地址
  47. if (!empty($hostIp)) {
  48. $urlInfo = parse_url($url);
  49. if (empty($urlInfo['host'])) {
  50. $urlInfo['host'] = substr(DOMAIN, 7, -1);
  51. $url = "http://{$hostIp}{$url}";
  52. } else {
  53. $url = str_replace($urlInfo['host'], $hostIp, $url);
  54. }
  55. $_header[] = "Host: {$urlInfo['host']}";
  56. }
  57. // 只要第二个参数传了值之后,就是POST的
  58. if (!empty($params)) {
  59. curl_setopt($_curl, CURLOPT_POSTFIELDS, http_build_query($params));
  60. curl_setopt($_curl, CURLOPT_POST, true);
  61. }
  62. if (substr($url, 0, 8) == 'https://') {
  63. curl_setopt($_curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  64. curl_setopt($_curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  65. }
  66. curl_setopt($_curl, CURLOPT_URL, $url);
  67. curl_setopt($_curl, CURLOPT_RETURNTRANSFER, true);
  68. curl_setopt($_curl, CURLOPT_USERAGENT, 'API PHP CURL');
  69. curl_setopt($_curl, CURLOPT_HTTPHEADER, $_header);
  70. if ($expire > 0) {
  71. curl_setopt($_curl, CURLOPT_TIMEOUT, $expire); // 处理超时时间
  72. curl_setopt($_curl, CURLOPT_CONNECTTIMEOUT, $expire); // 建立连接超时时间
  73. }
  74. // 额外的配置
  75. if (!empty($extend)) {
  76. curl_setopt_array($_curl, $extend);
  77. }
  78. $result['result'] = curl_exec($_curl);
  79. $result['code'] = curl_getinfo($_curl, CURLINFO_HTTP_CODE);
  80. $result['info'] = curl_getinfo($_curl);
  81. if ($result['result'] === false) {
  82. $result['result'] = curl_error($_curl);
  83. $result['code'] = -curl_errno($_curl);
  84. }
  85. curl_close($_curl);
  86. return $result;
  87. }
  88. public function getWxcode(){
  89. $ACCESS_TOKEN=$this->getWxAccessToken();
  90. $url="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$ACCESS_TOKEN['access_token'];
  91. $post_data=
  92. array(
  93. 'page'=>'pages/index/index',
  94. 'scene'=>'34,S853EE4QRP'//34%2CS853EE4QRP
  95. );
  96. $post_data=json_encode($post_data);
  97. $data=$this->send_post($url,$post_data);
  98. // var_dump($data);
  99. $result=$this->data_uri($data,'image/png');
  100. return '<image src='.$result.'></image>';
  101. }
  102. /**
  103. * 消息推送http
  104. * @param $url
  105. * @param $post_data
  106. * @return bool|string
  107. */
  108. protected function send_post( $url, $post_data ) {
  109. $options = array(
  110. 'http' => array(
  111. 'method' => 'POST',
  112. 'header' => 'Content-type:application/json',
  113. //header 需要设置为 JSON
  114. 'content' => $post_data,
  115. 'timeout' => 60
  116. //超时时间
  117. )
  118. );
  119. $context = stream_context_create( $options );
  120. $result = file_get_contents( $url, false, $context );
  121. return $result;
  122. }
  123. //二进制转图片image/png
  124. public function data_uri($contents, $mime)
  125. {
  126. $base64 = base64_encode($contents);
  127. return ('data:' . $mime . ';base64,' . $base64);
  128. }
  129. }