| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Models\AdminSetting; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Models\Agent; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Models\MiniProgramUploadLog; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Service\OpenPlatform; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use EasyWeChat\Factory; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Http\Request; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Support\Facades\DB; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -27,16 +28,8 @@ class MiniProgramController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'created_at' => now(), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$config = [ // 第三方平台信息
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'app_id'   => $setting['service_appid'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'secret'   => $setting['service_appsecret'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'token'    => $setting['service_token'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'aes_key'  => $setting['service_aeskey'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$openPlatform = Factory::openPlatform($config); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$server = $openPlatform->server; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$openPlatform = new OpenPlatform(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$server = $openPlatform->server(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// 处理授权成功事件:Guard::EVENT_AUTHORIZED
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// 处理授权更新事件:Guard::EVENT_UPDATE_AUTHORIZED
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -75,23 +68,15 @@ class MiniProgramController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									'created_at' => now(), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$config = [ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'app_id'   => $setting['service_appid'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'secret'   => $setting['service_appsecret'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'token'    => $setting['service_token'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								'aes_key'  => $setting['service_aeskey'], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$openPlatform = Factory::openPlatform($config); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$refreshToken = $openPlatform->getAuthorizer($appid)['authorization_info']['authorizer_refresh_token'] ?? null; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$openPlatform = new OpenPlatform(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$refreshToken = $openPlatform->refreshToken($appid); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (!$refreshToken) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								return $this->error('获取refresh_token失败'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$server = $openPlatform->miniProgram($appid, $refreshToken)->server; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							//接收事件 https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/audit_event.html
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$server->push(function ($message) use ($appid) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$server->push(function ($message) use ($appid, $openPlatform, $refreshToken) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								DB::table('mini_program_events') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									->insert([ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										'type' => 1, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -107,6 +92,14 @@ class MiniProgramController extends Controller | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										'weapp_audit_fail' => 1, //拒绝
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										'weapp_audit_delay' => 4, //审核延后
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									//如果审核成功则发布
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if ($message['Event'] == 'weapp_audit_success') { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										$code = $openPlatform->code($appid, $refreshToken); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										$code->release(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									//保存到日志
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$log = MiniProgramUploadLog::query() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										->where('appid', $appid) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										->orderBy('id', 'desc') | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |