New version of PHP-eSeller PHP Shopping Cart Digital Goods

PHP-eSeller has been updated to include fully responsive displays on the admin and public shopping cart displays so that they work well on all types of devices, mobile, tablets and desktop.

PHP-eSeller

Some of the cart displays now use the JQuery Datatable system that can be easily modified to change formatting and add in other options.

The JQuery Datatable plugin is well documented, is very extensive and has many features and functions.

Other shopping cart displays are based on the latest version of Twitter Bootstrap which is a framework to ensure that displays work well on different device types. Bootstrap is a well known framework which can be easily changed and modified to work with your particular layout. It is also very well documented with many forum sites.

PHP-eSeller has been completely re-written and is fully compatible with PHP 7 servers.

 

Twitter Bootstrap PHP Cart System

Live Demo

 

Datatable Cart System with HTML Audio Preview and no formatting

Live Demo

 

Datatable Cart System including Twitter Bootstrap

Live Demo

Sell software license keys and pin numbers with a WordPress Plugin

PHP application to sell key codesWordPress PHP-KeyCodes is a WordPress Plugin to sell software license keys, product keys, serial keys, mobile phone codes and any other pre-generated license codes.

The plugin is available from here:

WordPress PHP-KeyCodes

It is similar to the stand alone application PHP-KeyCodes which is described on:

https://www.withinweb.com/phpkeycodes/

If you are a software developer, then using license keys is a way to ensure that your products are safe and secure.  You use this application to automatically distribute the codes after payment from PayPal.

The pin numbers are listed in the database one entry per line.  When a purchase is made, PayPal sends an IPN notification to the plugin which then extracts the first pin number, sends it to the purchaser and then removes that pin number from the list.

The email sent to the purchaser contains the pin number or key code, and you will receive a copy of the email.

The sales history listing also identifies which pin number has been sold to the purchaser.

A local test system is included which allows you to test without connecting to PayPal.

Setting a value in the Lower Limit entry box causes an email to be sent to the administrator when the minimum number of key codes has been reached.

The system has a high level of security in that the license key code will not be sent out until the correct PayPal return code is received with the correct purchase values.  The system checks that the database value is the same as the amount that has been spent, and the currency code is the correct value.  This ensures that any alteration to the button code will not work.

The html code for the PayPal buy now buttons can be easily placed on your WordPress pages.

Installation

The installation into WordPress is the same as for any plugin as is the procedure for upgrades which ensures the plugin is kept up to date.

WordPress PHP-KeyCodes

A Shopping Cart using PHP Sessions

This posts illustrates a relatively simple shopping cart using PHP sessions to store cart details, quantities and total cart amount.  The cart has an add to cart button , remove from cart button and displays the total value of the cart.

This post is taken from part of the book PHP Tutorials: Programming with PHP and MySQL which is available as a paper back printed version or as a downloadable Kindle version. Click here for paper back version.

The following listing is the complete PHP shopping cart:

<?php session_start();
#cart.php - A simple shopping cart with add to cart, and remove links
 //---------------------------
 //initialise sessions

