|
|
<?php |
|
|
require_once 'main_account.php'; |
|
|
|
|
|
|
|
|
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) { |
|
|
|
|
|
$callbackMetadata = $stkCallback['CallbackMetadata']['Item']; |
|
|
$amount = $callbackMetadata[0]['Value']; |
|
|
$mpesaReceipt = $callbackMetadata[1]['Value']; |
|
|
$phoneNumber = $callbackMetadata[4]['Value']; |
|
|
|
|
|
$mainAccount->updateTransactionStatus($checkoutRequestID, 'completed', $mpesaReceipt); |
|
|
|
|
|
|
|
|
error_log("Payment successful: $checkoutRequestID - $mpesaReceipt"); |
|
|
} else { |
|
|
|
|
|
$mainAccount->updateTransactionStatus($checkoutRequestID, 'failed'); |
|
|
|
|
|
|
|
|
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']); |
|
|
} |
|
|
?> |