Open Monograph Press  3.3.0
vendor/omnipay/common/src/Common/Message/AbstractRequest.php
1 <?php
6 namespace Omnipay\Common\Message;
7 
11 use Money\Money;
12 use Money\Number;
24 
66 abstract class AbstractRequest implements RequestInterface
67 {
68  use ParametersTrait {
69  setParameter as traitSetParameter;
70  }
71 
77  protected $httpClient;
78 
84  protected $httpRequest;
85 
91  protected $response;
92 
96  protected $currencies;
97 
101  protected $zeroAmountAllowed = true;
102 
106  protected $negativeAmountAllowed = false;
107 
114  public function __construct(ClientInterface $httpClient, HttpRequest $httpRequest)
115  {
116  $this->httpClient = $httpClient;
117  $this->httpRequest = $httpRequest;
118  $this->initialize();
119  }
120 
131  public function initialize(array $parameters = array())
132  {
133  if (null !== $this->response) {
134  throw new RuntimeException('Request cannot be modified after it has been sent!');
135  }
136 
137  $this->parameters = new ParameterBag;
138 
140 
141  return $this;
142  }
143 
152  protected function setParameter($key, $value)
153  {
154  if (null !== $this->response) {
155  throw new RuntimeException('Request cannot be modified after it has been sent!');
156  }
157 
158  return $this->traitSetParameter($key, $value);
159  }
160 
166  public function getTestMode()
167  {
168  return $this->getParameter('testMode');
169  }
170 
177  public function setTestMode($value)
178  {
179  return $this->setParameter('testMode', $value);
180  }
181 
187  public function getCard()
188  {
189  return $this->getParameter('card');
190  }
191 
198  public function setCard($value)
199  {
200  if ($value && !$value instanceof CreditCard) {
201  $value = new CreditCard($value);
202  }
203 
204  return $this->setParameter('card', $value);
205  }
206 
212  public function getToken()
213  {
214  return $this->getParameter('token');
215  }
216 
223  public function setToken($value)
224  {
225  return $this->setParameter('token', $value);
226  }
227 
233  public function getCardReference()
234  {
235  return $this->getParameter('cardReference');
236  }
237 
244  public function setCardReference($value)
245  {
246  return $this->setParameter('cardReference', $value);
247  }
248 
252  protected function getCurrencies()
253  {
254  if ($this->currencies === null) {
255  $this->currencies = new ISOCurrencies();
256  }
257 
258  return $this->currencies;
259  }
260 
266  private function getMoney($amount = null)
267  {
268  $currencyCode = $this->getCurrency() ?: 'USD';
269  $currency = new Currency($currencyCode);
270 
271  $amount = $amount !== null ? $amount : $this->getParameter('amount');
272 
273  if ($amount === null) {
274  return null;
275  } elseif ($amount instanceof Money) {
276  $money = $amount;
277  } elseif (is_integer($amount)) {
278  $money = new Money($amount, $currency);
279  } else {
280  $moneyParser = new DecimalMoneyParser($this->getCurrencies());
281 
282  $number = Number::fromString($amount);
283 
284  // Check for rounding that may occur if too many significant decimal digits are supplied.
285  $decimal_count = strlen($number->getFractionalPart());
286  $subunit = $this->getCurrencies()->subunitFor($currency);
287  if ($decimal_count > $subunit) {
288  throw new InvalidRequestException('Amount precision is too high for currency.');
289  }
290 
291  $money = $moneyParser->parse((string) $number, $currency);
292  }
293 
294  // Check for a negative amount.
295  if (!$this->negativeAmountAllowed && $money->isNegative()) {
296  throw new InvalidRequestException('A negative amount is not allowed.');
297  }
298 
299  // Check for a zero amount.
300  if (!$this->zeroAmountAllowed && $money->isZero()) {
301  throw new InvalidRequestException('A zero amount is not allowed.');
302  }
303 
304  return $money;
305  }
306 
313  public function getAmount()
314  {
315  $money = $this->getMoney();
316 
317  if ($money !== null) {
318  $moneyFormatter = new DecimalMoneyFormatter($this->getCurrencies());
319 
320  return $moneyFormatter->format($money);
321  }
322  }
323 
330  public function setAmount($value)
331  {
332  return $this->setParameter('amount', $value !== null ? (string) $value : null);
333  }
334 
340  public function getAmountInteger()
341  {
342  $money = $this->getMoney();
343 
344  if ($money !== null) {
345  return (int) $money->getAmount();
346  }
347  }
348 
355  public function setAmountInteger($value)
356  {
357  return $this->setParameter('amount', (int) $value);
358  }
359 
366  public function setMoney(Money $value)
367  {
368  $currency = $value->getCurrency()->getCode();
369 
370  $this->setCurrency($currency);
371 
372  return $this->setParameter('amount', $value);
373  }
374 
380  public function getCurrency()
381  {
382  return $this->getParameter('currency');
383  }
384 
391  public function setCurrency($value)
392  {
393  if ($value !== null) {
394  $value = strtoupper($value);
395  }
396  return $this->setParameter('currency', $value);
397  }
398 
404  public function getCurrencyNumeric()
405  {
406  if (! $this->getCurrency()) {
407  return null;
408  }
409 
410  $currency = new Currency($this->getCurrency());
411 
412  if ($this->getCurrencies()->contains($currency)) {
413  return (string) $this->getCurrencies()->numericCodeFor($currency);
414  }
415  }
416 
422  public function getCurrencyDecimalPlaces()
423  {
424  if ($this->getCurrency()) {
425  $currency = new Currency($this->getCurrency());
426  if ($this->getCurrencies()->contains($currency)) {
427  return $this->getCurrencies()->subunitFor($currency);
428  }
429  }
430 
431  return 2;
432  }
433 
440  public function formatCurrency($amount)
441  {
442  $money = $this->getMoney((string) $amount);
443  $formatter = new DecimalMoneyFormatter($this->getCurrencies());
444 
445  return $formatter->format($money);
446  }
447 
453  public function getDescription()
454  {
455  return $this->getParameter('description');
456  }
457 
464  public function setDescription($value)
465  {
466  return $this->setParameter('description', $value);
467  }
468 
476  public function getTransactionId()
477  {
478  return $this->getParameter('transactionId');
479  }
480 
487  public function setTransactionId($value)
488  {
489  return $this->setParameter('transactionId', $value);
490  }
491 
500  public function getTransactionReference()
501  {
502  return $this->getParameter('transactionReference');
503  }
504 
511  public function setTransactionReference($value)
512  {
513  return $this->setParameter('transactionReference', $value);
514  }
515 
521  public function getItems()
522  {
523  return $this->getParameter('items');
524  }
525 
532  public function setItems($items)
533  {
534  if ($items && !$items instanceof ItemBag) {
535  $items = new ItemBag($items);
536  }
537 
538  return $this->setParameter('items', $items);
539  }
540 
546  public function getClientIp()
547  {
548  return $this->getParameter('clientIp');
549  }
550 
557  public function setClientIp($value)
558  {
559  return $this->setParameter('clientIp', $value);
560  }
561 
567  public function getReturnUrl()
568  {
569  return $this->getParameter('returnUrl');
570  }
571 
578  public function setReturnUrl($value)
579  {
580  return $this->setParameter('returnUrl', $value);
581  }
582 
588  public function getCancelUrl()
589  {
590  return $this->getParameter('cancelUrl');
591  }
592 
599  public function setCancelUrl($value)
600  {
601  return $this->setParameter('cancelUrl', $value);
602  }
603 
609  public function getNotifyUrl()
610  {
611  return $this->getParameter('notifyUrl');
612  }
613 
620  public function setNotifyUrl($value)
621  {
622  return $this->setParameter('notifyUrl', $value);
623  }
624 
633  public function getIssuer()
634  {
635  return $this->getParameter('issuer');
636  }
637 
647  public function setIssuer($value)
648  {
649  return $this->setParameter('issuer', $value);
650  }
651 
660  public function getPaymentMethod()
661  {
662  return $this->getParameter('paymentMethod');
663  }
664 
674  public function setPaymentMethod($value)
675  {
676  return $this->setParameter('paymentMethod', $value);
677  }
678 
684  public function send()
685  {
686  $data = $this->getData();
687 
688  return $this->sendData($data);
689  }
690 
696  public function getResponse()
697  {
698  if (null === $this->response) {
699  throw new RuntimeException('You must call send() before accessing the Response!');
700  }
701 
703  }
704 }
Omnipay\Common\Message\AbstractRequest\setReturnUrl
setReturnUrl($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:596
Omnipay\Common\Message\AbstractRequest\$parameters
$parameters
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:72
Omnipay\Common\Message\AbstractRequest\getToken
getToken()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:230
Money\Money
Definition: Money.php:16
Money\Currencies\ISOCurrencies
Definition: ISOCurrencies.php:14
Omnipay\Common\Message\AbstractRequest\getTestMode
getTestMode()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:184
Omnipay\Common\Message\AbstractRequest\$httpRequest
$httpRequest
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:92
Omnipay\Common\Message\AbstractRequest\setNotifyUrl
setNotifyUrl($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:638
Omnipay\Common\Message\AbstractRequest\$zeroAmountAllowed
$zeroAmountAllowed
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:110
Omnipay\Common\Message\AbstractRequest\setMoney
setMoney(Money $value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:384
Omnipay\Common\Message\AbstractRequest\getParameter
getParameter($key)
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:172
Omnipay\Common\Message\AbstractRequest\formatCurrency
formatCurrency($amount)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:458
Omnipay\Common\Message\AbstractRequest\setTestMode
setTestMode($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:195
Money
Omnipay\Common\Message\AbstractRequest\setParameter
setParameter($key, $value)
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:185
Omnipay\Common\Message\AbstractRequest\getCurrency
getCurrency()
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:391
Omnipay\Common\Message\AbstractRequest\setDescription
setDescription($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:482
Omnipay\Common\Message\AbstractRequest\setAmount
setAmount($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:348
Omnipay\Common\Message\AbstractRequest\getCurrencyNumeric
getCurrencyNumeric()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:422
Omnipay\Common\Message\AbstractRequest\getItems
getItems()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:539
Omnipay\Common\Message\AbstractRequest\$negativeAmountAllowed
$negativeAmountAllowed
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:118
Omnipay\Common\Message\AbstractRequest\getDescription
getDescription()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:471
Money\Number
Definition: Number.php:10
Omnipay\Common\Message\AbstractRequest\setTransactionId
setTransactionId($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:505
Symfony\Component\HttpFoundation\Request
Definition: paymethod/paypal/lib/vendor/symfony/http-foundation/Request.php:31
Omnipay\Common\Message\AbstractRequest\getPaymentMethod
getPaymentMethod()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:678
Omnipay\Common\Message\AbstractRequest\getIssuer
getIssuer()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:651
Omnipay\Common\Message\AbstractRequest\setPaymentMethod
setPaymentMethod($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:692
Omnipay\Common\Message\AbstractRequest\send
send()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:702
Omnipay\Common\Message\AbstractRequest\initialize
initialize(array $parameters=array())
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:143
Money\Formatter\DecimalMoneyFormatter
Definition: DecimalMoneyFormatter.php:14
Omnipay\Common\Message\AbstractRequest\getAmountInteger
getAmountInteger()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:358
Omnipay\Common\Exception\InvalidRequestException
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Exception/InvalidRequestException.php:10
Omnipay\Common\Helper\initialize
static initialize($target, $parameters)
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Helper.php:81
Omnipay\Common\Message\AbstractRequest\$httpClient
$httpClient
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:82
Omnipay\Common\Exception\RuntimeException
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Exception/RuntimeException.php:8
Omnipay\Common\ParametersTrait
trait ParametersTrait
Definition: ParametersTrait.php:9
Money\Currency
Definition: vendor/moneyphp/money/src/Currency.php:14
Omnipay\Common\Message\AbstractRequest\getClientIp
getClientIp()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:564
Omnipay\Common\Message\AbstractRequest\$currencies
$currencies
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:108
Guzzle\Http\ClientInterface
Definition: lib/vendor/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php:14
Money\Number\fromString
static fromString($number)
Definition: Number.php:52
Omnipay\Common\Currency
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Currency.php:15
Symfony\Component\HttpFoundation\ParameterBag
Definition: lib/vendor/symfony/http-foundation/ParameterBag.php:19
Omnipay\Common\Message\AbstractRequest\getCancelUrl
getCancelUrl()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:606
Omnipay\Common\Message\RequestInterface\sendData
sendData($data)
Omnipay\Common\Message\AbstractRequest\setToken
setToken($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:241
Omnipay\Common\Message\AbstractRequest\setItems
setItems($items)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:550
Omnipay\Common\Message\AbstractRequest\getNotifyUrl
getNotifyUrl()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:627
Omnipay\Common\Message\AbstractRequest\setClientIp
setClientIp($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:575
Omnipay\Common\Message\AbstractRequest\getCardReference
getCardReference()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:251
Omnipay\Common\Message\AbstractRequest\getResponse
getResponse()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:714
Omnipay\Common\Http\Client
Definition: paymethod/paypal/vendor/omnipay/common/src/Common/Http/Client.php:17
Omnipay\Common\Message\AbstractRequest\getTransactionReference
getTransactionReference()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:518
Omnipay\Common\Message
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:6
Omnipay\Common\Message\AbstractRequest\setCurrency
setCurrency($value)
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:402
Omnipay\Common\Message\AbstractRequest\setCancelUrl
setCancelUrl($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:617
Omnipay\Common\Message\AbstractRequest\getCurrencyDecimalPlaces
getCurrencyDecimalPlaces()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:440
Omnipay\Common\Message\AbstractRequest\$response
$response
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:102
Omnipay\Common\Message\AbstractRequest\setIssuer
setIssuer($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:665
Omnipay\Common\Message\AbstractRequest\getCard
getCard()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:205
Omnipay\Common\ItemBag
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/ItemBag.php:16
Omnipay\Common\Http\ClientInterface
Definition: vendor/omnipay/common/src/Common/Http/ClientInterface.php:11
Omnipay\Common\Helper
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Helper.php:16
Money\Money\getCurrency
getCurrency()
Definition: Money.php:216
Omnipay\Common\CreditCard
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/CreditCard.php:94
Omnipay\Common\Message\MessageInterface\getData
getData()
Money\Parser\DecimalMoneyParser
Definition: DecimalMoneyParser.php:17
Omnipay\Common\Message\AbstractRequest\setCardReference
setCardReference($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:262
Omnipay\Common\Message\AbstractRequest\setAmountInteger
setAmountInteger($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:373
Omnipay\Common\Message\AbstractRequest\getCurrencies
getCurrencies()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:270
Omnipay\Common\Message\AbstractRequest\setCard
setCard($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:216
Omnipay\Common\Message\AbstractRequest\getReturnUrl
getReturnUrl()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:585
Omnipay\Common\Message\AbstractRequest\getTransactionId
getTransactionId()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:494
Currency
Basic class describing a currency.
Definition: Currency.inc.php:24
Omnipay\Common\Message\AbstractRequest\__construct
__construct(ClientInterface $httpClient, HttpRequest $httpRequest)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:132
Omnipay\Common\Message\AbstractRequest\setTransactionReference
setTransactionReference($value)
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:529
Omnipay\Common\Message\AbstractRequest\getAmount
getAmount()
Definition: vendor/omnipay/common/src/Common/Message/AbstractRequest.php:331