示例#1
0
 /**
  * Do the API call
  *
  * @param string $methodName
  * @param array $request
  * @return array
  * @throws Mage_Core_Exception
  */
 public function call($methodName, array $request)
 {
     $request = $this->_addMethodToRequest($methodName, $request);
     $eachCallRequest = $this->_prepareEachCallRequest($methodName);
     if ($this->getUseCertAuthentication()) {
         if ($key = array_search('SIGNATURE', $eachCallRequest)) {
             unset($eachCallRequest[$key]);
         }
     }
     $request = $this->_exportToRequest($eachCallRequest, $request);
     $debugData = array('url' => $this->getApiEndpoint(), $methodName => $request);
     try {
         $http = new Varien_Http_Adapter_Curl();
         $config = array('timeout' => 30, 'verifypeer' => $this->_config->verifyPeer);
         if ($this->getUseProxy()) {
             $config['proxy'] = $this->getProxyHost() . ':' . $this->getProxyPort();
         }
         if ($this->getUseCertAuthentication()) {
             $config['ssl_cert'] = $this->getApiCertificate();
         }
         $http->setConfig($config);
         $http->write(Zend_Http_Client::POST, $this->getApiEndpoint(), '1.1', $this->_headers, $this->_buildQuery($request));
         $response = $http->read();
     } catch (Exception $e) {
         $debugData['http_error'] = array('error' => $e->getMessage(), 'code' => $e->getCode());
         $this->_debug($debugData);
         throw $e;
     }
     $response = preg_split('/^\\r?$/m', $response);
     $response = trim(end($response));
     $response = $this->_deformatNVP($response);
     $debugData['response'] = $response;
     $this->_debug($debugData);
     $response = $this->_postProcessResponse($response);
     // handle transport error
     if ($http->getErrno()) {
         Mage::logException(new Exception(sprintf('PayPal NVP CURL connection error #%s: %s', $http->getErrno(), $http->getError())));
         $http->close();
         Mage::throwException(Mage::helper('paypal')->__('Unable to communicate with the PayPal gateway.'));
     }
     // cUrl resource must be closed after checking it for errors
     $http->close();
     if (!$this->_validateResponse($methodName, $response)) {
         Mage::logException(new Exception(Mage::helper('paypal')->__("PayPal response hasn't required fields.")));
         Mage::throwException(Mage::helper('paypal')->__('There was an error processing your order. Please contact us or try again later.'));
     }
     $this->_callErrors = array();
     if ($this->_isCallSuccessful($response)) {
         if ($this->_rawResponseNeeded) {
             $this->setRawSuccessResponseData($response);
         }
         return $response;
     }
     $this->_handleCallErrors($response);
     return $response;
 }
示例#2
0
 /**
  * Make a call to Payment Bridge service with given request parameters
  *
  * @param array $request
  * @return array
  * @throws Mage_Core_Exception
  */
 protected function _call(array $request)
 {
     $response = null;
     $debugData = array('request' => $request);
     try {
         $http = new Varien_Http_Adapter_Curl();
         $config = array('timeout' => 30);
         $http->setConfig($config);
         $http->write(Zend_Http_Client::POST, $this->getPbridgeEndpoint(), '1.1', array(), $this->_prepareRequestParams($request));
         $response = $http->read();
         $http->close();
     } catch (Exception $e) {
         $debugData['result'] = array('error' => $e->getMessage(), 'code' => $e->getCode());
         $this->_debug($debugData);
         throw $e;
     }
     $this->_debug($response);
     if ($response) {
         $response = preg_split('/^\\r?$/m', $response, 2);
         $response = Mage::helper('core')->jsonDecode(trim($response[1]));
         $debugData['result'] = $response;
         $this->_debug($debugData);
         if ($http->getErrno()) {
             Mage::logException(new Exception(sprintf('Payment Bridge CURL connection error #%s: %s', $http->getErrno(), $http->getError())));
             Mage::throwException(Mage::helper('enterprise_pbridge')->__('Unable to communicate with Payment Bridge service.'));
         }
         if (isset($response['status']) && $response['status'] == 'Success') {
             $this->_response = $response;
             return true;
         }
     }
     $this->_handleError($response);
     $this->_response = $response;
     return false;
 }
