Вебхук Paymongo не получает ответ об ошибке платежаJavascript

Форум по Javascript
Ответить
Anonymous
 Вебхук Paymongo не получает ответ об ошибке платежа

Сообщение Anonymous »

В настоящее время я работаю над проектом, где мы используем Paymongo в качестве нашего платежного шлюза. Я сталкиваюсь с проблемой с получением неудавшего ответа на оплату с помощью Paymongo WebHook. и процесс оплаты не останавливается; Вместо этого он перенаправляет обратно на страницу оплаты, чтобы выбрать метод оплаты. < /p>

Код: Выделить всё


ini_set('display_errors', 1);
error_reporting(E_ALL);

function logWithTimestamp($message) {
$timestamp = date('Y-m-d H:i:s');
if (is_array($message) || is_object($message)) {
$message = print_r($message, true); // Convert array/object to string
}
file_put_contents("webhook_log.txt", "[$timestamp] $message" . PHP_EOL, FILE_APPEND);
}

$payload = file_get_contents("php://input");

if (!$payload) {
logWithTimestamp("No payload received.");
http_response_code(400);
echo json_encode(["message" => "No payload received"]);
exit;
}

$data = json_decode($payload, true);

if (json_last_error() !== JSON_ERROR_NONE) {
logWithTimestamp("JSON Decode Error: " . json_last_error_msg());
http_response_code(200);
echo json_encode(["message" => "Invalid JSON format"]);
exit;
}

function searchArray($array, $keys) {
$result = [];

$recursiveSearch = function ($array, $key, &$found) use (&$recursiveSearch) {
if (is_array($array)) {
foreach ($array as $k => $v) {
if ($k === $key) {
$found[] = $v;
} elseif (is_array($v)) {
$recursiveSearch($v, $key, $found);
}
}
}
};

foreach ($keys as $key) {
$found = [];
$recursiveSearch($array, $key, $found);
$result[$key] = count($found) === 1 ? $found[0] : $found;
}

return $result;
}

$jsonResponse = $data;

$keysToFind = ['id', 'status', 'source'];

$values = searchArray($jsonResponse, $keysToFind);

$paymentId = $values['id'] ?? null;  // PayMongo payment ID is usually the second 'id' found
$paymentSource = $values['source'] ?? null;
$status = $values['status'] ?? null;

$test = [$paymentId, $paymentSource, $status];

logWithTimestamp($test);

http_response_code(200);
exit

Я надеюсь понять, почему вебхук не получает ответ об ошибке платежа

Подробнее здесь: https://stackoverflow.com/questions/793 ... t-response
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»