Paymongo-Webhook erhält keine fehlgeschlagene ZahlungsantwortPhp

PHP-Programmierer chatten hier
Guest
 Paymongo-Webhook erhält keine fehlgeschlagene Zahlungsantwort

Post by Guest »

Ich arbeite derzeit an einem Projekt, bei dem wir PayMongo als Payment Gateway verwenden. Ich habe ein Problem beim Abrufen der fehlgeschlagenen Zahlungsantwort mit dem PayMongo Webhook. und der Zahlungsprozess hört nicht auf; Stattdessen leitet es auf die Zahlungsseite zurück, um eine Zahlungsmethode auszuwählen. < /p>

Code: Select all


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

Ich hoffe, Einblicke zu erhalten, warum der Webhook die fehlgeschlagene Zahlungsantwort nicht erhält

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post