How to sell serial license keys for digital goods using PHP-KeyCodes

php license pin codesIf you sell digital products online such as software programs, games, phone PIN numbers and so on, then PHP-KeyCodes can be a useful application to install on your web site. It requires a web server running PHP and access to a MySQL database. It is easy to install with a one page install script and upload of files to your server.

PHP-KeyCodes is not just limited to distributing software license keys, you can also be use it to distribute any kind of unique key code to a customer. This could be pin numbers for mobile phone applications, TV activation systems and serial key codes for any system where there is a list of pre-generated license key codes.

If you have a requirement to sell license codes on line then this is a better method than using someone else’s web site as you do not have to pay them any fees.

Using a license system for your software program helps to prevent fraud and allows you to send free trial versions to customers. The key codes are loaded into the PHP-KeyCodes web site administration interface so that they are automatically sent whenever there is a purchase using PayPal.

The system will also send you an email when it is getting low on license keys.

The usual way to use PHP-KeyCodes is to enter the codes into the admin area so that the next code in the list is taken and sent when there is a purchase.

The PHP script has been written in such a way as to allow you to modify the program to cover other situations. So for example you may have codes in a text file that you want to upload to the server. You could modify the code to use such a text file. You could even have code that generates a key code depending on the user name or email address.

If you have particular requirements, then we would be willing to customize the code for you.

For more information: PHP-KeyCodes

Setting up email for use with PHP applications

If your web application requires emails to be sent out from your web server for such things as sending download information, login information and so on, then you will need to set up some email accounts on your hosting system. This is particularly true for an application such as PHP-eSeller where it is important for the emails to be sent out correctly and reach their destination without ending up in the spam folder.

Log into your hosting account where you set up your databases and administer your web hosting. Normally this will be using cpanel which will look something like this:

You should see a section identified as “Mail”.

You need to set up an email account, so click on the link for “Email accounts” which will take you to a display where you create an account with a user name and password for your domain.

Enter in an email account name. For my applications I normally create an admin account so this will become You also need to enter in a password which you should should keep a record of.

Now that you have created your account, your hosting will provide you with a link to a web mail client where you can login and then see your emails. You may want to send a test email to your account from hotmail or yahoo just to see how it works.

Now that you have an email account set up, you can use this in your PHP applications.

There is one other step that you may want to do, and that is to redirect this email to one of your other accounts. This will mean that when someone emails, it will appear in your hotmail or yahoo account.

To do this, in cpanel under the “Mail” section, click on the link called “Forwarders”. Click on the button called “Add Forwarders” which will take you a page that will look something like:

How to stop the deduction by Amazon of 30% tax for non-US residence for book sales

If you write and sell eBooks on Kindle and CreateSpace, and you are not a residence of the US, any sells made in the US have 30% tax deducted at source.  On top of that you will have to pay tax to your country of residence as you would for any untaxed income.

However there is an agreement between the US and other countries that enables you to have 0% deductions.  You still have to declare the earnings to your own tax office but you do save that 30% which can be quite significant.

To have 0% deducted is now fairly straight forward.  The process has improved quite considerably and you should be able to sort it out in half an hour and not have to phone the US tax office to get a tax number reference as you had to previously.

Log into your KDP Kindle account where you books are listed, click on the Account link.  You may have to log in again at this point.  The page that is displayed shows account and tax information.  Click on the View/Provide Tax Information button.  Now click on the Tax Interview button which will then take you to a series of questions.

Go through the questions.  I choose ‘individual’ as the type of organization which is probably what most people will do.  The important question is your tax reference – select that you are not a US resident and then enter in your NI (National Insurance number) or UTR (Unique Tax Reference), or the equivalent tax reference that is used in your country, then go through the rest of the questions.

A form will display (W8-Form) at the end which should show your tax deduction is 0%.  If you don’t see 0%, you must have selected something wrong, so cancel out and start again.

Take a screen shot of the form for record purposes.

You now have to sign the form electronically.

You do need to keep a record of sales as you may have to pass that value on to your tax office.  Amazon will send either a physical tax report or an email to you which you should retain if the tax office wants proof.

HMRC is the UK tax office and I have found them to be quite helpful if you are just declaring a small amount of un-taxed income (less than £2,500) when you are in full employment.  You don’t have to do a full tax return and they will just modify your tax code over the phone.  Obviously if there is much more untaxed income such as capital gains or company payments or you are self-employed then you will have to do a tax return, but many people are just writing a book to earn a small amount of cash while they are in full employment.

Top 5 Raspberry Pi Projects

Not in any particular order, here are my favorite Raspberry 5 projects.

(1) Install WordPress on a Raspberry Pi

Project – Pi WebServer

(2) Use a Raspberry Pi as a Network Storage Device

(3) Create a VPN on a Raspberry Pi

Building A Raspberry Pi VPN Part One: How And Why To Build A Server

