There is not a way to 100% guarantee that people will not try to do this, most will not. If the person is checking out via PayPal and they have different shipping information between the zip code they entered into the cart and PayPal then you will get a notification. You can also setup your PayPal account to require manual approval. This would make sending the code to the legitimate buyers slower, but it would make sure that others do not get your codes.