Eu estou importando desta maneira:
use Efí\Efí;
Este é o meu método para atualizar o
status
no banco de dados:
public function notification(Request $request) {
try {
$efiEnviroment = env('EFI_ENVIROMENT') === 'sandbox' ? true : false;
$options = [
'client_id' => env('EFI_CLIENT_ID'),
'client_secret' => env('EFI_CLIENT_SECRET'),
'sandbox' => $efiEnviroment
];
$token = $request->notification;
Log::info("Token de notification: $token");
$params = [
'token' => $token
];
$api = new Efí($options);
$chargeNotification = $api->getNotification($params, []);
// Conta o tamanho do array data (que armazena o resultado)
$i = count($chargeNotification["data"]);
// Pega o último Object chargeStatus
$ultimoStatus = $chargeNotification["data"][$i-1];
// Acessando o array Status
$status = $ultimoStatus["status"];
// Obtendo o ID da transação
$charge_id = $ultimoStatus["identifiers"]["charge_id"];
// Obtendo a String do status atual
$current_status = $status["current"];
$previous_status = $status["previous"];
$payment = Payment::where('charge_id', $charge_id)->first();
$payment->update([
'status' => $current_status
]);
Log::info("Status anterior: $previous_status . Status atual: $current_status");
return response()->json([
'status' => 'success',
'message' => 'Pagamento processado com sucesso.',
'data' => $payment,
], 200);
} catch (\Exception $e) {
$error_message = $e->getMessage() ? $e->getMessage() : $e;
Log::error($error_message);
return response()->json(['error', $error_message], 500);
}
}