protected function processRequestOssList(DataPacket $data) { /** @var Request $request */ $request = app(Request::class); $input = $request->only(['username', 'password']); extract($input, EXTR_OVERWRITE); $data->addRequiredPair('Username', $username); if (isset($password)) { $data->addRequiredPair('Password', $password); } app(SessionInterface::class)->set('view.RequestOssList.data', $input); }
/** * Connect a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function connect(TerminalSender $sender, Request $request, $server) { $server = Server::query()->findOrFail($server); $sender->setCredentials($server->uri); $data = $request->only(['name', 'operator_id', 'point_of_sale']); $packet = new DataPacket(); $packet->addRequiredPair('Username', $server->username); $packet->addRequiredPair('Password', $server->password); $packet->addPair('global_id', $data['operator_id']); $packet->addPair('PointOfSale', $data['point_of_sale']); $packet->addPair('version_id', '1.0'); $result = $sender->send('RequestConnection', $packet); if (empty($result)) { throw new \RuntimeException(); } $result = $sender->resultToArray($result); if (Arr::get($result, 'Result') != 'OK') { throw new \RuntimeException('Error'); } $terminal = new Terminal(['name' => Arr::get($data, 'name'), 'operator_id' => Arr::get($data, 'operator_id'), 'point_of_sale' => Arr::get($data, 'point_of_sale'), 'external_id' => Arr::get($result, 'TerminalID'), 'guid' => Arr::get($result, 'GlobalID'), 'password' => Arr::get($result, 'Password'), 'server_id' => $server->id]); $terminal->save(); return redirect()->action('\\' . static::class . '@index', [$server->id])->with('message-success', 'Terminal ' . $terminal->id . ' connected'); }
/** * @param string $operation * @param DataPacket $data * @param array $files * * @return string */ public function send($operation, DataPacket $data, $files = [], $decode = true) { if (!$this->ready()) { throw new \RuntimeException('Invalid parameters'); } $data->addRequiredPair('Type', $operation); $data->addRequiredPair('terminalID', $this->terminal); $data->addRequiredPair('TerminalID', $this->terminal); if (!@$data->getRequiredItem('Password')) { $data->addRequiredPair('Password', $this->password); } $data->addRequiredPair('TimePacket', time()); $data = $data->serializeToString(); $data = base64_encode($data); $data = str_replace(['+', '/'], ['-', '_'], $data); $send = [['name' => 'destination', 'contents' => $data], ['name' => 'Hash', 'contents' => md5($data)]]; if (!empty($files)) { foreach ($files as $name => &$file) { $send[] = ['name' => $name, 'contents' => $handle = fopen($file, 'r')]; $file = [$handle, $file]; } } $send = new MultipartStream($send); $request = new Request('POST', $this->host, ['Content-Type' => 'multipart/form-data; boundary=' . $send->getBoundary()], $send); $return = $this->getResponse($request, $decode); foreach ($files as $name => $file) { fclose($file[0]); unlink($file[1]); } return $return; }