static-variables / jweb /ac1 /src /api /mpesa_callback.php
fellybikush's picture
Upload 99 files
0dff816 verified
raw
history blame
1.53 kB
<?php
require_once 'main_account.php';
// Log the callback for debugging
file_put_contents('mpesa_callback.log', date('Y-m-d H:i:s') . " - " . file_get_contents('php://input') . "\n", FILE_APPEND);
$callbackData = json_decode(file_get_contents('php://input'), true);
if (isset($callbackData['Body']['stkCallback'])) {
$stkCallback = $callbackData['Body']['stkCallback'];
$checkoutRequestID = $stkCallback['CheckoutRequestID'];
$resultCode = $stkCallback['ResultCode'];
$resultDesc = $stkCallback['ResultDesc'];
$mainAccount = new MainAccount();
if ($resultCode == 0) {
// Payment successful
$callbackMetadata = $stkCallback['CallbackMetadata']['Item'];
$amount = $callbackMetadata[0]['Value'];
$mpesaReceipt = $callbackMetadata[1]['Value'];
$phoneNumber = $callbackMetadata[4]['Value'];
$mainAccount->updateTransactionStatus($checkoutRequestID, 'completed', $mpesaReceipt);
// Log success
error_log("Payment successful: $checkoutRequestID - $mpesaReceipt");
} else {
// Payment failed
$mainAccount->updateTransactionStatus($checkoutRequestID, 'failed');
// Log failure
error_log("Payment failed: $checkoutRequestID - $resultDesc");
}
http_response_code(200);
echo json_encode(['ResultCode' => 0, 'ResultDesc' => 'Accepted']);
} else {
http_response_code(400);
echo json_encode(['ResultCode' => 1, 'ResultDesc' => 'Invalid callback']);
}
?>