示例#3
0
 public function isValidVies($taxvat, $countryCode)
 {
     if ('UK' === $countryCode) {
         $countryCode = 'GB';
     }
     if (!isset($this->_patterns[$countryCode])) {
         $this->_message = 'The provided CountryCode is invalid for the VAT number';
         return false;
     }
     //        $vies  = new SoapClient('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl');
     //        $check = new firecheckoutCheckVat($countryCode, $taxvat);
     //        try {
     //            $ret = $vies->checkVat($check);
     //        } catch (SoapFault $e) {
     //            $ret = $e->faultstring;
     //            $pattern = '/\{ \'([A-Z_]*)\' \}/';
     //            $n = preg_match($pattern, $ret, $matches);
     //            $ret = $matches[1];
     //            $faults = array(
     //              'INVALID_INPUT'       => 'The provided CountryCode is invalid or the VAT number is empty',
     //              'SERVICE_UNAVAILABLE' => 'The SOAP service is unavailable, try again later',
     //              'MS_UNAVAILABLE'      => 'The Member State service is unavailable, try again later or with another Member State',
     //              'TIMEOUT'             => 'The Member State service could not be reached in time, try again later or with another Member State',
     //              'SERVER_BUSY'         => 'The service cannot process your request. Try again later.'
     //            );
     //            $this->_message = $faults[$ret];
     //            return false;
     //        }
     //        return true;
     try {
         $http = new Varien_Http_Adapter_Curl();
         $http->setConfig(array('timeout' => 30));
         $http->write(Zend_Http_Client::POST, 'http://ec.europa.eu/taxation_customs/vies/viesquer.do', '1.1', array(), http_build_query(array('ms' => $countryCode, 'iso' => $countryCode, 'vat' => $taxvat)));
         $response = $http->read();
         $http->close();
     } catch (Exception $e) {
         throw $e;
     }
     $response = str_replace(array("\n", "\r", "\t"), '', $response);
     if (empty($response) || strstr($response, 'Yes, valid VAT number')) {
         // if service is not available of correct vat number
         return true;
     } elseif (strstr($response, 'No, invalid VAT number')) {
         $this->_message = 'Invalid VAT number';
     } elseif (strstr($response, 'Service unavailable')) {
         $this->_message = 'The VAT validation service unavailable. Please re-submit your request later.';
     } elseif (strstr($response, 'Member State service unavailable')) {
         $this->_message = 'The VAT validation service unavailable. Please re-submit your request later.';
     } elseif (strstr($response, 'Error: Incomplete')) {
         $this->_message = 'The provided CountryCode is invalid or the VAT number is empty';
     } elseif (strstr($response, 'Request time-out')) {
         $this->_message = 'The VAT validation service cannot process your request. Try again later.';
     } elseif (strstr($response, 'System busy')) {
         $this->_message = 'The VAT validation service cannot process your request. Try again later.';
     } else {
         $this->_message = 'Unknown VAT validation service message. Try again later.';
     }
     return false;
 }
示例#4
0
文件: Survey.php 项目: quyip8818/Mag
 /**
  * Check if survey url valid (exists) or not
  *
  * @return boolen
  */
 public static function isSurveyUrlValid()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 5))->write(Zend_Http_Client::GET, self::getSurveyUrl(), '1.0');
     $response = $curl->read();
     $curl->close();
     if (Zend_Http_Response::extractCode($response) == 200) {
         return true;
     }
     return false;
 }
示例#5
0
 /**
  * If file is accessible return true or false
  *
  * @return bool
  */
 private function _isFileAccessible()
 {
     $defaultUnsecureBaseURL = (string) Mage::getConfig()->getNode('default/' . Mage_Core_Model_Store::XML_PATH_UNSECURE_BASE_URL);
     $http = new Varien_Http_Adapter_Curl();
     $http->setConfig(array('timeout' => $this->_verificationTimeOut));
     $http->write(Zend_Http_Client::POST, $defaultUnsecureBaseURL . $this->_filePath);
     $responseBody = $http->read();
     $responseCode = Zend_Http_Response::extractCode($responseBody);
     $http->close();
     return $responseCode == 200;
 }
