WeChat.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /*
  3. * This file is part of the Jiannei/lumen-api-starter.
  4. *
  5. * (c) Jiannei <longjian.huang@foxmail.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace App\Support\Traits;
  11. use App\Repositories\Enums\ResponseCodeEnum;
  12. use App\Repositories\Enums\Xjc\AdminTypeEnum;
  13. use App\Repositories\Models\Base\Setting;
  14. use EasyWeChat\Factory;
  15. use Illuminate\Support\Facades\Log;
  16. trait WeChat
  17. {
  18. /**
  19. * 小程序:通过code获取openid
  20. * @param $app_id
  21. * @param $app_secret
  22. * @param $code
  23. * @return array
  24. * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
  25. */
  26. public function miniProgramByCodeGetOpenId($app_id, $code, $type)
  27. {
  28. // $app_secret = config('wechat.mini_program.default.secret');
  29. // $app_id = config('wechat.mini_program.default.app_id');
  30. $miniConfig = wechat_mini_config($type);
  31. if ($miniConfig['app_id'] != $app_id) abort(ResponseCodeEnum::HTTP_UNAUTHORIZED, 'AppID不对');
  32. $miniProgram = Factory::miniProgram($miniConfig);
  33. $data = $miniProgram->auth->session($code);
  34. if (isset($data['errcode']) && (int)$data['errcode'] !== 0) {
  35. Log::error($data);
  36. abort(ResponseCodeEnum::HTTP_UNAUTHORIZED, $data['errmsg']);
  37. }
  38. return [
  39. $data['session_key'],
  40. $data['openid'],
  41. isset($data['unionid']) ? $data['openid'] : false,
  42. ];
  43. }
  44. }