I'm building a subscription-based website that needs to accept recurring payments. The concept is much like that of Netflix, but there is also a variation between the two.
- When a user attempts to sign up, ask for their credit card info and check to see if the CC is valid. Also make sure no credit card is linked to more than one user, so there will be a one-to-one mapping between a username and a credit card (one-to-many is fine too). If a new user attempts to register a CC that's already been stored, the registration fails.
- Give the user a 30-day trial period. Do not charge them if they don't want to continue their service
- Otherwise charge them
How could I achieve this? Is looking up credit card data to see if it's already on the system considered OK? I've been researching PayPal and Authorize.net, but I'm still not sure if I can do all the things above using a third-party gateway.
Also, does checking credit card validity (not talking about algorithmic checking) cost money? I don't want to pay whenever a spammer or a bot attempts to register an invalid card. This might be extremely costly.
I'm willing to go through PCI compliance scrutiny.

1is permitted by your merchant agreement? Most will not permit you to refuse a valid card for your own internal reasons. (Imagine what a nightmare it'd be for users to see a "FooCard" logo on a business and then have the business owner say, "Sure, we take FooCard, but not your FooCard.") WalMart had to take the credit card companies to court to get the right to do this even in limited circumstances. – David Schwartz Jun 24 '12 at 14:23