(4) Using a Raspberry Pi as a media server


(5) Use a Raspberry Pi as a Wireless Access Point

Adding a virtual directory (folder) to Apache XAMPP or similar application

Suppose that you have installed XAMPP at c:\xampp This will mean you place your web files at C:\xampp\htdocs

Now you want to start developing your project, so what you could do is copy all your files to the C:\xampp\htdocs or create another folder
such as C:\xampp\htdocs\myproject

However, this is not always convenient so how do you create an alias, leaving your files where they are.

First, open the httpd.conf file, it’s located in this directory:
C:\Program Files\xampp\apache\conf

You can access this from the XAMPP control panel by clicking the “config” button.

Add these lines on the bottom of the httpd.conf file:

Alias /sources “c:/myproject”

Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted

Note that in we must use “Forward Slash” or / in the folder definition

Restart XAMPP or stop and start Apache from the control panel.

Open your web browser and test it by go to http://localhost/myproject

Update to PayPal IPN

In Sept 2016 PayPal are changing their requirement for posting IPN messages back to PayPal for verification.

They are making the post url as https. My current versions of scripts already post to https so there should not be any change required, however, they also suggest that should be used in the future rather than



PayPal upgrade to Certificate which may affect IPN based programs and scripts

There appears to be quite a bit of chat about the changes that PayPal are making to their system to allow SHA-256 during September 2015. This is to do with improving the SSL (Secure Socket Layer) security and is used over https systems.

A part of their message is:

“PayPal is upgrading the certificate for to SHA-256. This endpoint is also used by merchants using the Instant Payment Notification (IPN) product.”

PayPal IPN can be used over non SSL, that is using http – that is why many developers like it because it does not need SSL certificates on their web servers which can be expensive especially if you are a small trader. You don’t really want to have to purchase certificates if you are selling a small number of items.

So the kind of systems that are affected are those that use https and which use PayPal API to provide secure connections from your server to the PayPal server.

IPN over plain http will be supported as it currently is, so you will still be able to supply a plain http link to your IPN listener script. However if your IPN listener script is sSL/TLS enabled it will have to be SHA-256 complaint and your listening server will need to be able to accept SHA-256 certificates.

So do the changes affect the scripts on that use IPN? Well the answer to that is NO, it does not affect the scripts at all.

PHP-eSeller, PHP-SecureArea and PHP-KeyCodes use a simple method of handshake between PayPal to verify that the transaction has taken place and hence no modifications are need to the applications.

Word Large Documents with different header / footer

It is not immediately obvious how to do different header / footer for different Chapters in a long document.

The main control of this is by section breaks.  For each section that requires a different header / footer you use a new section break.

In word 2013, go to “PAGE LAYOUT” and select “Breaks”.  In the drop down list select Section Breaks -> Next Page
This inserts a section break and starts a new section on the next page.  Other versions of word will be similar.

Create your header in the normal way by double clicking on the head of the Word document.

Once you have your section breaks set up, the next important step is to control the linking between headers in different sections.  To do this you go into editing of the header by double clicking on it.  In the menu bar you should see “Link to Previous”.  If you are in the second section of a document, you click on this to unlink the header of the second section.  You can then edit the header in the second section and that will allow you to have a different header in that second section.

You can now do other clever things such as different header / footer for odd / even pages and that is controlled from the header menu bar by ticking the appropriate tick boxes.

Formatting for Kindle eBooks – Hints, Tips and Tricks

There are a number of articles on formatting an e-book for Kindle so I thought I would contribute my thoughts and ideas so far.

The most common way to create a Kindle e-book is to use Microsoft Word because it includes easy editing features, table of content generation, spell checker, control of style sheets and so on.

You then do a “save as” to HTML from Word to create an HTML document and then apply any adjustments in the HTML code itself. You can create a book from HTML but it would require much more editing. Amazon then takes the HTML document, and converts it to the required format for Kindle devices.

So the principles are:

  • Create a separate Word file for each chapter of your book.
  • Format your document using styles.
  • Create a combined master Word file of all your chapters.
  • Expand the master file into one Word document.
  • Do a Ctrl-A to select all the text and then copy all the text into a new blank Word document.
  • Do a Save As to Filtered HTML so that you end up with one large HTML file with the images in a separate folder.
  • Do some final adjustments and tweaks to the HTML by hand.
  • Preview your HTML in an Amazon previewer application.
  • Zip up the HTML plus the images and then upload to Amazon.
  • Create a cover image and submit it to Amazon.

Word Template
I have included my template for Word which has been quite successful so far. However, I still find I have to do some changes to the HTML by hand.

Click here to download my zip file which includes a Microsoft Word template system.

Word format for Kindle

Font Face
Font face can be whatever you want as Kindle will uses its own default font and the user can define their own font face.

However, you usually select Caliba 11pt

