WeChat.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace app\admin\controller;
  3. use think\App;
  4. use app\admin\BaseController as Base;
  5. use think\facade\Validate;
  6. use think\facade\Db;
  7. use think\Wechat as wchat;
  8. class WeChat extends Base {
  9. public $wechat;
  10. public function __construct(App $App) {
  11. parent::__construct($App);
  12. $wechat_conf=["appid"=>env("WECHAT.APPID"),"appsecret"=>env("WECHAT.APPSECRET")];
  13. $this->wechat=new wchat($wechat_conf);
  14. }
  15. // 获取用户信息{subscribe,openid,nickname,sex,city,province,country,language,headimgurl,subscribe_time,[unionid]}
  16. public function getinfo(){
  17. $code =$this->request->only(["code"=>"","openid"=>""],"post","trim");
  18. $valid =Validate::rule([
  19. "code|微信授权Code"=>"requireWithout:openid|max:255|min:5",
  20. "openid|微信openid"=>"requireWithout:code|max:255|min:5",
  21. ]);
  22. if($valid->check($code)==false) return error_show(1004,$valid->getError());
  23. if($code['openid']==""){
  24. $uid =$this->wechat->getAccessTokenByCode($code['code']);
  25. if($uid==false){
  26. return error_show(1004,"未获取到用户数据");
  27. }
  28. if(!isset($uid['openid'])|| $uid['openid']=='') return error_show(1004,"未获取到用户数据");
  29. }else$uid['openid']=$code['openid'];
  30. $Dbuser =Db::name("wechat_user")->where(["openid"=>$uid['openid']])->findOrEmpty();
  31. if(empty($Dbuser)){
  32. if($code['openid']!="") return error_show(1004,"未找到用户数据");
  33. $useinfo = $this->wechat->getUserInfo($uid['openid']);
  34. if($useinfo==false)return error_show(1004,"未获取到用户数据");
  35. $Dbuser = [
  36. "openid"=>$useinfo['openid'],
  37. "nickname"=>$useinfo['nickname'],
  38. "mobile"=>'',
  39. "gender"=>$useinfo['sex'],
  40. "avatar"=>$useinfo['headimgurl'],
  41. "subscribe_time"=>date("Y-m-d H:i:s",$useinfo['subscribe_time']),
  42. "addr"=>"{$useinfo['province']}/{$useinfo['city']}/{$useinfo['country']}",
  43. "status"=>$useinfo['subscribe'],
  44. "companyArr"=>'',
  45. "is_show"=>0,
  46. "addtime"=>date("Y-m-d H:i:s"),
  47. "updatetime"=>date("Y-m-d H:i:s")
  48. ];
  49. $Dbuser['id']=Db::name("wechat_user")->insertGetId($Dbuser);
  50. }else
  51. {
  52. $Dbuser["updatetime"]=date("Y-m-d H:i:s");
  53. Db::name("wechat_user")->save($Dbuser);
  54. }
  55. $Dbuser["companyArr"]=$Dbuser['companyArr']!=''?json_decode($Dbuser['companyArr'],true):[];
  56. return app_show(0,"获取成功",$Dbuser);
  57. }
  58. //网页端调用jssdk配置config
  59. public function getConfig(){
  60. $url =$this->request->only(["url"=>""],"post","trim");
  61. $valid =Validate::rule(["url|微信授权地址"=>"require|max:255|min:5"]);
  62. if($valid->check($url)==false) return error_show(1004,$valid->getError());
  63. $baseconfig =$this->wechat->getJsTicket();
  64. if($baseconfig==false){
  65. return error_show(1002,"签名获取失败");
  66. }
  67. $baseconfig =$this->wechat->getJsSign($url['url']);
  68. if($baseconfig==false){
  69. return error_show(1004,"签名获取失败");
  70. }
  71. return app_show(0,"获取成功",$baseconfig);
  72. }
  73. }