transactions() ->where('type', $type) ->where('reference', $result->reference) ->first(); if ($existing !== null) { return $existing; } return $order->transactions()->create([ 'success' => $result->status === PaymentResultStatus::Succeeded, 'type' => $type, 'driver' => $driver, 'amount' => $result->amount->value, 'reference' => $result->reference, 'status' => $result->status->name, 'notes' => $result->failureReason, 'card_type' => $result->meta['card_type'] ?? null, 'last_four' => $result->meta['last_four'] ?? null, 'meta' => $result->meta, ]); } }