I have a registration process which is split into a number of steps, at step 1 the user creates a free account (which requires activation by email to be moved from pending to the relevant group_id), at step 2 the user can choose to become a paid member, the module I'm using then moves the member to the relevant paid member group upon completion of payment. This all works just fine and is quite a normal process to follow (I think, Github uses a similar mechanism).
The problem I have is that I want to validate email addresses for free accounts but if a user continues and becomes a paid member 'before' they have activated their account and then attempts to activate it subsequently, they currently get the "Invalid activation request" error because they are no longer a pending member.
To me it seems the simplest solution to this problem would be to allow member activation to fail silently or somehow hijack that process and bypass the error for members that are no longer pending.
I've searched far and wide for an existing add on that does this with no luck and it seems that the 'member_register_validate_members' hook (http://ellislab.com/expressionengine/user-guide/development/extension_hooks/module/member_register/index.html#member_register_validate_members) fires 'after' validation and not before so I can't see that it will help me.
Any bright ideas?