Ejemplo n.º 1
0
 /**
  * Initializes and returns AuthorizeNetAIM object.
  *
  * @since     3.5
  *
  * @access    protected
  * @staticvar AuthorizeNetAIM $aim The instance of AuthorizeNetAIM class.
  *
  * @param boolean $refresh  Determines whether we need to refresh $aim object or not.
  * @param boolean $pre_fill Determines whether we need to pre fill AIM object with posted data or not.
  *
  * @return AuthorizeNetAIM The instance of AuthorizeNetAIM class.
  */
 protected function _get_aim($refresh = false, $pre_fill = true)
 {
     static $aim = null;
     if (!$refresh && !is_null($aim)) {
         return $aim;
     }
     require_once MEMBERSHIP_ABSPATH . '/classes/Authorize.net/AuthorizeNet.php';
     // merchant information
     $login_id = $this->_get_option('api_user');
     $transaction_key = $this->_get_option('api_key');
     $mode = $this->_get_option('mode', self::MODE_SANDBOX);
     // create new AIM
     $aim = new AuthorizeNetAIM($login_id, $transaction_key);
     $aim->setSandbox($mode != self::MODE_LIVE);
     if (defined('MEMBERSHIP_AUTHORIZE_LOGFILE')) {
         $aim->setLogFile(MEMBERSHIP_AUTHORIZE_LOGFILE);
     }
     if ($pre_fill) {
         // card information
         $aim->card_num = preg_replace('/\\D/', '', filter_input(INPUT_POST, 'card_num'));
         $aim->card_code = trim(filter_input(INPUT_POST, 'card_code'));
         $aim->exp_date = sprintf('%02d/%02d', filter_input(INPUT_POST, 'exp_month', FILTER_VALIDATE_INT), substr(filter_input(INPUT_POST, 'exp_year', FILTER_VALIDATE_INT), -2));
         $aim->duplicate_window = MINUTE_IN_SECONDS;
         // customer information
         $aim->cust_id = $this->_member->ID;
         $aim->customer_ip = self::_get_remote_ip();
         $aim->email = $this->_member->user_email;
         // billing information
         $aim->first_name = substr(trim(filter_input(INPUT_POST, 'first_name')), 0, 50);
         $aim->last_name = substr(trim(filter_input(INPUT_POST, 'last_name')), 0, 50);
         $aim->company = substr(trim(filter_input(INPUT_POST, 'company')), 0, 50);
         $aim->address = substr(trim(filter_input(INPUT_POST, 'address')), 0, 60);
         $aim->city = substr(trim(filter_input(INPUT_POST, 'city')), 0, 40);
         $aim->state = substr(trim(filter_input(INPUT_POST, 'state')), 0, 40);
         $aim->zip = substr(trim(filter_input(INPUT_POST, 'zip')), 0, 20);
         $aim->country = substr(trim(filter_input(INPUT_POST, 'country')), 0, 60);
         $aim->phone = substr(trim(filter_input(INPUT_POST, 'phone')), 0, 25);
         $aim->fax = substr(trim(filter_input(INPUT_POST, 'fax')), 0, 25);
     }
     return $aim;
 }