示例#6
0
 /**
  * Read response for prepared curl request
  *
  * @return Apache_Solr_Response
  *
  * @throws Exception If a non 200 response status is returned
  */
 protected function _getResponse()
 {
     $response = $this->_curlAdapter->read();
     $this->_curlAdapter->close();
     list($headers, $body) = explode("\r\n\r\n", $response, 2);
     $headers = explode("\r\n", $headers);
     $response = new Apache_Solr_Response($body, $headers, $this->_createDocuments, $this->_collapseSingleValueArrays);
     $httpStatus = $response->getHttpStatus();
     if ($httpStatus != 200) {
         throw new Exception('"' . $httpStatus . '" Status: ' . $response->getHttpStatusMessage(), $httpStatus);
     }
     return $response;
 }
示例#7
0
 public function sendRequest($request, $parameters = array())
 {
     if (!$this->code || !$this->username || !$this->password) {
         return false;
     }
     if ($request != 'verifyUser' && !$this->session) {
         return false;
     }
     $parameters['sessionKey'] = $this->session;
     $parameters['request'] = $request;
     $parameters['version'] = '1.0';
     $parameters['clientCode'] = $this->code;
     $url = $this->getUrl();
     $http = new Varien_Http_Adapter_Curl();
     $http->setConfig(array('timeout' => 100));
     //        $http->write(Zend_Http_Client::POST, $parameters);
     $http->write(Zend_Http_Client::POST, $url, CURL_HTTP_VERSION_1_0, array(), $parameters);
     $responseBody = Zend_Http_Response::extractBody($http->read());
     $http->close();
     if (Mage::getStoreConfig('eepohs_erply/general/log_requests')) {
         Mage::log("REQUEST URL: " . $url . "\nREQUEST PARAMETERS:\n" . print_r($parameters, true) . "\nRESPONSE:\n" . $responseBody, null, self::REQUEST_LOG);
     }
     //        $http = new Varien_Http_Adapter_Curl();
     //        $config = array('timeout' => 30);
     //
     //        $http->setConfig($config);
     //        $http->write(Zend_Http_Client::POST, $url, '1.0', array(), http_build_query($parameters));
     //        $content = Zend_Http_Response::extractBody($http->read());
     //        print_r(Zend_Http_Response::extractHeaders($http->read()));
     //return $content;
     //        $ch = curl_init();
     //        curl_setopt($ch, CURLOPT_URL, $url);
     //        curl_setopt($ch, CURLOPT_HEADER, 1);
     //        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
     //        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     //        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     //        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
     //        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     //        curl_setopt($ch, CURLOPT_POST, true);
     //        curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
     //
     //        if (curl_exec($ch) === false)
     //            return false;
     //
     //        $content = curl_multi_getcontent($ch);
     //        curl_close($ch);
     //        list($header1, $header2, $body) = explode("\r\n\r\n", $content, 3);
     return $responseBody;
 }
示例#8
0
 /**
  * @param array $url
  * @return array
  */
 public function getCurlOptions($url)
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 5));
     $curl->write(Zend_Http_Client::GET, $url);
     $response = $curl->read();
     if ($response === false) {
         return false;
     }
     $response = preg_split('/^\\r?$/m', $response, 2);
     $response = trim($response[1]);
     $options = explode("\n", $response);
     $curl->close();
     return $options;
 }
示例#9
0
文件: Feed.php 项目: uibar/peggysgift
 public function getClientData()
 {
     $eadesignUrl = 'https://www.eadesign.ro/';
     $extension = 'Eadesigndev_Awb';
     $moduleVersion = Mage::getConfig()->getModuleConfig($extension)->version;
     $baseUrl = 'track/index/update?url=' . Mage::getBaseUrl();
     $version = '&version=' . $moduleVersion;
     $moduleExtension = '&extension=' . $extension;
     $url = $eadesignUrl . $baseUrl . $version . $moduleExtension;
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 3));
     $curl->write(Zend_Http_Client::GET, $url, '1.0');
     $curl->read();
     $curl->close();
 }
示例#10
0
 /**
  * Post a request, note that for a HTTPS URL no port is required
  *
  * @param string $url
  * @param string $path
  * @param array  $params
  * @return mixed
  */
 protected function _post($url, $timeout, $dataToSend)
 {
     $config = array('timeout' => 30);
     $this->_http->setConfig($config);
     $this->_http->write(Zend_Http_Client::POST, $url, '1.1', array(), $dataToSend);
     $response = $this->_http->read();
     $response = preg_split('/^\\r?$/m', $response, 2);
     $response = trim($response[1]);
     if ($this->_http->getErrno()) {
         $this->_http->close();
         $this->setError($this->_http->getErrno() . ':' . $this->_http->getError());
         return false;
     }
     $this->_http->close();
     return $response;
 }
