首页 > 开发 > PHP > 正文

PHP微信开发之二维码生成类

2024-05-04 23:36:53
字体:
来源:转载
供稿:网友

这篇文章主要介绍了PHP微信开发之二维码生成类,本文使用微信接口实现二维码的生成,并直接给出示例代码,需要的朋友可以参考下

 

 
  1. <?php 
  2. /** 
  3. * Created by PhpStorm. 
  4. * User: bin 
  5. * Date: 15-1-16 
  6. * Time: 上午9:48 
  7. */ 
  8. namespace Home/Common; 
  9.  
  10. // 微信处理类 
  11. set_time_limit(30); 
  12. class Weixin{ 
  13. //构造方法 
  14. static $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
  15. static $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&"
  16. static $qrcode_get_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?"
  17.  
  18. //生成二维码 
  19. public function getEwm($wechatid,$fqid,$type = 1){ 
  20. $wechat = M('Member_public')->where(array('id'=> $wechatid))->find(); 
  21. $appid = $wechat['appid']; 
  22. $secret = $wechat['secret']; 
  23. $ACCESS_TOKEN = $this->getToken($appid,$secret); 
  24. $url = $this->getQrcodeurl($ACCESS_TOKEN,$fqid,1); 
  25. return DownLoadQr($url,time()); 
  26. protected function getQrcodeurl($ACCESS_TOKEN,$fqid,$type = 1){ 
  27. $url = self::$qrcode_url.'access_token='.$ACCESS_TOKEN
  28. if($type == 1){ 
  29. //生成永久二维码 
  30. $qrcode'{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$fqid.'}}}'
  31. }else
  32. //生成临时二维码 
  33. $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$fqid.'}}}'
  34. $result = $this->http_post_data($url,$qrcode); 
  35. $oo = json_decode($result[1]); 
  36. if(!$oo->ticket){ 
  37. $this->ErrorLogger('getQrcodeurl falied. Error Info: getQrcodeurl get failed'); 
  38. exit(); 
  39. $url = self::$qrcode_get_url.'ticket='.$oo->ticket.''
  40. return $url
  41.  
  42.  
  43. protected function getToken($appid,$secret){ 
  44. $ACCESS_TOKEN = file_get_contents(self::$token_url."appid=$appid&secret=$secret"); 
  45. $ACCESS_TOKEN = json_decode($ACCESS_TOKEN); 
  46. $ACCESS_TOKEN = $ACCESS_TOKEN->access_token; 
  47. return $ACCESS_TOKEN
  48. protected function http_post_data($url$data_string) { 
  49.  
  50. $ch = curl_init(); 
  51. curl_setopt($ch, CURLOPT_POST, 1); 
  52. curl_setopt($ch, CURLOPT_URL, $url); 
  53. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
  54. curl_setopt($ch, CURLOPT_HTTPHEADER, array
  55. 'Content-Type: application/json; charset=utf-8'
  56. 'Content-Length: ' . strlen($data_string)) 
  57. ); 
  58. ob_start(); 
  59. curl_exec($ch); 
  60. if (curl_errno($ch)) { 
  61. $this->ErrorLogger('curl falied. Error Info: '.curl_error($ch)); 
  62. $return_content = ob_get_contents(); 
  63. ob_end_clean(); 
  64. $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
  65. return array($return_code$return_content); 
  66. //下载二维码到服务器 
  67. protected function DownLoadQr($url,$filestring){ 
  68. if($url == ""){ 
  69. return false; 
  70. $filename = $filestring.'.jpg'
  71. ob_start(); 
  72. readfile($url); 
  73. $img=ob_get_contents(); 
  74. ob_end_clean(); 
  75. $size=strlen($img); 
  76. $fp2=fopen('./Uploads/qrcode/'.$filename,"a"); 
  77. if(fwrite($fp2,$img) === false){ 
  78. $this->ErrorLogger('dolwload image falied. Error Info: 无法写入图片'); 
  79. exit(); 
  80. fclose($fp2); 
  81. return './Uploads/qrcode/'.$filename
  82.  
  83. private function ErrorLogger($errMsg){ 
  84. $logger = fopen('./ErrorLog.txt''a+'); 
  85. fwrite($loggerdate('Y-m-d H:i:s')." Error Info : ".$errMsg."/r/n"); 
  86.  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表