/** * Function returns authorize by client credentials response * @access public * @param bool $debug * @return OpenPayUResultOAuth $result */ public static function accessTokenByClientCredentials($debug = true) { $url = OpenPayUConfiguration::getServiceUrl() . 'oauth/authorize'; $result = new OpenPayUResultOAuth(); $result->setUrl($url); OpenPayU::setOpenPayuEndPoint($url); if ($debug) { OpenPayU::addOutputConsole('retrieve accessToken', 'retrieve accessToken, client credentials mode, url: ' . $url); } try { OpenPayU::setOpenPayuEndPoint($url); $json = OpenPayUOAuth::getAccessTokenByClientCredentials(OpenPayUConfiguration::getClientId(), OpenPayUConfiguration::getClientSecret()); $result->setAccessToken($json->{'access_token'}); if (isset($json->{'payu_user_email'})) { $result->setPayuUserEmail($json->{'payu_user_email'}); } if (isset($json->{'payu_user_id'})) { $result->setPayuUserId($json->{'payu_user_id'}); } $result->setExpiresIn($json->{'expires_in'}); if (isset($json->{'refresh_token'})) { $result->setRefreshToken($json->{'refresh_token'}); } $result->setSuccess(1); } catch (Exception $ex) { $result->setSuccess(0); $result->setError($ex->getMessage()); } return $result; }
/** * Function builds OpenPayU Xml Document * @access public * @param string $data * @param string $start_element * @param integer $request * @param string $xml_version * @param string $xml_encoding * @return string $xml */ public static function buildOpenPayUDocument($data, $start_element, $request = 1, $xml_version = '1.0', $xml_encoding = 'UTF-8') { if (!is_array($data)) { return false; } $xml = new XmlWriter(); $xml->openMemory(); $xml->startDocument($xml_version, $xml_encoding); $xml->startElementNS(null, 'OpenPayU', 'http://www.openpayu.com/openpayu.xsd'); $header = $request == 1 ? 'HeaderRequest' : 'HeaderResponse'; $xml->startElement($header); $xml->writeElement('Algorithm', 'MD5'); $xml->writeElement('SenderName', 'POSID=' . OpenPayUConfiguration::getMerchantPosid() . ';CUSTOM_PLUGIN=PRESTASHOP'); $xml->writeElement('Version', $xml_version); $xml->endElement(); // domain level - open $xml->startElement(OpenPayUDomain::getDomain4Message($start_element)); // message level - open $xml->startElement($start_element); self::arr2xml($xml, $data); // message level - close $xml->endElement(); // domain level - close $xml->endElement(); // document level - close $xml->endElement(); return $xml->outputMemory(true); }
/** * @access public * @param string */ public static function setSignatureKey($value) { self::$signature_key = trim($value); }
/** * Function use to update status * @access public * @param string $sessionId * @param string $status * @param bool $debug * @return OpenPayUResult $result */ public static function updateStatus($sessionId, $status, $debug = true) { $rq = array('ReqId' => md5(rand()), 'MerchantPosId' => OpenPayUConfiguration::getMerchantPosid(), 'SessionId' => $sessionId, 'OrderStatus' => $status, 'Timestamp' => date('c')); $result = new OpenPayUResult(); $result->setRequest($rq); $url = OpenPayUConfiguration::getServiceUrl() . 'co/openpayu/OrderStatusUpdateRequest'; if ($debug) { OpenPayU::addOutputConsole('OpenPayU endpoint for OrderStatusUpdateRequest message', $url); } $oauthResult = OpenPayUOAuthenticate::accessTokenByClientCredentials(); OpenPayU::setOpenPayuEndPoint($url . '?oauth_token=' . $oauthResult->getAccessToken()); $xml = OpenPayU::buildOrderStatusUpdateRequest($rq); if ($debug) { OpenPayU::addOutputConsole('OrderStatusUpdateRequest message', htmlentities($xml)); } $merchantPosId = OpenPayUConfiguration::getMerchantPosid(); $signatureKey = OpenPayUConfiguration::getSignatureKey(); $response = OpenPayU::sendOpenPayuDocumentAuth($xml, $merchantPosId, $signatureKey); if ($debug) { OpenPayU::addOutputConsole('OrderStatusUpdateResponse message', htmlentities($response)); } // verify response from PayU service $status = OpenPayU::verifyOrderStatusUpdateResponseStatus($response); if ($debug) { OpenPayU::addOutputConsole('OrderStatusUpdateResponse status', serialize($status)); } $result->setStatus($status); $result->setError($status['StatusCode']); if (isset($status['StatusDesc'])) { $result->setMessage($status['StatusDesc']); } $result->setSuccess($status['StatusCode'] == 'OpenPayUSUCCESS' ? true : false); $result->setResponse(OpenPayU::parseOpenPayUDocument($response)); return $result; }