PaymentForm.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace reactlogic\liqpay\models;
  3. use Yii;
  4. use yii\base\Model;
  5. class PaymentForm extends Model
  6. {
  7. const ACTION_BUY = 'pay';
  8. const ACTION_HOLD = 'hold';
  9. const ACTION_SUBSCRIBE = 'subscribe';
  10. const ACTION_PAYDONATE = 'paydonate';
  11. const ACTION_AUTH = 'auth';
  12. const CURRENCY_USD = 'USD';
  13. const CURRENCY_EUR = 'EUR';
  14. const CURRENCY_RUB = 'RUB';
  15. const CURRENCY_UAH = 'UAH';
  16. const LANGUAGE_UK = 'uk';
  17. const LANGUAGE_RU = 'ru';
  18. const LANGUAGE_EN = 'en';
  19. public $version;
  20. public $public_key;
  21. public $action;
  22. public $amount;
  23. public $currency;
  24. public $description;
  25. public $order_id;
  26. public $language;
  27. /**
  28. * @return string
  29. */
  30. public function formName()
  31. {
  32. return '';
  33. }
  34. /**
  35. * @return array
  36. */
  37. public function rules()
  38. {
  39. return [
  40. [['version', 'public_key', 'action', 'currency', 'description', 'order_id'], 'required'],
  41. [['version', 'amount'], 'number'],
  42. [['public_key', 'description'], 'string'],
  43. ['order_id', 'string', 'max' => 255],
  44. ['currency', 'in', 'range' => array_keys(self::getCurrencyItems())],
  45. ['action', 'in', 'range' => array_keys(self::getActionItems())],
  46. ['language', 'in', 'range' => array_keys(self::getLanguageItems())],
  47. ];
  48. }
  49. /**
  50. * @param null $key
  51. * @return array|null
  52. */
  53. private static function getActionItems($key = null)
  54. {
  55. $items = [
  56. self::ACTION_BUY => 'pay',
  57. self::ACTION_HOLD => 'hold',
  58. self::ACTION_SUBSCRIBE => 'subscribe',
  59. self::ACTION_PAYDONATE => 'paydonate',
  60. self::ACTION_AUTH => 'auth',
  61. ];
  62. if (!is_null($key)) {
  63. return isset($items[$key]) ? $items[$key] : null;
  64. }
  65. return $items;
  66. }
  67. /**
  68. * @param null $key
  69. * @return array|null
  70. */
  71. public function getCurrencyItems($key = null)
  72. {
  73. $items = [
  74. self::CURRENCY_USD => 'USD',
  75. self::CURRENCY_EUR => 'EUR',
  76. self::CURRENCY_RUB => 'RUB',
  77. self::CURRENCY_UAH => 'UAH',
  78. ];
  79. if (!is_null($key)) {
  80. return isset($items[$key]) ? $items[$key] : null;
  81. }
  82. return $items;
  83. }
  84. /**
  85. * @param null $key
  86. * @return array|null
  87. */
  88. public function getLanguageItems($key = null)
  89. {
  90. $items = [
  91. self::LANGUAGE_UK => 'UK',
  92. self::LANGUAGE_RU => 'RU',
  93. self::LANGUAGE_EN => 'EN',
  94. ];
  95. if (!is_null($key)) {
  96. return isset($items[$key]) ? $items[$key] : null;
  97. }
  98. return $items;
  99. }
  100. /**
  101. * @return mixed
  102. * @throws \yii\base\InvalidConfigException
  103. */
  104. public function getData()
  105. {
  106. $liqPay = Yii::$app->getModule('liqpay');
  107. return $liqPay->getData($this->getAttributes());
  108. }
  109. /**
  110. * @return mixed
  111. * @throws \yii\base\InvalidConfigException
  112. */
  113. public function getSignature()
  114. {
  115. $liqPay = Yii::$app->getModule('liqpay');
  116. return $liqPay->getSignature($this->getAttributes());
  117. }
  118. }