I developed .NET application and planning to sell it on monthly/yearly subscription plans.
At first I found that Plimus has licensing system and everything else that I need, but when I finally decided to test it I found that they have many bugs in their system and it's imposible to use licensing system with recurring payments.
Can you recommend some other payment processor that can accept paypal but also direct credit cards
and that has all fancy options like discounts coupons, recurring payment and most important license key deliver system that can control customers license based on monthly payments.
I'm founder of the company that makes LimeLM, a hassle free licensing and online activation system. That is, LimeLM is hardware locked licensing that integrates with all programming languages (.NET, Java, C++, etc., etc.) and allows for advanced functionality like recurring billing for desktop apps (like you're looking for) among other things. There are lots of ways you can do recurring billing in your apps, and we have an article talking about monthly update subscription.
Obviously you don't have to do SaaS licensing that limits updates, but that's the most popular option. You can choose to limit your application outright based on their subscription status.
But to address your question more directly, we have multiple fully-written payment integration examples that deliver product keys the instant an order is processed. See: How to generate product keys after an order.
In that article we talk about delivering product keys whether your payment platform is PayPal, Moneybookers, or Authorize.Net (i.e. direct credit card payment). Or you can enable all the payment platforms and have a payment selection screen where the user can choose their favorite payment method:
The actual example code we have is written for 3 languages so you can choose whatever works best for integrating with your website workflow. That is, the example code we have is written in PHP and ASP.NET (C# & VB.NET) -- just set a few configuration options and drop the code (in whichever language) into your website.
You're not limited to PayPal, Moneybookers, or Authorize.Net -- those are just the examples we've written. We have customers that integrate LimeLM with all sorts of other payment platforms (Cleverbridge, Plimus, FastSpring, RegNow, etc., etc.). You're not limited to PHP & ASP.NET either.
We can help you get up and running by walking you through everything you need (coupon processing, handling renewals, etc., etc.). Just shoot me an email.
Hackers, crackers, and thieves
Since you brought up cracking let me quote my own catch-phrase:
If it exists on a computer it can be cracked.There are lots of companies that sell snake oil (wrappers, obfuscation, in memory virtual compilers, etc., etc., etc.) but these don't add any extra protection whatsoever. The best these snake oils can do is add a few minutes to the time it takes to crack your app. For an in-depth study of this point see this study: On the (Im)possibility of Obfuscating Programs.
This raises the question: "If all licensing is crackable what's the point of having it at all?" The answer is this: casual piracy.
Casual piracy (that is, a person or company using the same product key over and over again) is a greater threat to your business than crackers. The Business Software Alliance has done studies on piracy within business and I believe the most recent worldwide percentage is 48.9% of all software is pirated (it's lower in some regions and much higher in other). So you should always use hardware-locked licensing (like LimeLM or something you build in-house) rather than just simple "serial" protection.
I can go into what hardware-locked licensing means if you want but it's probably easiest to give examples: Microsoft Windows Activation or Microsoft Office Activation. That is, a customer can on install your software on a finite number of computers. If you were to build it yourself you'd make a "fingerprint" of the computer (an ID generated from the components of the computer) and you'd use public-key encryption on your servers to cryptographically sign the message that your app would then use to verify the activation. (I can go into further details if you want, but this answer is getting a bit lengthy).
Dealing with cracked software on the web
The way you handle crackers is to find all pirated versions of your software on the web and send DMCA notices. A very high percentage (> 90%) of these hosting sites remove illegal files based on DMCA requests. But it's a whack-a-mole proposition. That is, when you get 20 sites to remove your files, 20 more pop up the next week.
We've thought about this problem too, which is why we created Pirate Poacher. This is a service we offer (free for LimeLM customers) that handles the tracking & removing of pirated versions of your software for you.
Tell me if this helps.
DISCLAIMER - We are the developers of CryptoLicensing.
Do not mix up your payment processor and licensing. Most payment processors today have the ability to do an HTTP POST to a URL of your choice with information about the order and customer. Your page can then generate licenses and deliver it to the customer.
Our own product CryptoLicensing has ready-to-use e-commerce pages for a variety of payment processors including Plimus, Shareit, Paypal, etc. When the payment processor makes the POST to these pages, a new license is generated using the CryptoLicensing API and sent to the customer.
You can customize this as per your needs.