/** * 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; }