示例#11
0
 /**
  * Read html from the store feed
  *
  * @return string
  */
 private function getContent()
 {
     $data = NULL;
     if (!extension_loaded('curl')) {
         return $data;
     }
     $url = Mage::helper('belvgall')->getStoreUrl();
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 2, 'header' => FALSE));
     $curl->write(Zend_Http_Client::GET, $url, '1.0');
     $data = $curl->read();
     if ($data === FALSE) {
         return NULL;
     }
     $curl->close();
     return $data;
 }
示例#12
0
 public function getFeedData($feedUrl)
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->write(Zend_Http_Client::GET, $feedUrl, '1.0');
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         return false;
     }
     return $xml;
 }
示例#13
0
 public function getFeed($url, $params = array())
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->write(Zend_Http_Client::POST, $url, '1.1', array(), http_build_query($params));
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         return false;
     }
     return $xml;
 }
示例#14
0
 public function getNotificationData()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 2));
     $curl->write(Zend_Http_Client::GET, $this->getMagestoreUrl(), '1.0');
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         return false;
     }
     return $xml;
 }
示例#15
0
文件: Feed.php 项目: sshegde123/wmp8
 public function getFeedData()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 2));
     $curl->write(Zend_Http_Client::GET, $this->getFeedUrl(), '1.0');
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $json = json_decode($data);
     } catch (Exception $e) {
         return false;
     }
     return $json;
 }
示例#16
0
 public function getFeedData()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 1));
     $curl->write(Zend_Http_Client::GET, $this->getFeedUrl(), '1.0');
     $data = $curl->read();
     if ($data === false || Zend_Http_Response::extractCode($data) !== 200) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         return false;
     }
     return $xml;
 }
 public function getFeedData()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 1));
     $curl->write(Zend_Http_Client::GET, self::URI_EXTENSIONS, '1.0');
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         return false;
     }
     return $xml;
 }
 /**
  * @param ResultCollection $results
  */
 public function check(ResultCollection $results)
 {
     $result = $results->createResult();
     $filePath = 'app/etc/local.xml';
     $defaultUnsecureBaseURL = (string) \Mage::getConfig()->getNode('default/' . \Mage_Core_Model_Store::XML_PATH_UNSECURE_BASE_URL);
     $http = new \Varien_Http_Adapter_Curl();
     $http->setConfig(array('timeout' => $this->_verificationTimeOut));
     $http->write(\Zend_Http_Client::POST, $defaultUnsecureBaseURL . $filePath);
     $responseBody = $http->read();
     $responseCode = \Zend_Http_Response::extractCode($responseBody);
     $http->close();
     if ($responseCode === 200) {
         $result->setStatus(Result::STATUS_ERROR);
         $result->setMessage("<error>{$filePath} can be accessed from outside!</error>");
     } else {
         $result->setStatus(Result::STATUS_OK);
         $result->setMessage("<info><comment>{$filePath}</comment> cannot be accessed from outside.</info>");
     }
 }
示例#19
0
 /**
  * Retrieve feed data as XML element
  *
  * @return SimpleXMLElement
  */
 public function getFeedData()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 60));
     $curl->write(Zend_Http_Client::GET, $this->getFeedUrl(), '1.0');
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         Ebizmarts_SagePaySuite_Log::we($e);
         return false;
     }
     return $xml;
 }
示例#20
0
 public function load()
 {
     // we expect <var name="uri">http://...</var>
     $uri = $this->getVar('uri');
     // validate input parameter
     if (!Zend_Uri::check($uri)) {
         $this->addException("Expecting a valid 'uri' parameter");
     }
     // use Varien curl adapter
     $http = new Varien_Http_Adapter_Curl();
     // send GET request
     $http->write('GET', $uri);
     // read the remote file
     $data = $http->read();
     $http->close();
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     // save contents into container
     $this->setData($data);
     return $this;
 }
示例#21
0
 public function getFeedData()
 {
     $dataModules = Mage::helper('devopennotify')->devopensourceModulesLoaded();
     $jsonModules = json_encode($dataModules);
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 2));
     $headers = array("Content-Type: application/json", "Accept: application/json", "Content-Length: " . strlen($jsonModules));
     $curl->write(Zend_Http_Client::POST, self::DEVOPENSOURCE_URL_NOTIFICATIONS, null, $headers, $jsonModules);
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     try {
         $json = json_decode($data);
     } catch (Exception $e) {
         return false;
     }
     return $json;
 }