//Define the products and cost
$products = array("product A", "product B", "product C");
$amounts = array("19.99", "10.99", "2.99");

 if ( !isset($_SESSION["total"]) ) {

   $_SESSION["total"] = 0;
   for ($i=0; $i< count($products); $i++) {
    $_SESSION["qty"][$i] = 0;
   $_SESSION["amounts"][$i] = 0;
  }
 }

 //---------------------------
 //Reset
 if ( isset($_GET['reset']) )
 {
 if ($_GET["reset"] == 'true')
   {
   unset($_SESSION["qty"]); //The quantity for each product
   unset($_SESSION["amounts"]); //The amount from each product
   unset($_SESSION["total"]); //The total cost
   unset($_SESSION["cart"]); //Which item has been chosen
   }
 }

 //---------------------------
 //Add
 if ( isset($_GET["add"]) )
   {
   $i = $_GET["add"];
   $qty = $_SESSION["qty"][$i] + 1;
   $_SESSION["amounts"][$i] = $amounts[$i] * $qty;
   $_SESSION["cart"][$i] = $i;
   $_SESSION["qty"][$i] = $qty;
 }

  //---------------------------
  //Delete
  if ( isset($_GET["delete"]) )
   {
   $i = $_GET["delete"];
   $qty = $_SESSION["qty"][$i];
   $qty--;
   $_SESSION["qty"][$i] = $qty;
   //remove item if quantity is zero
   if ($qty == 0) {
    $_SESSION["amounts"][$i] = 0;
    unset($_SESSION["cart"][$i]);
  }
 else
  {
   $_SESSION["amounts"][$i] = $amounts[$i] * $qty;
  }
 }
 ?>
 <h2>List of All Products</h2>
 <table>
   <tr>
   <th>Product</th>
   <th width="10px">&nbsp;</th>
   <th>Amount</th>
   <th width="10px">&nbsp;</th>
   <th>Action</th>
   </tr>
 <?php
 for ($i=0; $i< count($products); $i++) {
   ?>
   <tr>
   <td><?php echo($products[$i]); ?></td>
   <td width="10px">&nbsp;</td>
   <td><?php echo($amounts[$i]); ?></td>
   <td width="10px">&nbsp;</td>
   <td><a href="?add=<?php echo($i); ?>">Add to cart</a></td>
   </tr>
   <?php
 }
 ?>
 <tr>
 <td colspan="5"></td>
 </tr>
 <tr>
 <td colspan="5"><a href="?reset=true">Reset Cart</a></td>
 </tr>
 </table>
 <?php
 if ( isset($_SESSION["cart"]) ) {
 ?>
 <br/><br/><br/>
 <h2>Cart</h2>
 <table>
 <tr>
 <th>Product</th>
 <th width="10px">&nbsp;</th>
 <th>Qty</th>
 <th width="10px">&nbsp;</th>
 <th>Amount</th>
 <th width="10px">&nbsp;</th>
 <th>Action</th>
 </tr>
 <?php
 $total = 0;
 foreach ( $_SESSION["cart"] as $i ) {
 ?>
 <tr>
 <td><?php echo( $products[$_SESSION["cart"][$i]] ); ?></td>
 <td width="10px">&nbsp;</td>
 <td><?php echo( $_SESSION["qty"][$i] ); ?></td>
 <td width="10px">&nbsp;</td>
 <td><?php echo( $_SESSION["amounts"][$i] ); ?></td>
 <td width="10px">&nbsp;</td>
 <td><a href="?delete=<?php echo($i); ?>">Delete from cart</a></td>
 </tr>
 <?php
 $total = $total + $_SESSION["amounts"][$i];
 }
 $_SESSION["total"] = $total;
 ?>
 <tr>
 <td colspan="7">Total : <?php echo($total); ?></td>
 </tr>
 </table>
 <?php
 }
 ?>

The cart example uses the following sessions to maintain the state of the cart:

$_SESSION[“qty”][i] Stores the quantity for each product
$_SESSION[“amounts”][i] Stores the price from each product
$_SESSION[“cart”][i] Identifies which items have been added to the cart
$_SESSION[“total”] Stores the total cost

The sessions are actually arrays so in the case of:

$_SESSION[“qty”][i]

is the quantity for the element with number i.

Description of the PHP shopping cart code

We start by defining PHP to use sessions by:

session_start();

This has to be at the very top of the PHP page.

Next we set up our products and populate our sessions. In this example we are using a fixed array of product descriptions and amounts. You may want to do this in your application or you could read in the data into the $product and $amounts array from a database.

//---------------------------
 //initialise sessions

 //Define the products and cost
 $products = array("product A", "product B", "product C");
 $amounts = array("19.99", "10.99", "2.99");

 if ( !isset($_SESSION["total"]) ) {

  $_SESSION["total"] = 0;

  for ($i=0; $i< count($products); $i++) {
   $_SESSION["qty"][$i] = 0;
   $_SESSION["amounts"][$i] = 0;
 }
}

The following code will reset and clear the sessions when the Reset Cart link is selected.

//---------------------------
  //Reset
  if ( isset($_GET['reset']) )
   {
    if ($_GET["reset"] == 'true')
    {
     unset($_SESSION["qty"]); //The quantity for each product
     unset($_SESSION["amounts"]); //The amount from each product
     unset($_SESSION["total"]); //The total cost
     unset($_SESSION["cart"]); //Which item has been chosen
   }
}

The following code adds an item to the sessions when the ‘Add to Cart’ link is clicked:

//---------------------------
//Add
if ( isset($_GET["add"]) )
{
$i = $_GET["add"];

$qty = $_SESSION["qty"][$i] + 1;

$_SESSION["amounts"][$i] = $amounts[$i] * $qty;
$_SESSION["cart"][$i] = $i;
$_SESSION["qty"][$i] = $qty;
}

and the following deletes an item from the cart when the ‘Delete from Cart’ link is clicked:

 //---------------------------
 //Delete
 if ( isset($_GET["delete"]) )
 {
   $i = $_GET["delete"];
   $qty = $_SESSION["qty"][$i];
   $qty--;
   $_SESSION["qty"][$i] = $qty;

 //remove item if quantity is zero
 if ($qty == 0) {
   $_SESSION["amounts"][$i] = 0;
   unset($_SESSION["cart"][$i]);
 }
 else
 {
   $_SESSION["amounts"][$i] = $amounts[$i] * $qty;
 }
 }

