* $myResponse = $myRequest->send(); * // now do something with the $myResponse object, test for success, etc. * * */ abstract class AbstractResponse implements ResponseInterface { /** * The embodied request object. * * @var RequestInterface */ protected $request; /** * The data contained in the response. * * @var mixed */ protected $data; /** * Constructor * * @param RequestInterface $request the initiating request. * @param mixed $data */ public function __construct(RequestInterface $request, $data) { $this->request = $request; $this->data = $data; } /** * Get the initiating request object. * * @return RequestInterface */ public function getRequest() { return $this->request; } /** * Is the response successful? * * @return boolean */ public function isPending() { return false; } /** * Does the response require a redirect? * * @return boolean */ public function isRedirect() { return false; } /** * Is the response a transparent redirect? * * @return boolean */ public function isTransparentRedirect() { return false; } /** * Is the transaction cancelled by the user? * * @return boolean */ public function isCancelled() { return false; } /** * Get the response data. * * @return mixed */ public function getData() { return $this->data; } /** * Response Message * * @return null|string A response message from the payment gateway */ public function getMessage() { return null; } /** * Response code * * @return null|string A response code from the payment gateway */ public function getCode() { return null; } /** * Gateway Reference * * @return null|string A reference provided by the gateway to represent this transaction */ public function getTransactionReference() { return null; } /** * Get the transaction ID as generated by the merchant website. * * @return string */ public function getTransactionId() { return null; } /** * Gets the redirect target url. * * @return string */ public function getRedirectUrl() { return null; } /** * Get the required redirect method (either GET or POST). * * @return string */ public function getRedirectMethod() { return 'GET'; } /** * Gets the redirect form data array, if the redirect method is POST. * * @return array */ public function getRedirectData() { return []; } /** * Automatically perform any required redirect * * This method is meant to be a helper for simple scenarios. If you want to customize the * redirection page, just call the getRedirectUrl() and getRedirectData() methods directly. * * @return void */ public function redirect() { $this->getRedirectResponse()->send(); } /** * @return HttpRedirectResponse|HttpResponse */ public function getRedirectResponse() { $this->validateRedirect(); if ('GET' === $this->getRedirectMethod()) { return new HttpRedirectResponse($this->getRedirectUrl()); } $hiddenFields = ''; foreach ($this->getRedirectData() as $key => $value) { $hiddenFields .= sprintf( '', htmlentities($key, ENT_QUOTES, 'UTF-8', false), htmlentities($value, ENT_QUOTES, 'UTF-8', false) )."\n"; } $output = '