Internet payment services and associated ramblingsOne of the most important steps in the shareware chain is when a customer takes some of his money and gives it to me =). This is both an easy and hard thing to accomplish. Easy because there are many different services that will do all of it for you in exchange for a percentage of the moneys (usually 10-20%). Hard in that if you wanted to do it without one of these services you would have to do a lot of work. It's possible though. You can apply for a merchant account at a bank and get the ability to process your own credit card payments over the internet.
That's getting into the advanced arena though. I would say that I am still at intermediate. Possibly single-black diamond. Anyway, what follows is the tale of my experiences with getting that sweet sweet user money...
When I first launched Lux I signed up with the eSellerate registration service. It was very easy to get set up using their systems and they do everything that I wanted: taking an order, checking it for fraud, generating a serial number, sending that number to the user, supplying a library for my game to validate the serial number, and (huzzah) dumping some money into my bank account once a month. So far so good.
After a while of doing this I thought it would be a good idea to add the ability to take Paypal payments. Paypal is an internet-only way of transferring money between people with email accounts. In effect it acts as a bank, but doesn't get regulated as one. Lots of people on the net have a paypal account with some money in it. It's much easier to just spend this money on something then go to the hassle of getting it transferred into your real-world bank account. So the ability to accept paypal money is good to have, since people are freer with their paypal money then they would otherwise be. Paypal is also very cheap, with rates ranging from 0-5% depending on the type of account and other stuff.
So I set myself up with a paypal account, which was pretty easy, and added it as a payment option on my site. Eventually I was cajoled into upgrading this account into a 'Business' account. This adds the ability to accept paypal money that was funded from a credit card. People kept sending me credit-card funded paypal payments, so it was either reject them or upgrade my account. A business account also means that paypal takes something like 3-5% off of payments. This is worse then the 0% for personal accounts, but it's still much better then the 10-15% the eSellerate charges. And I am using it for a business after all, so a business account seems apt.
Anyway, paypal is not a full-service registration company like eSellerate is. So I have had to manually go into my eSellerate control panel, generate a serial number and send it off for each paypal payment that I received. This doesn't take long, but it effectively kills off the fully-automated process that I had going with eSellerate. I could no longer go on a tropical vacation and have customers continue to receive their goodies without my intervention.
Paypal does offer something to business accounts called IPN or Instant Payment Notification. Basically they will send a message to your server whenever a payment is made. You can then have an automated process do whatever needs to be done (i.e. generate a serial and send it to the customer). So I wanted to set this up for myself. I had a problem though. I was using eSellerate's serial number generation. It was possible for me to manually use the control panel to generate keys when I wanted them, but there was no way for me to hook it up to my server automatically.
This is an example of what is known as "vendor lock-in". eSellerate have made it nice and easy to get set up using their systems, but then if you ever want to go outside the system, well ... tough luck bud. They only get a commission on sales that go through them, so it's in their interests to lock you into using their system. If I wanted to get myself free from the shackles of eSellerate I would have to get my own serial number generation/validation system.
Sidenote: eSellerate starts out taking 10% of each sale. This continues until you hit $15,000 US of sales in a 12 month period. Once you hit that level the rate jumps up to 15%, after which it very slowly goes down again. I surpassed that level a little while ago, so eSellerate is taking a much bigger % then paypal would.
So I bit the bullet and decided to implement my own serial number scheme. I do have a solid math/CS background so it wasn't that hard, but it took some work. An interesting tidbit of knowledge (because this entry isn't long enough yet) is that I implemented the generator using PHP, the validator using plain old C, and am calling it from my application written in Java. The validator was first written using C++ and then ported back to plain-jane C because the C++ executable was ~300k in size while the corresponding C one was only 16k. Huzzah for multi-language projects and for McGill forcing me to take a course on C!
Anyway, Lux now includes all the needed goodies to use my own homegrown serial number system. I got some good advice from past discussions in the Association of Shareware Professionals newsgroups, so hopefully it will be cracker resistant. Tonight I finished setting up the paypal IPN system and set it to be live.
The biggest benefit of all this is that it gives me a totally homegrown system that can be used with any and all payment processors that exist. There are some other registration services like eSellerate that provide "full-service" functionality, but then there are also some other bare bones low-fee payment services that exist as well. It may even be worth my while to go to the efforts of getting a real merchant account. This is as close to the money as possible and offers the lowest fees of them all. I would still have to look into fraud detection and some other stuff, so I have no plans to do this right now. Maybe in time for my next game's release though.
Phew. I suppose I am done. Congrats to you for reading the whole thing =).
Commenting is currently off. You can email the author.
Written by dustin
Friends of Vorg