The rest of the code is the visual display using a table and various loops to show the product lists and the cart details together with the links.

This post is taken from part of the book PHP Tutorials: Programming with PHP and MySQL which is available as a paper back printed version or as a downloadable Kindle version. Click here for paper back version.

PHP-eSeller is a complete application that utilizes a shopping cart using PHP Sessions and is available from here:

Click here to go to PHP-eSeller

A guide to sell digital downloads online using a PHP Shopping Cart

Digital goods, electronic goods, digital products or e-goods are anything you can sell that is in a digital format.  The types of products include ebooks, software, website templates, music, videos, license codes, ringtones and pdf tutorials.  The costs of adding a digital item to a shopping system is very small so it can be a great way make a steady income.

A PHP shopping cart with add to cart buttons can be combined with selling digital downloads as used in the PHP-eSeller application.

Here are just a few of the advantages to selling digital downloads using a specially designed PHP shopping cart:

• No inventory – you have no stock levels to maintain so you have no storage problems or supply problems.
Costs are the same to sell one or thousands digital goods.
No postage costs.
• The customer will instantly receive the product using a digital download system.
• The transaction is quickly completed so you have the money in your account straight away.

Some online services specialize in selling digital goods, including invoicing, payment, and delivering the digital copy for you.  In that case, you have to pay some sort of fee to the service provider.

Alternatively you can have a PHP shopping cart on your web site that you install yourself or get a developer to install for you.

Choosing a PHP Shopping cart can be difficult, here’s some guidelines to help you get started:

1) Fees

The payment system that the shopping system uses will have some kind of transaction fees.  This will vary so check what they require and what you can afford. Selling through PayPal is often a convenient way and they use a transaction fee.

2) Integration with your website

Make sure the shopping cart can be integrated with your website.  This may be by modifying a template system or by adding buttons to your existing web pages.

3) Features

Here’s a few of the features that might be helpful:
* Automatic product download
* Have the option of no shipping
* The ability to simultaneous sell tangible goods and e-goods

4) Security

It’s important that the purchase made by the customer is secure. You should expect your customer, after purchasing your product, to receive a secure link to immediately download the purchased item. The link should expire within a certain amount of time.

5) Easy to Use

Make sure the transaction is smooth and easy for your customer, you want to make it easy so that your customer come back for more.

Here’s a great eCommerce guide from my site at:

http://withinweb.com/global/hints_tips_and_tricks/digital_files.pdf

on further concepts for digital downloads.

The product PHP-eSeller is designed to sell digital goods from your web site using a PHP shopping cart system.  PHP-eSeller has a number of carts, and displays which enable you to integrate it to an existing site.

  Click here to go to PHP-eSeller description  

New version of PHP Subscription Manager

The PHP Subscription Manager PHP-SecureArea has been updated to give administration pages that are more responsive and easier to use.

PHP-SecureArea enables you to set up a subscription manager in PHP and a demo version of the new administration pages can be seen at:

https://www.withinweb.com/phpsecureareademos/admin/index.php

The PHP membership script uses the facilities of PayPal to automatically allow customers access to secure areas of your web site after a valid payment has been received.

For full information go to:

https://www.withinweb.com/phpsecurearea/

PHP-KeyCodes now has free button facility

PHP-KeyCodes is used to sell software license key codes or pin numbers after payment from PayPal. It is a PHP script which you can purchase from the withinweb.com web site. PayPal buttons are generated by the PHP script which can be added on to your website on any page allowing you to integrate the buttons into existing web pages.

PHP=KeyCodes now has a feature that allows you to send a code to a customer without them making a payment.

The customer enters their email address and the next key code is sent.

You then have a list of customers in your database which you can extract and use for marketing purposes.

For a full description of PHP-KeyCodes refer to:

http://www.withinweb.com/phpkeycodes

Sell key codes from your web site

The advantage with PHP-KeyCodes is that you do not have to use third party companies to manage you sells.  You can purchase this PHP script and install it on your own web site so that all your key codes and license codes are always under your control.  The PHP script uses PayPal IPN to make sure that the customer does not get hold of a license code unless they have made a valid and complete purchase.

The PHP script is able to manage all situations that can occur with PayPal purchases, such as buying with an e-check.

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

http://www.withinweb.com/phpkeycodes/

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 admin@myservername.com. 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 admin@yourservername.com, 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.