The RSVP code is used to automatically apply Roles, and yes it could be passed on to others which means it's not something that can be unique per user/customer. I'm not sure how you're processing payments, but perhaps the easiest solution is to use either the built in PayPal provider or a third party solution from SnowCovered to give people the Subscription role.
As a last option, you could create a custom solution by modifying core (though that's always a risk since you may have to update it every update to DNN). The code for determining whether an RSVP is valid is located here:
admin\Users\MemberServices.ascx.vb
This area of code in particular:
'Parse the roles
For Each objRole In arrRoles
If objRole.RSVPCode = code Then
'Subscribe User to Role
objRoles.UpdateUserRole(PortalId, UserInfo.UserID, objRole.RoleID)
blnRSVPCodeExists = True
PortalSecurity.ClearRoles()
'Raise SubscriptionUpdated Event
OnSubscriptionUpdated(New SubscriptionUpdatedEventArgs(False, objRole.RoleName))
End If
Next
What you could do is simply look up predefined one-time codes in a database or file and validate them against what the user passed. The simplest solution is usually the most logical, what I would do is provide users with numbers divisable by a prime like 17 mixed in with random letters. I would then strip out the letters to get the number divisible by the prime. E.g. An RSVP of a8hu5as0 = 850 = 850/17 = Valid.