for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace DansMaCulotte\Monetico\Requests;
use DansMaCulotte\Monetico\Monetico;
abstract class AbstractRequest
{
/** @var string */
const REQUEST_URL = Monetico::MAIN_REQUEST_URL;
const REQUEST_URI = '';
/**
* @param string $securityKey
* @param array $fields
* @return string
*/
public function generateSeal(string $securityKey, array $fields): string
ksort($fields);
$query = http_build_query($fields, null, '*');
$query = urldecode($query);
return strtoupper(hash_hmac(
'sha1',
$query,
$securityKey
));
}
* @param string $seal
* @return array
public function generateFields(string $seal, array $fields): array
return array_merge(
$fields,
['MAC' => $seal]
);
protected function getRequestUrl(): string
return self::REQUEST_URL;
protected function getRequestUri(): string
return self::REQUEST_URI;
* @param bool $testMode
public function getUrl(bool $testMode = false): string
$requestUrl = $this->getRequestUrl();
if ($testMode) {
$requestUrl .= '/test';
return $requestUrl . '/' . $this->getRequestUri();
* @return bool
abstract public function validate(): bool;
* @param string $eptCode
* @param string $companyCode
* @param string $version
abstract public function fieldsToArray(string $eptCode, string $companyCode, string $version): array;