Advertisement
amfoterius

Untitled

Jan 13th, 2021
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.33 KB | None | 0 0
  1. <?php
  2.  
  3. namespace app\models\payonline;
  4.  
  5. use Yii;
  6. use yii\base\Model;
  7.  
  8. class PayForm extends Model
  9. {
  10.     public $CardNumber;
  11.     public $CardHolder;
  12.     public $CardExp;
  13.     public $CardYear = '';
  14.     public $CardMonth = '';
  15.     public $CardCVC;
  16.     public $Phone = '';
  17.     public $Email = '';
  18.     public $LinkPhone = false;
  19.  
  20.     public $IdPay;
  21.     //public $SumPay;
  22.     //public $ComisPay;
  23.  
  24.     public function rules()
  25.     {
  26.         return [
  27.             [['CardNumber'], 'match', 'pattern' => '/^\d{16}|\d{18}$/', 'message' => 'Неверный номер карты'],
  28.             ['CardNumber', function ($attribute, $params) {
  29.                 if ($this->CardNumber) {
  30.                     if (preg_match('/^\d{16}|\d{18}$/', $this->CardNumber) && !Cards::CheckValidCard($this->CardNumber)) {
  31.                         $this->addError($attribute, 'Неверный номер карты');
  32.                     }
  33.                 }
  34.             }],
  35.             [['CardHolder'], 'match', 'pattern' => '/^[\w\s]{3,80}$/',  'message' => 'Неверные Фамилия Имя держателя карты'],
  36.             [['CardExp'], 'match', 'pattern' => '/^[01]\d{3}$/', 'message' => 'Неверный Срок действия'],
  37.             ['CardExp', function ($attribute, $params) {
  38.                 if ($this->CardExp) {
  39.                     $CardMonth = substr($this->CardExp, 0, 2);
  40.                     $CardYear = substr($this->CardExp, 2, 2);
  41.                     if (!preg_match('/^[01]\d{3}$/', $this->CardExp) ||
  42.                         $CardMonth < 1 ||
  43.                         $CardMonth > 12 ||
  44.                         $CardYear + 2000 < date('Y') ||
  45.                         ($CardYear + 2000 == date('Y') && $CardMonth < date('n')) ||
  46.                         $CardYear + 2000 > date('Y') + 10
  47.                     ) {
  48.                         $this->addError($attribute, 'Неверный Срок действия');
  49.                     }
  50.                 }
  51.             }],
  52.             [['CardCVC'], 'match', 'pattern' => '/^\d{3}$/', 'message' => 'Неверный CVC код'],
  53.             [['IdPay'], 'integer', 'min' => 1],
  54.             [['Phone'], 'match', 'pattern' => '/^\d{10}$/', 'message' => 'Неверный номер телефона'],
  55.             [['Email'], 'email', 'message' => 'Неверный адрес почты'],
  56.             [['LinkPhone'], 'boolean'],
  57.             [['CardNumber', 'CardHolder', 'CardExp', 'CardCVC', 'IdPay'], 'required', 'message' => 'Заполните данные карты']
  58.         ];
  59.     }
  60.  
  61.     public function attributeLabels()
  62.     {
  63.         return [
  64.             'CardNumber' => 'Номер карты',
  65.             'CardHolder' => 'Владелец',
  66.             'CardExp' => 'Действует',
  67.             'CardCVC' => 'CVC',
  68.             'Phone' => 'Номер телефона',
  69.             'LinkPhone' => 'Привязать номер к карте',
  70.             'Email' => 'Почта для отправления чека'
  71.         ];
  72.     }
  73.  
  74.     public function afterValidate()
  75.     {
  76.         $this->CardMonth = substr($this->CardExp, 0, 2);
  77.         $this->CardYear = substr($this->CardExp, 2, 2);
  78.  
  79.         parent::afterValidate();
  80.     }
  81.  
  82.     public function GetError()
  83.     {
  84.         $err = $this->firstErrors;
  85.         $err = array_pop($err);
  86.         return $err;
  87.     }
  88.  
  89.     /**
  90.      * URL завершения оплаты по PCIDSS
  91.      *
  92.      * @param $id
  93.      * @return string
  94.      */
  95.     public function GetRetUrl($id)
  96.     {
  97.         if (Yii::$app->params['DEVMODE'] == 'Y') {
  98.             return $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . '/pay/orderdone?id='. $id;
  99.         } elseif (Yii::$app->params['TESTMODE'] == 'Y') {
  100.             return 'https://'.$_SERVER['SERVER_NAME'].'/pay/orderdone?id='.$id;
  101.         } else {
  102.             return 'https://api.vepay.online/pay/orderdone?id='.$id;
  103.         }
  104.     }
  105.  
  106.     public function GetWidgetRetUrl($id)
  107.     {
  108.         if (Yii::$app->params['DEVMODE'] == 'Y') {
  109.             return 'http://127.0.0.1:806/widget/orderdone?id='.$id;
  110.         } elseif (Yii::$app->params['TESTMODE'] == 'Y') {
  111.             return 'https://'.$_SERVER['SERVER_NAME'].'/widget/orderdone?id='.$id;
  112.         } else {
  113.             return 'https://api.vepay.online/widget/orderdone?id='.$id;
  114.         }
  115.     }
  116.  
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement