public function gate()
	{
		/**
		 * @var Processor $processor
		 */
		try {


			$type = Input::get('type');
			$input = Input::get('input');
			$secret = $input['secret'];
			unset($input['secret']);

			Secure::sign($input, $type, $secret);

			$input = $this->getVerifiedInput('gateway', $type, $input);

			$processor = $this->makeProcessor($type, $input);


			// debug response

			$responseData = null;
			$paymentData = null;

			$response = $processor->response();
			$responseData = $response->data();
			$paymentData = $response->error() ? null : $processor->item()->toArray();

			$return = array(
				'response' => $responseData,
				'payment'  => $paymentData,
			);

		} catch (ProcessorException $e) {
			$return = array(
				'response' => Processor::makeError($e)->data(),
				'payment'  => null,
			);
		}

		$return = json_encode($return, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

		return $return;

	}