示例#22
0
文件: System.php 项目: Rchek/PensDev
 /**
  * Send a HTTP Post request
  *
  * @param string $url
  * @param array $data = array
  * @return false|string
  */
 public function makeHttpPostRequest($url, array $data = array())
 {
     if (!$this->hasValidCurlMethods()) {
         foreach ($data as $key => $value) {
             $data[$key] = urlencode($key) . '=' . urlencode($value);
         }
         $body = implode('&', $data);
         $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_POST, count($data));
         curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
         curl_setopt($ch, CURLOPT_USERAGENT, self::CURL_USERAGENT);
         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
         curl_setopt($ch, CURLOPT_HEADER, true);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         if (strpos($url, 'https://') !== false) {
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
         }
         $response = curl_exec($ch);
         if (curl_errno($ch) || curl_error($ch)) {
             throw new Exception(Mage::helper('wordpress')->__('CURL (%s): %s', curl_errno($ch), curl_error($ch)));
         }
         curl_close($ch);
         return $response;
     }
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('verifypeer' => strpos($url, 'https://') !== false, 'header' => true, 'timeout' => 15, 'referrer' => Mage::helper('wordpress')->getBaseUrl('wp-login.php')));
     $curl->addOption(CURLOPT_FOLLOWLOCATION, false);
     $curl->addOption(CURLOPT_USERAGENT, self::CURL_USERAGENT);
     $curl->addOption(CURLOPT_REFERER, true);
     $curl->write(Zend_Http_Client::POST, $url, '1.1', array('Expect:'), $data);
     $response = $curl->read();
     if ($curl->getErrno() || $curl->getError()) {
         throw new Exception(Mage::helper('wordpress')->__('CURL (%s): %s', $curl->getErrno(), $curl->getError()));
     }
     $curl->close();
     return $response;
 }
示例#23
0
文件: Ipn.php 项目: Thinlt/simicart
 protected function sendRequestToSimicart()
 {
     $url = 'http://cart.simicommerce.com/paypal/ipn';
     //$url = 'http://dev.simicommerce.com/simicart/paypal/ipn';
     $sReq = '';
     foreach ($this->_request as $k => $v) {
         $sReq .= '&' . $k . '=' . urlencode($v);
     }
     $sReq = substr($sReq, 1);
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 3000));
     $curl->write(Zend_Http_Client::POST, $url, '1.1', array(), $sReq);
     $result = $curl->read();
     $curl->close();
     exit;
 }
示例#24
0
 /**
  * Check is readable Popup Notification Object
  * @deprecated after 1.4.2.0
  *
  * @return bool
  */
 public function isReadablePopupObject()
 {
     if (is_null($this->_popupReadable)) {
         $this->_popupReadable = false;
         $curl = new Varien_Http_Adapter_Curl();
         $curl->setConfig(array('timeout' => 2));
         $curl->write(Zend_Http_Client::GET, $this->getPopupObjectUrl(true));
         if ($curl->read()) {
             if ($curl->getInfo(CURLINFO_HTTP_CODE) == 200) {
                 $this->_popupReadable = true;
             }
         }
         $curl->close();
     }
     return $this->_popupReadable;
 }