Tabs don’t transpose all that well into HTML so it is best to remove any tabs in the Word text. This can be done by searching for ^t

Word formatted bullets do not work correctly because they use tabs and have images which don’t seem to convert correctly into HTML I would suggest to use normal unformatted paragraphs but with the * character to represent the bullet.

ou can use tables in latest Amazon Kindles and you can colour the rows. You have to be careful if the text does not wrap in which case you have to force a line to wrap.

Images should be inserted in JPEG (or .jpeg) format with centre alignment (don’t copy and paste from another source).

Select “Insert” > “Picture” >

It is recommended that images are saved at 300 dpi at about 640 pixels wide. The image should not be greater than 127kbyte (63kbyte on older Kindles) so use 300 dpi unless the image file size is too big.

Expanding the sub documents
When you expand the Word documents into one single Word document, do a “copy all” and paste into a new word document to copy the text over. I have found this to be the best method as it removes any dependencies to other sub document files that you may have.

Save as HTML
Once you have completed the formatting in Word and have one combined word document with index pages, preface and so on, you save it as “HTML Word Filtered” and then you should test it in a Kindle viewer and with a web browser.

File -> Save as…

select the location where you want to save the file, and in the “Save as type” drop down list, select

“Web Page, Filtered (*.htm, *.html)”

This will create the HTML page and a folder with all the required images. You should then go through the HTML code and make changes manually.

Editing the HTML
I have found issues with images which I can only seem to fix manually in the HTML code by changing the images to




so that the image scales to fit the width of the page. Note the align=”center” which forces the text to go to the bottom of the image instead of wrapping around it.

When you upload the document to Amazon it converts it so that every first line of each paragraph has an automatic indent.

This seems to be because an assumption by Amazon that all first lines should have an indent and all paragraphs should be justified. For some books this is fine, but personally I don’t like first line indents or justified text.

To overcome this, edit the styles for various p tags with the addition of

text-indent: 0px;

to stop tab indexing.

I have now modified all my Word styles with a first line indent of 0.01.  This is for the normal style.  This has the effect of overriding the Amazon indent style so you dont have to do anything about this.

If you want to set this up yourself, go to the “normal” style, right click on it and and select Modify. Then select Format.. button and then Paragraph… Then in the Special drop down list select First Line and in the amount, enter 0.01cm.

You may want to go into the HTML and search for justify in the HTML code and remove those entries.

Also Amazon displays text as justified so I then edit the HTML styles by hand to add in


on all paragraph tags. This will cause the text not to be left formatted without justification.

Uploading to Amazon
Once you have your complete HTML document with any images, you should then upload it to Amazon. When you converted to from Word to HTML it would have created a folder of images as well as the HTML file itself. Zip all the files up including the image folder and upload the single zip file. Amazon will unzip and convert and publish the HTML document.

The book Cover image

Kindle has an article on creating a book cover image at:

Essentially this says that there are two types of files for cover images:

JPEG, or .jpeg
TIFF, or .tif(f)

Do not optimise the images as the Amazon process applies its own compression to images when displaying them on its website.
The dimensions of the image should have an ideal height/width ratio of 1.6 so this means:

• A minimum of 625 pixels on the shortest side and 1000 pixels on the longest side
• For best quality, your image would be 1563 pixels on the shortest side and 2500 pixels on the longest side

Colour images use the standard web RGB (red, green, blue) system which is native to the web and screen displays.
You should use colour images whenever possible and relevant. The Kindle reading device has a black and white display other devices such as the PC and iPhone use colour fonts and images.

Borders for White Cover Art
Cover art with white or very light backgrounds can seem to disappear against the white background.
Adding a very narrow (3-4 pixel) border in medium gray will define the boundaries of the cover.
Some tips for marketing ebooks

The important aspect of a book is the quality. The better the quality the more it will sell. Quality can be many things such as consistency of writing style, formatting of tables, good quality images and so on.
Here are a few tips that may help to market your eBooks:
1 Design a cover that jumps out at you from the amazon store displays. It should look good at full size and as a thumbnail. Make sure that the thumbnail image is readable and recognisable. If you cannot create a good quality cover, then employ a design service to do it for you.
2. Carefully edit and proofread for spelling, grammar and style.
3. Amazon requires a description of the book so make sure that this is interesting and informative.
4. Fill in your author profile at Amazon Author Profile to give information about yourself to your potential readers. Combine this with a blog to keep readers informed about changes to your book.
5. Promote your book online using the standard social networks such as Facebook and Twitter. You can also create a web site for you book providing information and links, promote your book on other sites, message boards and other communities.
6. Create a promotional video and book trailer and upload it to your web site, blog or to your Amazon Author Profile page.
7. Create a physical version of your book using CreateSpace which is a print on demand system.
8. Join the Amazon Associates program to earn an additional 4% on each sale. You can add links to your web pages and gain an additional 4% on each sale when a customer clicks through.