pscbonline-php/Src/CallbackClass/callbackDir/index.php

103 lines
3.2 KiB
PHP

<?php
class CallingCallback
{
public $merchant_key;
public $orderId;
public $amount;
public $state;
public $marketPlace;
public $paymentMethod;
private $array;
public $string;
public $WayLog;
public $WayEvents;
public function __construct($array = '')
{
session_start();
$this->WayLog = trim($_SESSION['log_way']);
$this->WayEvents = trim($_SESSION['events_way']);
if (!is_array($array)) {
file_put_contents($this->WayLog.'/callback.log',PHP_EOL.'Массив данных не был передан в конструктор', FILE_APPEND);
exit;
}
$this->array = $array;
$this->merchant_key = $this->array['secretKey'];
$this->orderId = $this->array["orderId"];
}
function decrypt_aes128_ecb_pkcs5($encrypted, $merchant_key)
{
$key_md5_binary = hash("md5", $merchant_key, true);
$decrypted = openssl_decrypt($encrypted, "AES-128-ECB", $key_md5_binary,OPENSSL_RAW_DATA);
return $decrypted;
}
public function processGetCallback($choise = true)
{
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
$encrypted_request = file_get_contents('php://input');
$decrypted_request = $this->decrypt_aes128_ecb_pkcs5($encrypted_request, $this->merchant_key);
$fp = fopen($this->WayLog.'/callback.log', 'a');
fwrite($fp, 'Содержимое пришедшее от callback: '.$decrypted_request. "\n");
$data_array = json_decode($decrypted_request, true);
//Разбор полученного содержимого
foreach ($data_array["payments"] as $payment)
{
foreach ($payment as $key => $value)
{
$keys = ['orderId','marketPlace','amount','paymentMethod'];
if ((in_array($key, $keys))) {
$ValueInsideJSON[] = $value;
}
}
break;
}
$this->string = (string) $this->orderId;
if($choise)
{
file_put_contents($this->WayEvents.'/CallbackPayment.json', PHP_EOL.$decrypted_request, FILE_APPEND);
return $decrypted_request;
}
if(!$choise)
{
file_put_contents($this->WayEvents.'/CallbackPayment.json', PHP_EOL.$decrypted_request, FILE_APPEND);
$fp = fopen($this->WayLog.'/callback.log', 'a');
fwrite($fp,' Пришедшие данные для сравнения содержат: '.implode(', ', $ValueInsideJSON)."\n");
return $ValueInsideJSON;
}
fclose($fp);
}
}
public function processSendCallback($response)
{
$responseAnswer = json_encode(['payments' => $response]);
$fp = fopen($this->WayLog.'/callback.log', 'a');
fwrite($fp,'Ответ отправлен успешно: '.$responseAnswer."\n");
http_response_code(200);
header('Content-Type: application/json');
echo $responseAnswer;
}
}
?>