first commit

This commit is contained in:
2024-11-05 12:22:50 +01:00
commit e5682a3912
19641 changed files with 2948548 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../');
exit;

View File

@@ -0,0 +1,680 @@
<?php
/*
* 2005-2016 PayLane sp. z.o.o.
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@Paylane.pl so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PayLane to newer
* versions in the future. If you wish to customize PayLane for your
* needs please refer to http://www.Paylane.pl for more information.
*
* @author PayLane <info@paylane.pl>
* @copyright 2005-2019 PayLane sp. z.o.o.
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PayLane sp. z.o.o.
*/
/**
* Client library for Paylane REST Server.
* More info at http://devzone.paylane.com
*/
class PayLaneRestClient
{
/**
* @var string
*/
protected $api_url = 'https://direct.paylane.com/rest/';
/**
* @var string
*/
protected $username = null, $password = null;
/**
* @var array
*/
protected $http_errors = array
(
400 => '400 Bad Request',
401 => '401 Unauthorized',
500 => '500 Internal Server Error',
501 => '501 Not Implemented',
502 => '502 Bad Gateway',
503 => '503 Service Unavailable',
504 => '504 Gateway Timeout',
);
/**
* @var bool
*/
protected $is_success = false;
/**
* @var array
*/
protected $allowed_request_methods = array(
'get',
'put',
'post',
'delete',
);
/**
* @var boolean
*/
protected $ssl_verify = true;
/**
* Constructor
*
* @param string $username Username
* @param string $password Password
*/
public function __construct($username, $password)
{
$this->username = $username;
$this->password = $password;
$validate_params = array
(
false === extension_loaded('curl') => 'The curl extension must be loaded for using this class!',
false === extension_loaded('json') => 'The json extension must be loaded for using this class!'
);
$this->checkForErrors($validate_params);
}
/**
* Set Api URL
*
* @param string $url Api URL
*/
public function setUrl($url)
{
$this->api_url = $url;
}
/**
* Sets SSL verify
*
* @param bool $ssl_verify SSL verify
*/
public function setSSLverify($ssl_verify)
{
$this->ssl_verify = $ssl_verify;
}
/**
* Request state getter
*
* @return bool
*/
public function isSuccess()
{
return $this->is_success;
}
/**
* Performs card sale
*
* @param array $params Sale Params
* @return array
*/
public function cardSale($params)
{
return $this->call(
'cards/sale',
'post',
$params
);
}
/**
* Performs card sale by token
*
* @param array $params Sale Params
* @return array
*/
public function cardSaleByToken($params)
{
return $this->call(
'cards/saleByToken',
'post',
$params
);
}
/**
* Card authorization
*
* @param array $params Authorization params
* @return array
*/
public function cardAuthorization($params)
{
return $this->call(
'cards/authorization',
'post',
$params
);
}
/**
* Card authorization by token
*
* @param array $params Authorization params
* @return array
*/
public function cardAuthorizationByToken($params)
{
return $this->call(
'cards/authorizationByToken',
'post',
$params
);
}
/**
* PayPal authorization
*
* @param $params
* @return array
*/
public function paypalAuthorization($params)
{
return $this->call(
'paypal/authorization',
'post',
$params
);
}
/**
* Performs capture from authorized card
*
* @param array $params Capture authorization params
* @return array
*/
public function captureAuthorization($params)
{
return $this->call(
'authorizations/capture',
'post',
$params
);
}
/**
* Performs closing of card authorization, basing on authorization card ID
*
* @param array $params Close authorization params
* @return array
*/
public function closeAuthorization($params)
{
return $this->call(
'authorizations/close',
'post',
$params
);
}
/**
* Performs refund
*
* @param array $params Refund params
* @return array
*/
public function refund($params)
{
return $this->call(
'refunds',
'post',
$params
);
}
/**
* Get sale info
*
* @param array $params Get sale info params
* @return array
*/
public function getSaleInfo($params)
{
return $this->call(
'sales/info',
'get',
$params
);
}
/**
* Get sale authorization info
*
* @param array $params Get sale authorization info params
* @return array
*/
public function getAuthorizationInfo($params)
{
return $this->call(
'authorizations/info',
'get',
$params
);
}
/**
* Performs sale status check
*
* @param array $params Check sale status
* @return array
*/
public function checkSaleStatus($params)
{
return $this->call(
'sales/status',
'get',
$params
);
}
/**
* Direct debit sale
*
* @param array $params Direct debit params
* @return array
*/
public function directDebitSale($params)
{
return $this->call(
'directdebits/sale',
'post',
$params
);
}
/**
* Sofort sale
*
* @param array $params Sofort params
* @return array
*/
public function sofortSale($params)
{
return $this->call(
'sofort/sale',
'post',
$params
);
}
/**
* iDeal sale
*
* @param $params iDeal transaction params
* @return array
*/
public function idealSale($params)
{
return $this->call(
'ideal/sale',
'post',
$params
);
}
/**
* iDeal banks list
*
* @return array
*/
public function idealBankCodes()
{
return $this->call(
'ideal/bankcodes',
'get',
array()
);
}
/**
* Bank transfer sale
*
* @param array $params Bank transfer sale params
* @return array
*/
public function bankTransferSale($params)
{
return $this->call(
'banktransfers/sale',
'post',
$params
);
}
/**
* PayPal sale
*
* @param array $params Paypal sale params
* @return array
*/
public function paypalSale($params)
{
return $this->call(
'paypal/sale',
'post',
$params
);
}
/**
* Cancels Paypal recurring profile
*
* @param array $params Paypal params
* @return array
*/
public function paypalStopRecurring($params)
{
return $this->call(
'paypal/stopRecurring',
'post',
$params
);
}
/**
* Performs resale by sale ID
*
* @param array $params Resale by sale params
* @return array
*/
public function resaleBySale($params)
{
return $this->call(
'resales/sale',
'post',
$params
);
}
/**
* Performs resale by authorization ID
*
* @param array $params Resale by authorization params
* @return array
*/
public function resaleByAuthorization($params)
{
return $this->call(
'resales/authorization',
'post',
$params
);
}
/**
* Checks if a card is enrolled in the 3D-Secure program.
*
* @param array $params Is card 3d secure params
* @return array
*/
public function checkCard3DSecure($params)
{
return $this->call(
'3DSecure/checkCard',
'get',
$params
);
}
/**
* Checks if a card is enrolled in the 3D-Secure program, based on the card's token.
*
* @param array $params Is card 3d secure params
* @return array
*/
public function checkCard3DSecureByToken($params)
{
return $this->call(
'3DSecure/checkCardByToken',
'get',
$params
);
}
/**
* Performs sale by ID 3d secure authorization
*
* @param array $params Sale by 3d secure authorization params
* @return array
*/
public function saleBy3DSecureAuthorization($params)
{
return $this->call(
'3DSecure/authSale',
'post',
$params
);
}
/**
* Perform check card
*
* @param array $params Check card params
* @return array
*/
public function checkCard($params)
{
return $this->call(
'cards/check',
'get',
$params
);
}
/**
* Perform check card by token
*
* @param array $params Check card params
* @return array
*/
public function checkCardByToken($params)
{
return $this->call(
'cards/checkByToken',
'get',
$params
);
}
/**
* Performs Apple Pay sale
*
* @param array $params Apple Pay sale params
* @return array
*/
public function applePaySale(array $params)
{
return $this->call(
'applepay/sale',
'post',
$params
);
}
public function googlePaySale(array $params)
{
return $this->call(
'googlepay/sale',
'post',
$params
);
}
public function blikSale(array $params)
{
return $this->call(
'blik/sale',
'post',
$params
);
}
/**
* Performs Apple Pay authorization
*
* @param array $params Apple Pay authorization params
* @return array
*/
public function applePayAuthorization(array $params)
{
return $this->call(
'applepay/authorization',
'post',
$params
);
}
public function googlePayAuthorization(array $params)
{
return $this->call(
'googlepay/authorization',
'post',
$params
);
}
public function blikAuthorization(array $params)
{
return $this->call(
'blik/authorization',
'post',
$params
);
}
/**
* Method responsible for preparing, setting state and returning answer from rest server
*
* @param string $method
* @param string $request
* @param array $params
* @return array
*/
protected function call($method, $request, $params)
{
$this->is_success = false;
if (is_object($params))
{
$params = (array) $params;
}
$validate_params = array
(
false === is_string($method) => 'Method name must be string',
false === $this->checkRequestMethod($request) => 'Not allowed request method type',
);
$this->checkForErrors($validate_params);
$params_encoded = json_encode($params);
$response = $this->pushData($method, $request, $params_encoded);
$response = json_decode($response, true);
if (isset($response['success']) && $response['success'] === true)
{
$this->is_success = true;
}
return $response;
}
/**
* Checking error mechanism
*
* @param array $validate_params
* @throws \Exception
*/
protected function checkForErrors($validate_params)
{
foreach ($validate_params as $key => $error)
{
if ($key)
{
throw new \Exception($error);
}
}
}
/**
* Check if method is allowed
*
* @param string $method_type
* @return bool
*/
protected function checkRequestMethod($method_type)
{
$request_method = strtolower($method_type);
if(in_array($request_method, $this->allowed_request_methods))
{
return true;
}
return false;
}
/**
* Method responsible for pushing data to REST server
*
* @param string $method
* @param string $method_type
* @param string $request - JSON
* @return array
* @throws \Exception
*/
protected function pushData($method, $method_type, $request)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->api_url . $method);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method_type));
curl_setopt($ch, CURLOPT_HTTPAUTH, 1);
curl_setopt($ch, CURLOPT_USERPWD, $this->username . ':' . $this->password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $this->ssl_verify);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (isset($this->http_errors[$http_code]))
{
throw new \Exception('Response Http Error - ' . $this->http_errors[$http_code]);
}
if (0 < curl_errno($ch))
{
throw new \Exception('Unable to connect to ' . $this->api_url . ' Error: ' . curl_error($ch));
}
curl_close($ch);
return $response;
}
}