File size: 1,528 Bytes
0dff816 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?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']);
}
?> |