/** * Caller Magic Method */ public function __call($method, $params) { $this->_lib_method = $method; $args = $params[0]; $request_string = $this->_build_request($params); $raw_response = Payment_Request::curl_request($this->_api_endpoint, $request_string, 'application/x-www-form-urlencoded'); return $this->_parse_response($raw_response); }
/** * Caller Magic Method */ public function __call($method, $params) { $this->_lib_method = $method; $args = $params[0]; $request = $this->_build_request($args); $endpoint = $this->_mode == 'production' ? $this->_api_endpoint : $this->_api_endpoint_test; $request_string = $endpoint . '?' . $request; $raw_response = Payment_Request::curl_request($request_string); return $this->_parse_response($raw_response); }
/** * Builds the Request */ protected function _build_request($params) { $nodes = array(); $nodes['merchantAuthentication'] = array('name' => $this->_settings['api_username'], 'transactionKey' => $this->_settings['api_password']); if ($this->_api == 'createTransactionRequest') { $nodes['transactionRequest'] = $this->_transaction_fields($params); $nodes['transactionRequest']['transactionSettings'] = $this->_transaction_settings(); } if ($this->_api == 'getTransactionDetailsRequest') { $nodes['transId'] = $params['identifier']; } if ($this->_api == 'ARBGetSubscriptionStatusRequest' or $this->_api == 'ARBUpdateSubscriptionRequest' or $this->_api == 'ARBCancelSubscriptionRequest') { $nodes['subscriptionId'] = $params['identifier']; } if ($this->_api == 'ARBCreateSubscriptionRequest' or $this->_api == 'ARBUpdateSubscriptionRequest') { $nodes['subscription'] = $this->_transaction_fields($params); } $request_string = Payment_Request::build_xml_request($this->_settings['xml_version'], $this->_settings['encoding'], $nodes, $this->_api, $this->_settings['xml_schema']); return $request_string; }
/** * Get the Session Ticket So We Can Create Transactions * * @return object $session->time, $session->ticket */ private function _get_session_ticket() { $nodes = array(); $nodes['SignonMsgsRq'] = array('SignonDesktopRq' => array('ClientDateTime' => gmdate('c'), 'ApplicationLogin' => $this->_api_settings['login'], 'ConnectionTicket' => $this->_api_settings['connection_ticket'])); $request = Payment_Request::build_xml_request($this->_api_settings['xml_version'], $this->_api_settings['encoding'], $nodes, 'QBMSXML', null, $this->_api_settings['xml_extra']); $response_raw = Payment_Request::curl_request($this->_api_endpoint, $request, "application/x-qbmsxml"); if (isset($response_raw->SignonMsgsRs->SignonDesktopRs)) { $r = $response_raw->SignonMsgsRs->SignonDesktopRs; $session = (object) array('time' => $r->ServerDateTime, 'ticket' => $r->SessionTicket); return $session; } else { throw new Exception('authentication_failure'); } }
/** * Build the query for the response and call the request function * * @param array * @param array * @return array */ private function _handle_query($method, $request) { $settings = array_merge($this->_api_settings, $this->_api_method); $merged = array_merge($settings, $request); $request = http_build_query($merged); $this->_http_query = $this->_api_endpoint . $request; $request = Payment_Request::curl_request($this->_http_query); $response = $this->_parse_response($request); return $response; }
/** * Builds a request * @param array array of params * @param string the type of transaction * @return array Array of transaction settings */ protected function _build_request($params) { $map = $this->method_map(); $l = $this->_lib_method; $nodes = array(); $nodes[$map[$l]['api']] = array(); $root =& $nodes[$map[$l]['api']]; $root['test'] = 'haha'; $root['StoreId'] = $this->_api_settings['store_id']; $root['Passphrase'] = $this->_api_settings['pass_phrase']; foreach ($params as $k => $v) { if (isset($map[$l]['keymatch'][$k])) { $key = $map[$l]['keymatch'][$k]; if (strpos($key, ',') !== false) { $ex = explode(',', $key); if ($k == 'cc_exp') { $k1 = $ex[0]; $k2 = $ex[1]; $root[$k1] = substr($v, 0, 2); //Sets the month $root[$k2] = substr($v, -2, 2); //Sets the year } } else { if (isset($nodes[$key])) { $root[$key] .= $v; } else { $root[$key] = $v; } } } else { error_log("{$k} is not a valid param for the {$l} method in the Psigate class"); } } foreach ($map[$l]['static'] as $k => $v) { $root[$k] = $v; } $request = Payment_Request::build_xml_request($this->_api_settings['xml_version'], $this->_api_settings['encoding'], $nodes); return $request; }