WechatmpController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace app\index\controller;
  3. use think\exception\ValidateException;
  4. use app\model\Openid;
  5. use app\samos\wechat\Wechatmp;
  6. use function Qiniu\entry;
  7. class WechatmpController extends Base
  8. {
  9. public function wechat()
  10. {
  11. $backurl = input('param.backurl');
  12. $app = Wechatmp::makemp();
  13. if (!empty($app)) {
  14. $oauth = $app->oauth;
  15. //回调地址
  16. $callback_url = gethttpshost() . $_SERVER["SCRIPT_NAME"] . '?from=mp&s=/index/wechatmp/wechatres&i=' . weid() . '&xmtoken=' . $this->getAppToken() . '&uid=' . input('param.uid') . '&backurl=' . urlencode($backurl);
  17. $response = $oauth->scopes(['snsapi_base'])->redirect($callback_url);
  18. // 将响应输出
  19. $response->send();
  20. } else {
  21. $this->eothtmlmsg();
  22. }
  23. }
  24. public function wechatuserinfo()
  25. {
  26. $backurl = input('param.backurl');
  27. $app = Wechatmp::makemp();
  28. if (!empty($app)) {
  29. $oauth = $app->oauth;
  30. //回调地址
  31. $callback_url = gethttpshost() . $_SERVER["SCRIPT_NAME"] . '?from=mp&s=/index/wechatmp/wechatres&i=' . weid() . '&xmtoken=' . $this->getAppToken() . '&uid=' . input('param.uid') . '&backurl=' . urlencode($backurl);
  32. $response = $oauth->scopes(['snsapi_userinfo'])->redirect($callback_url);
  33. // 将响应输出
  34. $response->send();
  35. } else {
  36. $this->eothtmlmsg();
  37. }
  38. }
  39. public function wechatres()
  40. {
  41. $app = Wechatmp::makemp();
  42. if (!empty($app)) {
  43. $oauth = $app->oauth;
  44. // 获取 OAuth 授权结果用户信息
  45. $user = $oauth->user();
  46. //print_r($user);}
  47. $uid = input('get.uid', '', 'serach_in');
  48. if ($uid == 'undefined' || $uid == 'null') {
  49. $uid = '';
  50. }
  51. $xmtoken = input('get.xmtoken', '', 'serach_in');
  52. $openid = $user->getId();
  53. if (empty($openid)) {
  54. return $this->json(['msg' => 'openid获取不成功', 'data' => $user]);
  55. }
  56. if (!empty($uid)) {
  57. Openid::addupdate([
  58. 'openid' => $openid,
  59. 'ptype' => 'mp',
  60. 'uid' => $uid
  61. ]);
  62. }
  63. $data = $this->userInfo;
  64. $data['ptype'] = 'mp';
  65. $data['openid'] = $openid;
  66. $data['nickname'] = $user->getNickname();
  67. $data['avatar'] = $user->getAvatar();
  68. $data['upnickname'] = $user->getNickname();
  69. $data['upavatar'] = $user->getAvatar();
  70. $data['weid'] = weid();
  71. $this->setAppToken($data, $xmtoken);
  72. $backurl = input('get.backurl');
  73. $backurl = str_replace("xmtokenvalue", $xmtoken, $backurl);
  74. return redirect($backurl);
  75. } else {
  76. $this->eothtmlmsg();
  77. }
  78. }
  79. public function getopenid()
  80. {
  81. $backurl = input('param.backurl');
  82. $app = Wechatmp::makemp();
  83. if (!empty($app)) {
  84. $oauth = $app->oauth;
  85. //回调地址
  86. $callback_url = gethttpshost() . $_SERVER["SCRIPT_NAME"] . '?from=mp&s=/index/wechatmp/getopenidres&i=' . weid() . '&xmtoken=' . $this->getAppToken() . '&uid=' . input('param.uid', '', 'serach_in') . '&backurl=' . urlencode($backurl);
  87. $response = $oauth->scopes(['snsapi_base'])->redirect($callback_url);
  88. // 将响应输出
  89. $response->send();
  90. } else {
  91. $this->eothtmlmsg();
  92. }
  93. }
  94. public function getopenidres()
  95. {
  96. $app = Wechatmp::makemp();
  97. if (!empty($app)) {
  98. $oauth = $app->oauth;
  99. // 获取 OAuth 授权结果用户信息
  100. $user = $oauth->user();
  101. $openid = $user->getId();
  102. $backurl = input('get.backurl');
  103. $backurl = str_replace('#/', '', $backurl);
  104. if (strpos($backurl, '?') !== false) {
  105. $backurl = $backurl . '&openid=' . $openid;
  106. } else {
  107. $backurl = $backurl . '?openid=' . $openid;
  108. }
  109. return redirect($backurl);
  110. } else {
  111. $this->eothtmlmsg();
  112. }
  113. }
  114. function eothtmlmsg()
  115. {
  116. echo <<< EOT
  117. <!DOCTYPE html>
  118. <html lang="zh-cmn-Hans">
  119. <head>
  120. <meta charset="UTF-8">
  121. <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
  122. <title>公众号配置不正确</title>
  123. <link rel="stylesheet" href="static/style/weui.css"/>
  124. </head>
  125. <body ontouchstart data-weui-mode="care" >
  126. <div class="weui-msg">
  127. <div class="weui-msg__icon-area"><i class="weui-icon-warn weui-icon_msg"></i></div>
  128. <div class="weui-msg__text-area">
  129. <h2 style="text-align: center;" class="weui-msg__title">公众号配置不正确</h2>
  130. </div>
  131. </div>
  132. </body>
  133. </html>
  134. EOT;
  135. }
  136. }