Files
interblue.pl/modules/przelewy24/classes/Przelewy24RestTransaction.php
2024-10-25 14:16:28 +02:00

106 lines
2.6 KiB
PHP

<?php
/**
* @author Przelewy24
* @copyright Przelewy24
* @license https://www.gnu.org/licenses/lgpl-3.0.en.html
*/
if (!defined('_PS_VERSION_')) {
exit;
}
/**
* Class Przelewy24RestTransaction
*/
class Przelewy24RestTransaction extends Przelewy24RestAbstract implements Przelewy24RestTransactionInterface
{
/**
* Register.
*
* @param Przelewy24PayloadForRestTransaction $payload
*
* @return array
*/
public function register($payload)
{
$path = '/transaction/register';
$this->signSha384ForRegister($payload);
return $this->call($path, $payload, 'POST');
}
/**
* Register raw token.
*
* @param Przelewy24PayloadForRestTransaction $payload
*
* @return string|null
*/
public function registerRawToken($payload)
{
$res = $this->register($payload);
if (isset($res['data']['token'])) {
return $res['data']['token'];
} else {
return null;
}
}
/**
* Verify.
*
* @param Przelewy24PayloadForRestTransactionVerify $payload
*
* @return string
*/
public function verify($payload)
{
$path = '/transaction/verify';
$this->signSha384ForVerification($payload);
$data = $this->call($path, $payload, 'PUT');
if (isset($data['data']['status'])) {
return $data['data']['status'] === 'success';
} else {
return false;
}
}
/**
* Sign sha384 for register.
*
* @param Przelewy24PayloadForRestTransaction $payload
*/
public function signSha384ForRegister($payload)
{
$data = [
'sessionId' => $payload->sessionId,
'merchantId' => $payload->merchantId,
'amount' => $payload->amount,
'currency' => $payload->currency,
'crc' => $this->salt,
];
$string = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$sign = hash('sha384', $string);
$payload->sign = $sign;
}
/**
* Sign sha384 for verficication.
*
* @param Przelewy24PayloadForRestTransactionVerify $payload
*/
private function signSha384ForVerification($payload)
{
$data = [
'sessionId' => $payload->sessionId,
'orderId' => $payload->orderId,
'amount' => $payload->amount,
'currency' => $payload->currency,
'crc' => $this->salt,
];
$string = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$sign = hash('sha384', $string);
$payload->sign = $sign;
}
}