示例#25
0
 /**
  * Function to perform the API call to PayPal using API signature
  *
  * @param $methodName string is name of API  method.
  * @param $nvpArr array NVP params array
  * @return array|boolean an associtive array containing the response from the server or false in case of error.
  */
 public function call($methodName, array $nvpArr)
 {
     $nvpArr = array_merge(array('METHOD' => $methodName, 'VERSION' => $this->getVersion(), 'USER' => $this->getApiUserName(), 'PWD' => $this->getApiPassword(), 'SIGNATURE' => $this->getApiSignature()), $nvpArr);
     $nvpReq = '';
     foreach ($nvpArr as $k => $v) {
         $nvpReq .= '&' . $k . '=' . urlencode($v);
     }
     $nvpReq = substr($nvpReq, 1);
     if ($this->getDebug()) {
         $debug = Mage::getModel('paypal/api_debug')->setApiEndpoint($this->getApiEndpoint())->setRequestBody($nvpReq)->save();
     }
     $http = new Varien_Http_Adapter_Curl();
     $config = array();
     if ($this->getUseProxy()) {
         $config['proxy'] = $this->getProxyHost() . ':' . $this->getProxyPort();
     }
     $http->setConfig($config);
     $http->write(Zend_Http_Client::POST, $this->getApiEndpoint(), '1.1', array(), $nvpReq);
     $response = $http->read();
     $response = preg_split('/^\\r?$/m', $response, 2);
     $response = trim($response[1]);
     if ($this->getDebug()) {
         $debug->setResponseBody($response)->save();
     }
     $nvpReqArray = $this->deformatNVP($nvpReq);
     $this->getSession()->setNvpReqArray($nvpReqArray);
     if ($http->getErrno()) {
         $http->close();
         $this->setError(array('type' => 'CURL', 'code' => $http->getErrno(), 'message' => $http->getError()));
         $this->setRedirectUrl($this->getApiErrorUrl());
         return false;
     }
     $http->close();
     //converting NVPResponse to an Associative Array
     $nvpResArray = $this->deformatNVP($response);
     $this->getSession()->setLastCallMethod($methodName)->setResHash($nvpResArray);
     $ack = strtoupper($nvpResArray['ACK']);
     if ($ack == 'SUCCESS') {
         $this->unsError();
         return $nvpResArray;
     }
     $errorArr = array('type' => 'API', 'ack' => $ack);
     if (isset($nvpResArray['VERSION'])) {
         $errorArr['version'] = $nvpResArray['VERSION'];
     }
     if (isset($nvpResArray['CORRELATIONID'])) {
         $errorArr['correlation_id'] = $nvpResArray['CORRELATIONID'];
     }
     for ($i = 0; isset($nvpResArray['L_SHORTMESSAGE' . $i]); $i++) {
         $errorArr['code'] = $nvpResArray['L_ERRORCODE' . $i];
         $errorArr['short_message'] = $nvpResArray['L_SHORTMESSAGE' . $i];
         $errorArr['long_message'] = $nvpResArray['L_LONGMESSAGE' . $i];
     }
     $this->setError($errorArr);
     $this->setRedirectUrl($this->getApiErrorUrl());
     return false;
 }
示例#26
0
 /**
  * Retrieve feed data as XML element
  *
  * @return SimpleXMLElement
  */
 public function getFeedData()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 3));
     $curl->write(Zend_Http_Client::GET, $this->getFeedUrl() . '?version=' . Mage::getVersion() . '&host=' . $this->getHostname(), '1.0');
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     try {
         $data = preg_split('/^\\r?$/m', $data, 2);
         $data = trim($data[1]);
         $lines = explode("\n", $data);
         if (preg_match('/^' . self::ERRNO . '/', $lines[0])) {
             $this->_handleFeedError($lines[1], $lines[2]);
             unset($lines[0]);
             unset($lines[1]);
             unset($lines[2]);
             $data = implode("\n", $lines);
         }
         $curl->close();
         $xml = new SimpleXMLElement($data);
     } catch (Exception $e) {
         return false;
     }
     return $xml;
 }
 /**
  * Send a HTTP Post request
  *
  * @param string $url
  * @param array $data = array
  * @return false|string
  */
 public function makeHttpPostRequest($url, array $data = array())
 {
     if (!$this->hasValidCurlMethods()) {
         return $this->_makeLegacyHttpPostRequest($url, $data);
     }
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('verifypeer' => strpos($url, 'https://') !== false, 'header' => true, 'timeout' => 15, 'referrer' => Mage::helper('wordpress')->getBaseUrl('wp-login.php')));
     $curl->addOption(CURLOPT_FOLLOWLOCATION, false);
     $curl->addOption(CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
     $curl->write(Zend_Http_Client::POST, $url, '1.1', array(), $data);
     $response = $curl->read();
     if ($curl->getErrno() || $curl->getError()) {
         throw new Exception(Mage::helper('wordpress')->__('CURL (%s): %s', $curl->getErrno(), $curl->getError()));
     }
     $curl->close();
     return $response;
 }
