From what you described, it appears you are correct in assuming it could be the charging socket. You may want to investigate the MagSafe DC-In Board. This little $30 part could be the culprit if the battery is actually charging, but not registering in the OS as such. More likely, though, the charging socket on the battery is malfunctioning, communicating the battery is charged, whether or not it's actually the case. It may be a sensor as well. Just a thought.