| <?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']); |
| } |
| ?> |