Open Monograph Press  3.3.0
vendor/omnipay/common/src/Common/Message/AbstractResponse.php
1 <?php
6 namespace Omnipay\Common\Message;
7 
9 use Symfony\Component\HttpFoundation\RedirectResponse as HttpRedirectResponse;
11 
30 abstract class AbstractResponse implements ResponseInterface
31 {
32 
38  protected $request;
39 
45  protected $data;
46 
53  public function __construct(RequestInterface $request, $data)
54  {
55  $this->request = $request;
56  $this->data = $data;
57  }
58 
64  public function getRequest()
65  {
66  return $this->request;
67  }
68 
74  public function isPending()
75  {
76  return false;
77  }
78 
84  public function isRedirect()
85  {
86  return false;
87  }
88 
94  public function isTransparentRedirect()
95  {
96  return false;
97  }
98 
104  public function isCancelled()
105  {
106  return false;
107  }
108 
114  public function getData()
115  {
116  return $this->data;
117  }
118 
124  public function getMessage()
125  {
126  return null;
127  }
128 
134  public function getCode()
135  {
136  return null;
137  }
138 
144  public function getTransactionReference()
145  {
146  return null;
147  }
148 
154  public function getTransactionId()
155  {
156  return null;
157  }
158 
164  public function getRedirectUrl()
165  {
166  return null;
167  }
168 
174  public function getRedirectMethod()
175  {
176  return 'GET';
177  }
178 
184  public function getRedirectData()
185  {
186  return [];
187  }
188 
197  public function redirect()
198  {
199  $this->getRedirectResponse()->send();
200  }
201 
205  public function getRedirectResponse()
206  {
207  $this->validateRedirect();
208 
209  if ('GET' === $this->getRedirectMethod()) {
210  return HttpRedirectResponse::create($this->getRedirectUrl());
211  }
212 
213  $hiddenFields = '';
214  foreach ($this->getRedirectData() as $key => $value) {
215  $hiddenFields .= sprintf(
216  '<input type="hidden" name="%1$s" value="%2$s" />',
217  htmlentities($key, ENT_QUOTES, 'UTF-8', false),
218  htmlentities($value, ENT_QUOTES, 'UTF-8', false)
219  )."\n";
220  }
221 
222  $output = '<!DOCTYPE html>
223 <html>
224 <head>
225  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
226  <title>Redirecting...</title>
227 </head>
228 <body onload="document.forms[0].submit();">
229  <form action="%1$s" method="post">
230  <p>Redirecting to payment page...</p>
231  <p>
232  %2$s
233  <input type="submit" value="Continue" />
234  </p>
235  </form>
236 </body>
237 </html>';
238  $output = sprintf(
239  $output,
240  htmlentities($this->getRedirectUrl(), ENT_QUOTES, 'UTF-8', false),
241  $hiddenFields
242  );
243 
244  return HttpResponse::create($output);
245  }
246 
252  protected function validateRedirect()
253  {
254  if (!$this instanceof RedirectResponseInterface || !$this->isRedirect()) {
255  throw new RuntimeException('This response does not support redirection.');
256  }
257 
258  if (empty($this->getRedirectUrl())) {
259  throw new RuntimeException('The given redirectUrl cannot be empty.');
260  }
261 
262  if (!in_array($this->getRedirectMethod(), ['GET', 'POST'])) {
263  throw new RuntimeException('Invalid redirect method "'.$this->getRedirectMethod().'".');
264  }
265  }
266 }
Omnipay\Common\Message\RequestInterface
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/RequestInterface.php:16
Omnipay\Common\Message\AbstractResponse\__construct
__construct(RequestInterface $request, $data)
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:59
Omnipay\Common\Message\AbstractResponse\isRedirect
isRedirect()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:90
Symfony\Component\HttpFoundation\Response
Definition: paymethod/paypal/lib/vendor/symfony/http-foundation/Response.php:19
Omnipay\Common\Message\RedirectResponseInterface
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/RedirectResponseInterface.php:18
Omnipay\Common\Message\AbstractResponse\isTransparentRedirect
isTransparentRedirect()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:100
Omnipay\Common\Message\AbstractResponse\isPending
isPending()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:80
Omnipay\Common\Message\AbstractResponse\getMessage
getMessage()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:130
Omnipay\Common\Message\AbstractResponse\getCode
getCode()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:140
Omnipay\Common\Message\AbstractResponse\$data
$data
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractResponse.php:52
Omnipay\Common\Message\AbstractResponse\getRedirectMethod
getRedirectMethod()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:180
Omnipay\Common\Exception\RuntimeException
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Exception/RuntimeException.php:8
Omnipay\Common\Message\AbstractResponse\getTransactionId
getTransactionId()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:160
Omnipay\Common\Message\AbstractResponse\getData
getData()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:120
Symfony\Component\HttpFoundation\RedirectResponse
Definition: lib/vendor/symfony/http-foundation/RedirectResponse.php:19
Omnipay\Common\Message\AbstractResponse\getRedirectResponse
getRedirectResponse()
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractResponse.php:185
Omnipay\Common\Message\AbstractResponse\getRedirectUrl
getRedirectUrl()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:170
Omnipay\Common\Message\AbstractResponse\validateRedirect
validateRedirect()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:258
Omnipay\Common\Message\AbstractResponse\redirect
redirect()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:203
Omnipay\Common\Message\AbstractResponse\getRedirectData
getRedirectData()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:190
Omnipay\Common\Message\AbstractResponse\$request
$request
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractResponse.php:42
Omnipay\Common\Message
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:6
Omnipay\Common\Message\AbstractResponse\isCancelled
isCancelled()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:110
Omnipay\Common\Message\AbstractResponse\getTransactionReference
getTransactionReference()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:150
Omnipay\Common\Message\AbstractResponse\getRequest
getRequest()
Definition: vendor/omnipay/common/src/Common/Message/AbstractResponse.php:70