lib/PayPal/Transport/PPRestCall.php 0000666 00000002601 13436752250 0013170 0 ustar 00 apiContext = $apiContext;
$this->logger = new PPLoggingManager(__CLASS__, $apiContext->getConfig());
}
/**
* @param array $handlers array of handlers
* @param string $path Resource path relative to base service endpoint
* @param string $method HTTP method - one of GET, POST, PUT, DELETE, PATCH etc
* @param string $data Request payload
* @param array $headers HTTP headers
*/
public function execute($handlers, $path, $method, $data='', $headers=array()) {
$config = $this->apiContext->getConfig();
$httpConfig = new PPHttpConfig(null, $method);
$httpConfig->setHeaders($headers +
array(
'Content-Type' => 'application/json'
)
);
foreach($handlers as $handler) {
if (!is_object($handler)) {
$shandler = "\\".$handler;
$handler = new $shandler($this->apiContext);
}
$handler->handle($httpConfig, $data, array('path' => $path, 'apiContext' => $this->apiContext));
}
$connection = new PPHttpConnection($httpConfig, $config);
$response = $connection->execute($data);
$this->logger->fine($response);
return $response;
}
}
lib/PayPal/Handler/PPAuthenticationHandler.php 0000666 00000003275 13436752250 0015325 0 ustar 00 getCredential();
if(isset($credential)) {
$thirdPartyAuth = $credential->getThirdPartyAuthorization();
if($thirdPartyAuth && $thirdPartyAuth instanceof PPTokenAuthorization) {
$authSignature = AuthSignature::generateFullAuthString($credential->getUsername(), $credential->getPassword(), $thirdPartyAuth->getAccessToken(), $thirdPartyAuth->getTokenSecret(), $httpConfig->getMethod(), $httpConfig->getUrl());
if(isset($options['port']) &&
($options['port'] == 'PayPalAPI' || $options['port'] == 'PayPalAPIAA')) {
$httpConfig->addHeader('X-PP-AUTHORIZATION', $authSignature);
}
else {
$httpConfig->addHeader('X-PAYPAL-AUTHORIZATION', $authSignature);
}
}
if($credential instanceof PPSignatureCredential) {
$handler = new PPSignatureAuthHandler($credential);
} else if($credential instanceof PPCertificateCredential) {
$handler = new PPCertificateAuthHandler($credential);
} else {
throw new PPInvalidCredentialException();
}
$handler->handle($httpConfig, $request, $options);
}
}
} lib/PayPal/Handler/PPOpenIdHandler.php 0000666 00000003150 13436752250 0013514 0 ustar 00 getConfig();
$httpConfig->setUrl(
rtrim(trim($this->_getEndpoint($config)), '/') .
(isset($options['path']) ? $options['path'] : '')
);
if(!array_key_exists("Authorization", $httpConfig->getHeaders())) {
$auth = base64_encode($config['acct1.ClientId'] . ':' . $config['acct1.ClientSecret']);
$httpConfig->addHeader("Authorization", "Basic $auth");
}
if(!array_key_exists("User-Agent", $httpConfig->getHeaders())) {
$httpConfig->addHeader("User-Agent", PPUserAgent::getValue(self::$sdkName, self::$sdkVersion));
}
}
private function _getEndpoint($config) {
if (isset($config['openid.EndPoint'])) {
return $config['openid.EndPoint'];
} else if (isset($config['service.EndPoint'])) {
return $config['service.EndPoint'];
} else if (isset($config['mode'])) {
switch (strtoupper($config['mode'])) {
case 'SANDBOX':
return PPConstants::REST_SANDBOX_ENDPOINT;
case 'LIVE':
return PPConstants::REST_LIVE_ENDPOINT;
default:
throw new PPConfigurationException('The mode config parameter must be set to either sandbox/live');
}
} else {
throw new PPConfigurationException('You must set one of service.endpoint or mode parameters in your configuration');
}
}
}
lib/PayPal/Handler/IPPHandler.php 0000666 00000000304 13436752250 0012524 0 ustar 00 apiUsername = $apiUsername;
}
public function handle($httpConfig, $request, $options) {
parent::handle($httpConfig, $request, $options);
if(is_string($this->apiUsername) || is_null($this->apiUsername)) {
// $apiUsername is optional, if null the default account in config file is taken
$credMgr = PPCredentialManager::getInstance($options['config']);
$request->setCredential(clone($credMgr->getCredentialObject($this->apiUsername)));
} else {
$request->setCredential($this->apiUsername);
}
$config = $options['config'];
$credential = $request->getCredential();
//TODO: Assuming existence of getApplicationId
if($credential && $credential->getApplicationId() != NULL) {
$httpConfig->addHeader('X-PAYPAL-APPLICATION-ID', $credential->getApplicationId());
}
if(isset($config['port']) && isset($config['service.EndPoint.'.$options['port']]))
{
$endpoint = $config['service.EndPoint.'.$options['port']];
}
// for backward compatibilty (for those who are using old config files with 'service.EndPoint')
else if (isset($config['service.EndPoint']))
{
$endpoint = $config['service.EndPoint'];
}
else if (isset($config['mode']))
{
if(strtoupper($config['mode']) == 'SANDBOX')
{
$endpoint = PPConstants::PLATFORM_SANDBOX_ENDPOINT;
}
else if(strtoupper($config['mode']) == 'LIVE')
{
$endpoint = PPConstants::PLATFORM_LIVE_ENDPOINT;
}
}
else
{
throw new PPConfigurationException('endpoint Not Set');
}
$httpConfig->setUrl($endpoint . $options['serviceName'] . '/' . $options['apiMethod']);
// Call the authentication handler to tack authentication related info
$handler = new PPAuthenticationHandler();
$handler->handle($httpConfig, $request, $options);
}
}
lib/PayPal/Handler/PPSignatureAuthHandler.php 0000666 00000003735 13436752250 0015132 0 ustar 00 getCredential();
if(!isset($credential)) {
return;
}
$thirdPartyAuth = $credential->getThirdPartyAuthorization();
switch($request->getBindingType()) {
case 'NV':
if(!$thirdPartyAuth || !$thirdPartyAuth instanceof PPTokenAuthorization) {
$httpConfig->addHeader('X-PAYPAL-SECURITY-USERID', $credential->getUserName());
$httpConfig->addHeader('X-PAYPAL-SECURITY-PASSWORD', $credential->getPassword());
$httpConfig->addHeader('X-PAYPAL-SECURITY-SIGNATURE', $credential->getSignature());
if($thirdPartyAuth) {
$httpConfig->addHeader('X-PAYPAL-SECURITY-SUBJECT', $thirdPartyAuth->getSubject());
}
}
break;
case 'SOAP':
if($thirdPartyAuth && $thirdPartyAuth instanceof PPTokenAuthorization) {
$request->addBindingInfo('securityHeader' , '');
} else {
$securityHeader = '';
$securityHeader .= '' . $credential->getUserName() . '';
$securityHeader .= '' . $credential->getPassword() . '';
$securityHeader .= '' . $credential->getSignature() . '';
if($thirdPartyAuth && $thirdPartyAuth instanceof PPSubjectAuthorization) {
$securityHeader .= '' . $thirdPartyAuth->getSubject() . '';
}
$securityHeader .= '';
$request->addBindingInfo('securityHeader' , $securityHeader);
}
break;
}
}
} lib/PayPal/Handler/PPCertificateAuthHandler.php 0000666 00000003400 13436752250 0015400 0 ustar 00 getCredential();
if(!isset($credential)) {
return;
}
$httpConfig->setSSLCert($credential->getCertificatePath(), $credential->getCertificatePassPhrase());
$thirdPartyAuth = $credential->getThirdPartyAuthorization();
switch($request->getBindingType()) {
case 'NV':
if(!$thirdPartyAuth || !$thirdPartyAuth instanceof PPTokenAuthorization) {
$httpConfig->addHeader('X-PAYPAL-SECURITY-USERID', $credential->getUserName());
$httpConfig->addHeader('X-PAYPAL-SECURITY-PASSWORD', $credential->getPassword());
if($thirdPartyAuth) {
$httpConfig->addHeader('X-PAYPAL-SECURITY-SUBJECT', $thirdPartyAuth->getSubject());
}
}
break;
case 'SOAP':
if($thirdPartyAuth && $thirdPartyAuth instanceof PPTokenAuthorization) {
$request->addBindingInfo('securityHeader', '');
} else {
$securityHeader = '';
$securityHeader .= '' . $credential->getUserName() . '';
$securityHeader .= '' . $credential->getPassword() . '';
if($thirdPartyAuth && $thirdPartyAuth instanceof PPSubjectAuthorization) {
$securityHeader .= '' . $thirdPartyAuth->getSubject() . '';
}
$securityHeader .= '';
$request->addBindingInfo('securityHeader' , $securityHeader);
}
break;
}
}
} lib/PayPal/Handler/PPMerchantServiceHandler.php 0000666 00000005610 13436752250 0015423 0 ustar 00 apiUsername = $apiUsername;
}
public function handle($httpConfig, $request, $options) {
parent::handle($httpConfig, $request, $options);
$config = $options['config'];
if(is_string($this->apiUsername) || is_null($this->apiUsername)) {
// $apiUsername is optional, if null the default account in config file is taken
$credMgr = PPCredentialManager::getInstance($options['config']);
$request->setCredential(clone($credMgr->getCredentialObject($this->apiUsername)));
} else {
$request->setCredential($this->apiUsername);
}
$endpoint = '';
$credential = $request->getCredential();
if(isset($options['port']) && isset($config['service.EndPoint.'.$options['port']]))
{
$endpoint = $config['service.EndPoint.'.$options['port']];
}
// for backward compatibilty (for those who are using old config files with 'service.EndPoint')
else if (isset($config['service.EndPoint']))
{
$endpoint = $config['service.EndPoint'];
}
else if (isset($config['mode']))
{
if(strtoupper($config['mode']) == 'SANDBOX')
{
if($credential instanceof PPSignatureCredential)
{
$endpoint = PPConstants::MERCHANT_SANDBOX_SIGNATURE_ENDPOINT;
}
else if($credential instanceof PPCertificateCredential)
{
$endpoint = PPConstants::MERCHANT_SANDBOX_CERT_ENDPOINT;
}
}
else if(strtoupper($config['mode']) == 'LIVE')
{
if($credential instanceof PPSignatureCredential)
{
$endpoint = PPConstants::MERCHANT_LIVE_SIGNATURE_ENDPOINT;
}
else if($credential instanceof PPCertificateCredential)
{
$endpoint = PPConstants::MERCHANT_LIVE_CERT_ENDPOINT;
}
}
}
else
{
throw new PPConfigurationException('endpoint Not Set');
}
if($request->getBindingType() == 'SOAP')
{
$httpConfig->setUrl($endpoint);
}
else
{
throw new PPConfigurationException('expecting service binding to be SOAP');
}
$request->addBindingInfo("namespace", "xmlns:ns=\"urn:ebay:api:PayPalAPI\" xmlns:ebl=\"urn:ebay:apis:eBLBaseComponents\" xmlns:cc=\"urn:ebay:apis:CoreComponentTypes\" xmlns:ed=\"urn:ebay:apis:EnhancedDataTypes\"");
// Call the authentication handler to tack authentication related info
$handler = new PPAuthenticationHandler();
$handler->handle($httpConfig, $request, $options);
}
} lib/PayPal/Handler/GenericSoapHandler.php 0000666 00000002103 13436752250 0014272 0 ustar 00 namespace = $namespace;
}
public function handle($httpConfig, $request, $options) {
if(isset($options['apiContext'])) {
if($options['apiContext']->getHttpHeaders() != null) {
$httpConfig->setHeaders($options['apiContext']->getHttpHeaders());
}
if($options['apiContext']->getSOAPHeader() != null) {
$request->addBindingInfo('securityHeader', $options['apiContext']->getSOAPHeader()->toXMLString());
}
}
if(isset($options['config']['service.EndPoint'])) {
$httpConfig->setUrl($options['config']['service.EndPoint']);
}
if( !array_key_exists('Content-Type', $httpConfig->getHeaders())) {
$httpConfig->addHeader('Content-Type', 'text/xml');
}
$request->addBindingInfo("namespace", $this->namespace);
}
}
lib/PayPal/Handler/PPGenericServiceHandler.php 0000666 00000002715 13436752250 0015241 0 ustar 00 sdkName = $sdkName;
$this->sdkVersion = $sdkVersion;
}
public function handle($httpConfig, $request, $options) {
$httpConfig->addHeader('X-PAYPAL-REQUEST-DATA-FORMAT', $request->getBindingType());
$httpConfig->addHeader('X-PAYPAL-RESPONSE-DATA-FORMAT', $request->getBindingType());
$httpConfig->addHeader('X-PAYPAL-DEVICE-IPADDRESS', PPUtils::getLocalIPAddress());
$httpConfig->addHeader('X-PAYPAL-REQUEST-SOURCE', $this->getRequestSource());
if (!array_key_exists("User-Agent", $httpConfig->getHeaders())) {
$httpConfig->addHeader("User-Agent", PPUserAgent::getValue($this->sdkName, $this->sdkVersion));
}
if(isset($options['config']['service.SandboxEmailAddress'])) {
$httpConfig->addHeader('X-PAYPAL-SANDBOX-EMAIL-ADDRESS', $options['config']['service.SandboxEmailAddress']);
}
}
/**
* Compute the value that needs to sent for the PAYPAL_REQUEST_SOURCE
* parameter when making API calls
*/
private function getRequestSource() {
return str_replace(" ", "-", $this->sdkName) . "-" . $this->sdkVersion;
}
}
lib/PayPal/Formatter/PPSOAPFormatter.php 0000666 00000001722 13436752250 0014057 0 ustar 00 getBindingInfo('namespace') != null ) ? $request->getBindingInfo('namespace') : "";
$soapEnvelope = '";
$soapHeader = '';
if($request->getBindingInfo('securityHeader') != null) {
$soapHeader .= $request->getBindingInfo('securityHeader');
}
$soapHeader .= '';
$soapBody = '';
$soapBody .= $request->getRequestObject()->toXMLString();
$soapBody .= '';
return $soapEnvelope . $soapHeader . $soapBody . '';
}
public function toObject($string, $options=array()) {
throw new \BadMethodCallException("Unimplemented");
}
}
lib/PayPal/Formatter/PPNVPFormatter.php 0000666 00000000472 13436752250 0013761 0 ustar 00 getRequestObject()->toNVPString();
}
public function toObject($string, $options=array()) {
throw new \BadMethodCallException("Unimplemented");
}
}
lib/PayPal/Formatter/IPPFormatter.php 0000666 00000001010 13436752250 0013473 0 ustar 00 sdkName = $sdkName;
$this->sdkVersion = $sdkVersion;
}
public function handle($httpConfig, $request, $options) {
$apiContext = $options['apiContext'];
$credential = $apiContext->getCredential();
$config = $apiContext->getConfig();
if($credential == NULL) {
try {
// Try picking credentials from the config file
$credMgr = PPCredentialManager::getInstance($config);
$credValues = $credMgr->getCredentialObject();
} catch (PPMissingCredentialException $ex) {
// Argh: swallow missing credential exception.
// We may have come here because the API call does not require
// authentication and sent an explicit no credentials configuration
}
if(isset($credValues) && is_array($credValues)) {
$credential = new OAuthTokenCredential($credValues['clientId'], $credValues['clientSecret']);
}
}
$httpConfig->setUrl(
rtrim( trim($this->_getEndpoint($config)), '/') .
(isset($options['path']) ? $options['path'] : '')
);
if(!array_key_exists("User-Agent", $httpConfig->getHeaders())) {
$httpConfig->addHeader("User-Agent", PPUserAgent::getValue($this->sdkName, $this->sdkVersion));
}
if(!is_null($credential) && $credential instanceof OAuthTokenCredential) {
$httpConfig->addHeader('Authorization', "Bearer " . $credential->getAccessToken($config));
}
if($httpConfig->getMethod() == 'POST' || $httpConfig->getMethod() == 'PUT') {
$httpConfig->addHeader('PayPal-Request-Id', $apiContext->getRequestId());
}
}
private function _getEndpoint($config) {
if (isset($config['service.EndPoint'])) {
return $config['service.EndPoint'];
} else if (isset($config['mode'])) {
switch (strtoupper($config['mode'])) {
case 'SANDBOX':
return PPConstants::REST_SANDBOX_ENDPOINT;
break;
case 'LIVE':
return PPConstants::REST_LIVE_ENDPOINT;
break;
default:
throw new PPConfigurationException('The mode config parameter must be set to either sandbox/live');
break;
}
} else {
throw new PPConfigurationException('You must set one of service.endpoint or mode parameters in your configuration');
}
}
}
lib/PayPal/Rest/ApiContext.php 0000666 00000003044 13436752250 0012220 0 ustar 00 credential;
}
public function getrequestId() {
if($this->requestId == null) {
$this->requestId = $this->generateRequestId();
}
return $this->requestId;
}
/**
*
* @param PayPal/Api/OAuthTokenCredential $credential
* @param string $requestId
*/
public function __construct($credential, $requestId=null) {
$this->credential = $credential;
$this->requestId = $requestId;
}
/**
* Generates a unique per request id that
* can be used to set the PayPal-Request-Id header
* that is used for idemptency
* @return string
*/
private function generateRequestId() {
static $pid = -1;
static $addr = -1;
if ($pid == -1) {
$pid = getmypid();
}
if ($addr == -1) {
if(array_key_exists('SERVER_ADDR', $_SERVER)) {
$addr = ip2long($_SERVER['SERVER_ADDR']);
} else {
$addr = php_uname('n');
}
}
return $addr . $pid . $_SERVER['REQUEST_TIME'] . mt_rand(0, 0xffff);
}
}
lib/PayPal/IPN/PPIPNMessage.php 0000666 00000007271 13436752250 0012054 0 ustar 00 config = PPConfigManager::getConfigWithDefaults($config);
if($postData == '') {
// reading posted data from directly from $_POST may causes serialization issues with array data in POST
// reading raw POST data from input stream instead.
$postData = file_get_contents('php://input');
}
$rawPostArray = explode('&', $postData);
foreach ($rawPostArray as $keyValue) {
$keyValue = explode ('=', $keyValue);
if (count($keyValue) == 2)
$this->ipnData[$keyValue[0]] = urldecode($keyValue[1]);
}
//var_dump($this->ipnData);
}
/**
* Returns a hashmap of raw IPN data
*
* @return array
*/
public function getRawData() {
return $this->ipnData;
}
/**
* Validates a IPN message
*
* @return boolean
*/
public function validate() {
if(isset($this->isIpnVerified))
{
return $this->isIpnVerified;
}
else
{
$request = self::IPN_CMD;
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc() == 1) {
$get_magic_quotes_exists = true;
} else {
$get_magic_quotes_exists = false;
}
foreach ($this->ipnData as $key => $value) {
if($get_magic_quotes_exists) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$request .= "&$key=$value";
}
$httpConfig = new PPHttpConfig($this->setEndpoint());
$httpConfig->addCurlOption(CURLOPT_FORBID_REUSE, 1);
$httpConfig->addCurlOption(CURLOPT_HTTPHEADER, array('Connection: Close'));
$connection = PPConnectionManager::getInstance()->getConnection($httpConfig, $this->config);
$response = $connection->execute($request);
if($response == 'VERIFIED') {
$this->isIpnVerified = true;
return true;
}
$this->isIpnVerified = false;
return false; // value is 'INVALID'
}
}
/**
* Returns the transaction id for which
* this IPN was generated, if one is available
*
* @return string
*/
public function getTransactionId() {
if(isset($this->ipnData['txn_id'])) {
return $this->ipnData['txn_id'];
} else if(isset($this->ipnData['transaction[0].id'])) {
$idx = 0;
do {
$transId[] = $this->ipnData["transaction[$idx].id"];
$idx++;
} while(isset($this->ipnData["transaction[$idx].id"]));
return $transId;
}
}
/**
* Returns the transaction type for which
* this IPN was generated
*
* @return string
*/
public function getTransactionType() {
return $this->ipnData['transaction_type'];
}
private function setEndpoint()
{
if(isset($this->config['service.EndPoint.IPN']))
{
$url = $this->config['service.EndPoint.IPN'];
}
else if(isset($this->config['mode']))
{
if(strtoupper($this->config['mode']) == 'SANDBOX')
{
$url = PPConstants::IPN_SANDBOX_ENDPOINT;
}
else if (strtoupper($this->config['mode']) == 'LIVE')
{
$url = PPConstants::IPN_LIVE_ENDPOINT;
}
else
{
throw new PPConfigurationException('mode should be LIVE or SANDBOX');
}
}
else
{
throw new PPConfigurationException('You must set one of mode OR service.endpoint.IPN parameters');
}
return $url;
}
}
lib/PayPal/Common/PPArrayUtil.php 0000666 00000000436 13436752250 0012633 0 ustar 00 $v) {
if(is_int($k)) {
return false;
}
}
return true;
}
} lib/PayPal/Common/PPModel.php 0000666 00000003172 13436752250 0011757 0 ustar 00 _propMap[$key];
}
public function __set($key, $value) {
$this->_propMap[$key] = $value;
}
public function __isset($key) {
return isset($this->_propMap[$key]);
}
public function __unset($key) {
unset($this->_propMap[$key]);
}
private function _convertToArray($param) {
$ret = array();
foreach($param as $k => $v) {
if($v instanceof PPModel ) {
$ret[$k] = $v->toArray();
} else if (is_array($v)) {
$ret[$k] = $this->_convertToArray($v);
} else {
$ret[$k] = $v;
}
}
return $ret;
}
public function fromArray($arr) {
foreach($arr as $k => $v) {
if(is_array($v)) {
$clazz = PPReflectionUtil::getPropertyClass(get_class($this), $k);
if(PPArrayUtil::isAssocArray($v)) {
$o = new $clazz();
$o->fromArray($v);
$this->__set($k, $o);
} else {
$arr = array();
foreach($v as $nk => $nv) {
if(is_array($nv)) {
$o = new $clazz();
$o->fromArray($nv);
$arr[$nk] = $o;
} else {
$arr[$nk] = $nv;
}
}
$this->__set($k, $arr);
}
}else {
$this->$k = $v;
}
}
}
public function fromJson($json) {
$this->fromArray(json_decode($json, true));
}
public function toArray() {
return $this->_convertToArray($this->_propMap);
}
public function toJSON() {
return json_encode($this->toArray());
}
} lib/PayPal/Common/PPApiContext.php 0000666 00000004020 13436752250 0012766 0 ustar 00 httpHeaders = $httpHeaders;
return $this;
}
/*
*
* @return array
*/
public function getHttpHeaders() {
return $this->httpHeaders;
}
/*
*
* @param string $name header name
* @param string $value header value
* @param boolean $force if true (default), existing value is overwritten
*/
public function addHttpHeader($name, $value, $force=true) {
if(!$force && array_key_exists($name, $this->httpHeaders)) {
return;
}
$this->httpHeaders[$name] = $value;
return $this;
}
/*
*
* @param PPXmlMessage object to attach to SOAP header
*/
public function setSOAPHeader($SOAPHeader) {
$this->SOAPHeader = $SOAPHeader;
return $this;
}
/*
*
* @return PPXmlMessage
*/
public function getSOAPHeader() {
return $this->SOAPHeader;
}
/*
*
* @param array SDK configuration parameters
*/
public function setConfig(array $config) {
$this->config = PPConfigManager::getConfigWithDefaults($config);
return $this;
}
/*
*
* @return array
*/
public function getConfig() {
return $this->config;
}
public function get($searchKey)
{
if(!isset($this->config)) {
return PPConfigManager::getInstance()->get($searchKey);
}
else
{
if (array_key_exists($searchKey, $this->getConfig()))
return $this->config[$searchKey];
}
return false;
}
/*
*
* @param array SDK configuration parameters
*/
public function __construct($config=null) {
$this->config = PPConfigManager::getConfigWithDefaults($config);
}
}
lib/PayPal/Common/PPUserAgent.php 0000666 00000002010 13436752250 0012602 0 ustar 00 getDocComment(), $annots, PREG_PATTERN_ORDER)) {
return NULL;
}
foreach ($annots[1] as $i => $annot) {
$annotations[strtolower($annot)] = empty($annots[2][$i]) ? TRUE : rtrim($annots[2][$i], " \t\n\r)");
}
return $annotations;
}
/**
* preg_replace_callback callback function
*/
private static function replace_callback($match) {
return ucwords($match[2]);
}
}
lib/PayPal/Exception/PPMissingCredentialException.php 0000666 00000000556 13436752250 0016713 0 ustar 00 getLine().' in '.$this->getFile()
.': '.$this->getMessage().'';
return $errorMsg;
}
} lib/PayPal/Exception/PPInvalidCredentialException.php 0000666 00000000556 13436752250 0016670 0 ustar 00 getLine().' in '.$this->getFile()
.': '.$this->getMessage().'';
return $errorMsg;
}
} lib/PayPal/Exception/OAuthException.php 0000666 00000000170 13436752250 0014057 0 ustar 00