Anonymous
Вебхук Paymongo не получает ответ об ошибке платежа
Сообщение
Anonymous » 25 янв 2025, 16:11
В настоящее время я работаю над проектом, где мы используем 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
1737810664
Anonymous
В настоящее время я работаю над проектом, где мы используем Paymongo в качестве нашего платежного шлюза. Я сталкиваюсь с проблемой с получением неудавшего ответа на оплату с помощью Paymongo WebHook. и процесс оплаты не останавливается; Вместо этого он перенаправляет обратно на страницу оплаты, чтобы выбрать метод оплаты. < /p> [code] 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 [/code] Я надеюсь понять, почему вебхук не получает ответ об ошибке платежа Подробнее здесь: [url]https://stackoverflow.com/questions/79386774/paymongo-webhook-not-receiving-failed-payment-response[/url]