示例#28
0
 public function _call($xml)
 {
     $auth = 'Basic ' . base64_encode($this->getMerchantId() . ':' . $this->getMerchantKey());
     $headers = array('Authorization: ' . $auth, 'Content-Type: application/xml;charset=UTF-8', 'Accept: application/xml;charset=UTF-8');
     $url = $this->_getApiUrl();
     $xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n" . $xml;
     $debugData = array('request' => $xml, 'dir' => 'out');
     try {
         $http = new Varien_Http_Adapter_Curl();
         $http->write('POST', $url, '1.1', $headers, $xml);
         $response = $http->read();
         $response = preg_split('/^\\r?$/m', $response, 2);
         $response = trim($response[1]);
         $debugData['result'] = $response;
         $http->close();
     } catch (Exception $e) {
         $debugData['result'] = array('error' => $e->getMessage(), 'code' => $e->getCode());
         $this->getApi()->debugData($debugData);
         throw $e;
     }
     $this->getApi()->debugData($debugData);
     $result = @simplexml_load_string($response);
     if (!$result) {
         $result = simplexml_load_string('<error><error-message>Invalid response from Google Checkout server</error-message></error>');
     }
     if ($result->getName() == 'error') {
         $this->setError($this->__('Google Checkout: %s', (string) $result->{'error-message'}));
         $this->setWarnings((array) $result->{'warning-messages'});
     } else {
         $this->unsError()->unsWarnings();
     }
     $this->setResult($result);
     return $result;
 }
示例#29
0
 /**
  * Send broadcast message
  *
  * @throws Mage_Core_Exception
  * @param Mage_XmlConnect_Model_Queue $queue
  */
 public function sendBroadcastMessage(Mage_XmlConnect_Model_Queue $queue)
 {
     if ($queue->getStatus() != Mage_XmlConnect_Model_Queue::STATUS_IN_QUEUE) {
         return;
     }
     try {
         $applicationId = Mage::getModel('xmlconnect/template')->load($queue->getTemplateId())->getApplicationId();
         /** @var $app Mage_XmlConnect_Model_Application */
         $app = Mage::getModel('xmlconnect/application')->load($applicationId);
         if (!$app->getId()) {
             Mage::throwException(Mage::helper('xmlconnect')->__('Can\'t load application with id "%s"', $applicationId));
         }
         if (!$app->isNotificationsActive()) {
             $queue->setStatus(Mage_XmlConnect_Model_Queue::STATUS_CANCELED);
             return;
         }
         $sendType = $queue->getData('type');
         switch ($sendType) {
             case Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_AIRMAIL:
                 $configPath = 'xmlconnect/' . Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_AIRMAIL . '/broadcast_url';
                 $params = $queue->getAirmailBroadcastParams();
                 break;
             case Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_PUSH:
             default:
                 $configPath = 'xmlconnect/' . Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_PUSH . '/broadcast_url';
                 $params = $queue->getPushBroadcastParams();
                 break;
         }
         $curl = new Varien_Http_Adapter_Curl();
         $curl->setConfig($this->_getCurlConfig($app->getUserpwd()));
         $urbanUrl = Mage::getStoreConfig($configPath);
         $curl->write(Zend_Http_Client::POST, $urbanUrl, HTTP_REQUEST_HTTP_VER_1_1, $this->getHttpHeaders(), $params);
         if ($curl->read() && $curl->getInfo(CURLINFO_HTTP_CODE) == 200) {
             $queue->setStatus(Mage_XmlConnect_Model_Queue::STATUS_COMPLETED);
         }
         $curl->close();
         $queue->setIsSent(true);
         $queue->save();
         return;
     } catch (Exception $e) {
         Mage::logException($e);
         throw $e;
     }
 }
 public function enableRaygunCode()
 {
     $curl = new Varien_Http_Adapter_Curl();
     $curl->setConfig(array('timeout' => 2));
     $curl->write(Zend_Http_Client::GET, Dotdigitalgroup_Email_Helper_Config::RAYGUN_API_CODE_URL, '1.0');
     $data = $curl->read();
     if ($data === false) {
         return false;
     }
     $data = preg_split('/^\\r?$/m', $data, 2);
     $data = trim($data[1]);
     $curl->close();
     $xml = new SimpleXMLElement($data);
     $raygunCode = $xml->code;
     //not found
     if (!$raygunCode) {
         return;
     }
     $config = new Mage_Core_Model_Config();
     $config->saveConfig(Dotdigitalgroup_Email_Helper_Config::XML_PATH_RAYGUN_APPLICATION_CODE, $raygunCode);
 }