海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
3.5 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\AdminSetting;
  5. use App\Models\Agent;
  6. use EasyWeChat\Factory;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. /**
  10. * 小程序授权等相关
  11. * Class MiniProgramController
  12. * @package App\Http\Controllers\Api
  13. */
  14. class MiniProgramController extends Controller
  15. {
  16. // 第三方平台授权事件通知
  17. public function authEvent(Request $request)
  18. {
  19. DB::table('mini_program_events')
  20. ->insert([
  21. 'type' => 0,
  22. 'response' => json_encode($request->all()),
  23. 'event' => 'all',
  24. 'created_at' => now(),
  25. ]);
  26. $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']);
  27. $config = [ // 第三方平台信息
  28. 'app_id' => $setting['service_appid'],
  29. 'secret' => $setting['service_appsecret'],
  30. 'token' => $setting['service_token'],
  31. 'aes_key' => $setting['service_aeskey'],
  32. ];
  33. $openPlatform = Factory::openPlatform($config);
  34. $server = $openPlatform->server;
  35. // 处理授权成功事件:Guard::EVENT_AUTHORIZED
  36. // 处理授权更新事件:Guard::EVENT_UPDATE_AUTHORIZED
  37. // 处理授权取消事件:Guard::EVENT_UNAUTHORIZED
  38. $server->push(function ($message) {
  39. DB::table('mini_program_events')
  40. ->insert([
  41. 'type' => 0,
  42. 'response' => json_encode($message),
  43. 'event' => $message['InfoType'] ?? '',
  44. 'created_at' => now()
  45. ]);
  46. if (isset($message['InfoType'], $message['status'], $message['msg'], $message['info']) && $message['status'] == 0 && $message['msg'] == 'OK') {
  47. //注册成功授权通知
  48. if ($message['InfoType'] == 'notify_third_fasteregister') {
  49. Agent::where(['company_name' => $message['info']['name'], 'credit_codes' => $message['info']['code']])
  50. ->update(['appid' => $message['appid']]);
  51. }
  52. }
  53. });
  54. return $server->serve();
  55. }
  56. public function msgEvent(Request $request)
  57. {
  58. $appid = $request->route('appid', '');
  59. DB::table('mini_program_events')
  60. ->insert([
  61. 'type' => 1,
  62. 'response' => json_encode($request->all()),
  63. 'appid' => $appid,
  64. 'event' => 'all',
  65. 'created_at' => now(),
  66. ]);
  67. $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']);
  68. $config = [
  69. 'app_id' => $setting['service_appid'],
  70. 'secret' => $setting['service_appsecret'],
  71. 'token' => $setting['service_token'],
  72. 'aes_key' => $setting['service_aeskey'],
  73. ];
  74. $openPlatform = Factory::openPlatform($config);
  75. $refreshToken = $openPlatform->getAuthorizer($appid)['authorization_info']['authorizer_refresh_token'] ?? null;
  76. if (!$refreshToken) {
  77. return $this->error('获取refresh_token失败');
  78. }
  79. $server = $openPlatform->miniProgram($appid, $refreshToken)->server;
  80. //接收事件 https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/audit_event.html
  81. $server->push(function ($message) {
  82. DB::table('mini_program_events')
  83. ->insert([
  84. 'type' => 1,
  85. 'response' => json_encode($message),
  86. 'event' => $message['MsgType'] ?? '',
  87. 'created_at' => now()
  88. ]);
  89. if (isset($message['MsgType'], $message['Event']) && $message['MsgType'] == 'event') {
  90. }
  91. });
  92. //试试还是这个?
  93. $openPlatform->server->push(function ($message) {
  94. DB::table('mini_program_events')
  95. ->insert([
  96. 'type' => 3,
  97. 'response' => json_encode($message),
  98. 'event' => $message['MsgType'] ?? '',
  99. 'created_at' => now()
  100. ]);
  101. });
  102. return $server->serve();
  103. }
  104. }