I'm the developer of the http://tny.im
URL shortener, and I've gradually been adding Bitcoin-related features to it, starting with Bitcoin address shortening and now also a payment gateway service.
Today, I'm opening the "Internet toll" service (not to be confused with "Internet troll service"
) to the public for a final beta testing phase.What's the "Internet toll"?
Basically it is a set of features that allow you to charge people for visiting your short links, and obviously get that money back later. When clicking on a short link with the payment option enabled, visitors are asked for a Bitcoin payment before they get to know and visit the long URL of the short link.
I have took special care in making sure the long URL is not available to anyone who didn't pay - however, nothing stops users from sharing the long URL with others once they pay for it. That's why this system works best as a payment gateway with unique callback URLs - I'll explain later.
Even though the system was designed for smaller amounts of Bitcoin, being adequate for micro-payments, it works with virtually any amount.
Here's an example of a short link you must pay to visit: http://tny.im/payHow do I set up a short link with these features enabled?
On the tny.im homepage, or through the API, shorten a link. If you do it through the API, you can set the "price" and "payoutaddr" parameters directly.
If you use the website, you must create a link first, save the passcode
and then edit it in order to set these options.
More information at http://tny.im/toll.phpWhat is this good for?
When I first talked about this on the social network CoinConnect, an user suggested this was good for selling files. I'm sure there are plenty of other uses. It can be used for charging for the access to any URL, be it a file, a page or a video. It gets much more interesting when you use it as a payment gateway and in conjunction with the "hit limit" setting.What about the payment gateway?
You can use tny.im as a Bitcoin payment gateway - without the need to run a Bitcoin client on your server or even having a dedicated wallet for it. You only need to have a Bitcoin address.
Have your system shorten your callback URL using the API. Set the "price" (how much users pay, in Satoshi) and the "payoutaddr" (address to where what you earn will be paid). Also, set the "hitlimit" to 1 - this way, the link can only be paid for and visited once.
Then point users to the short URL returned by the API. When the user pays, it will be redirected to the URL you shortened, in this case, the callback URL.
That callback URL should be unique for each payment, and that's something you must implement on your side. When the user visits the callback URL, you'll know he/she has paid.
Even if people share the long URL with others, it will have no effect because the token (or whatever unique it may have) was used (and marked as so on your database) already. That's why it is important to have an unique long URL.
Even if this seems complicated, it isn't: after you automate the process, you can make it work as any payment gateway.Payout and fees
You get paid once the earnings for your payout address hit the value of 0.05 BTC. The only fees I currently take are the miner fees, which are usually 0.005 BTC per transaction. The fee will be subtracted from your payout; this means that is you earn 0.07 BTC from users' payments, you'll receive 0.065 BTC.
The earnings are counted on a per-address basis, not on a per-link basis. This means that if you have 50 links with the same payout address, you'll get paid once the sum of the earnings on all these links is >= 0.05 BTC.
Currently, payouts are issued manually by me and take usually (much) less than 12 hours, but they can extend for up to 48 hours. Later, I'll implement an automated system to do payouts for me.
Don't hesitate to ask any questions or give suggestions. I know it's hard for you to trust me, since I have zero reputation on this forum. I suggest you only use this system for small BTC amounts, because I have no reputation and because the system is still Beta (even though I tested it a lot, I can never test all the possible conditions).