Unfortunately, the username and password you have entered do not match!

Registration

Unfortunately, this username is already taken!

Unfortunately, this e-mail address is already used!

Please retype the verification code.

All fields are required

17 May 2010

3 ways to create a small Joomla! shopping cart with RSForm!Pro and PayPal - Part 3

Posted by. Mihaela This article was posted in RSForm!Pro Tagged with joomla extensions , forms , PayPal , shopping cart
HomePrintE-mail

In the last part of this article we'll show you how to custRSForm!Pro PayPal pluginomize, using an example, the Joomla! forms created with RSForm!Pro,so you can build a small shopping cart.

The example is available on the www.joomla-form.com website and you can download for free. Notice that you must have RSForm!Pro rev. 28 in order to work.

To install the example, in the backend panel, head to Components -> RSForm!Pro ->Backup/Restore. After the form restore, you will find the Custom PayPal example in the Manage Forms tab.

Download RSForm!Pro custom PayPal example

Custom script

You can use custom scripts with your RSForm!Pro forms to extend the component functionality: you can specify product quantity, automatically calculate the total amount, auto fill the form fields, add a shipping cost and handling fee, etc.

Specifying products quantity:

We will modify the custom script available on the forum to automatically calculate the total amount of the selected products and passe it further to the PayPal page.

The form includes 3 products with different prices. For each product, the customer can select the desired quantity from a drop-down box. The form can be easily extended to a higher number of products. (when you add more products don't forget to change the Form Layout).

e.g. Product 1 - Price $100.00: Quantity [0] [1] [2] [3] [. . . .] [10]
Product 2 - Price $200.00: Quantity [0] [1] [2] [3] [. . . .] [10]
Product 3 - Price $90.00: Quantity [0] [1] [2] [3] [. . . .] [10]

To further demonstrate the capabilities of RSForm!Pro, we have added a Javascript function that will enable the quantity field when a product is checked. All scripts and functions will be described in detail further below.

Frontend preview:

Custom Joomla! PayPal created with RSForm!Pro

The Total field will automatically calculate the amount based on the user's selection:

($100 x 3)+($90 x 5)=$750

After submission, the customer will be redirected to the PayPal page.

Backend preview:

RSForm!Pro Manage forms tab- Joomla! backend view



Steps to create the above Paypal form:

1. Add products, prices and quantities.

We have created 3 Checkbox Groups to add the products along with their prices, and 3 Dropdown Components for specifying the quantity.

alt The PayPal cutom form created with RSForm!Pro - Joomla! backend view

If you want to learn how to create Checkbox Groups and Drop-down components, read the following articles from documentation: Components - Checkbox group and Components - drop-down.

The Additional Attributes area incorporates the following code snippets: onclick="enableQuantity('Product10','QunatityProd1');" and onchange="calculateTotal();"

Explanations:

  • The format of the Items area (100|Product 1 - Price $100) is designed to separate the value from the label, thus the Product 1 - Price $100 will be displayed in the front-end, but if selected, the price (100) will be stored.
  • onclick="enableQuantity('Product10','QuantityProd1');" : onclick is the javascript trigger type. Basically this implies that every time you click on the checkbox the enableQuantity function will run. Product10 and QuantityProd1 are both parameter values. We used this method (of passing parameters to the function) so we do not have to add a Javascript function for each checkbox group or perform unnecessary calculations. Though the checkbox group is named Product, you can see that we actually use Product10 (notice the extra 0). This is because the first checkbox element has a 0 appended. If we would have used a second one, it would have been Product11 and so on. QuantityProd1 is the name of the quantity drop-down that will be associated with the product checkbox.
  • onchange="calculateTotal();": as onclick, onchange is also a Javascript trigger. Whenever the selected value of the drop-down element changes, the function in question will be triggered (in this case calculateTotal()).

2. Modify form layout.

After all the fields have been added, you will have to go to the Form Layout tab, and uncheck the Auto-generate layout checkbox. This will allow you to edit the actual form layout. It is to be noted that if you add a field after this has been unchecked the layout code will not be automatically updated.

At the beginning of the already existing code you will have to add the following Javascripts (along with the Javascript tags):

function enableQuantity(prod,quantity)
{
if(document.getElementById(prod).checked)
document.getElementById(quantity).disabled = false;

else
document.getElementById(quantity).disabled = true;
calculateTotal();
}

function calculateTotal()
{
var products = new Array("Product10","Product20","Product30");
var i=0;
var total = 0;
for(i;iif(document.getElementById(products[i]).checked)
total = total + parseInt(document.getElementById(products[i]).value) * parseInt(document.getElementById('QuantityProd'+(i+1)).value);

document.getElementById('Total').value = total;
}

The enableQuantity function will enable the quantity drop-down if you have checked a product checkbox. This has been added so you can't select a quantity if you don't have selected a product first.

The calculateTotal function does what the name states - it calculates the total for the selected products and quantity. In terms of functionality, it verifies what products have been checked, gets the quantity and updates the value of the total field.

At the end of the code, add the following Javascript to trigger the enableQuantity function. This will ensure that although the form validation might provide an error, the quantity of the checked products will remain enabled:

enableQuantity('Product10','QuantityProd1');
enableQuantity('Product20','QuantityProd2');
enableQuantity('Product30','QuantityProd3');

3.Add additional attributes to checkbox and drop-downs

After modifying the form layout, go back to the Components tab and add the following Additional Attributes:

In the Checkbox Groups add :

onclick="enableQuantity('Product10','QuantityProd1');"

In the Drop-down components add:

onchange="calculateTotal();"

4. Add the custom script in the Scripts tab

Now, that all the calculation and aesthetics part is over it is time to move on to the actual PayPal part. In order to redirect to PayPal after the form is submitted you will have to place the following script in the Scripts called after form process area:

if($_POST['form']['Total'] != '0')
{
$business = 'me@mybusiness.com';
$item_name = 'Products';
$currency_code = 'USD';
$amount = $_POST['form']['Total'];
$return = 'http://your_site.com';
header('Location: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business='.$business.'&item_name='.$item_name.'&currency_code='.$currency_code.'&amount='.$amount.'&return='.$return); exit();
}

alt

The custom script must be added in the "Script called after form has been processed ".
(Components -> RSForm!Pro -> Manage forms -> Select the PayPal form -> Scripts -> Script called after form has been processed ).

You will find a detailed explanation of the "Script called after form has been processed" section in the article Custom PHP code from documentation.


Explanations:

if($_POST['form']['Total'] != '0') : This basically verifies if the value of the total field is not "0". If it is 0 then there is no point to redirect to PayPal to complete the payment, and the form will carry out its normal routine. If it is different from "0" then set the PayPal parameters and redirect to PayPal.

$business='me@mybusiness.com' - replace me@mybusiness.com email with your PayPal seller account

$item_name='Products' - the product name that you intend to sell trough PayPal

$currency_code='USD' - you can change this value according to the PayPal currency codes

$amount=$_POST['form']['Total'] - grabs the calculated total value. This value will be passed to PayPal.

$return='http://your_site.com' - replace http://your_site.com with the website address where you want to redirect the customers after purchasing.



The parameters that we used are for demo purpose only. You should use the details from your PayPal account. Additional parameters can be used in the same manner. Further details on these can be seen on the PayPal documentation page.

If you want an alternative to custom scripting, you can use the RSForm!Pro PayPal plugin that we have discussed in the first 2 parts of this article: PayPal form with a Single Product field and PayPal form with Multiple Products fields, although it won't be as much as flexible as the custom script is.

If you have further questions about this script or about integrating RSForm!Pro with PayPal, you can ask our support department or simply, leave them in comments.

Related articles:



Gravatar
Pablo Andr (01.07.2010 (14:15:09))
Problems with Total Yes No Hey guys, first of all I want to thank you for this product, is very useful.

Well, I'm trying to enable a customized form in which i can calculate the total of the shopping, but i don't want to submit my form to paypal.
I've made my form, but i can't display the total..I don't know if it is just a text field with some extra attribute or if it's the paypal total option...

Thanks!!


Quote
Gravatar
Alexandru Plapana (21.07.2010 (04:23:17))
Yes No Hello,

This example is mostly oriented towards PayPal, maybe this will help you:

http://www.joomla-form.com/form-examples/form-scripts/12-calculation-examples

Quote
Gravatar
Alastair Coleman (18.09.2010 (01:55:52))
Recuring Billing 1 It would be the best thing ever if you could make the form let users sign up for recurring billing.
Is there any way to do this?
Quote
http://www.10photos.com.au
Gravatar
Thomas Harrison (21.09.2010 (07:30:02))
Quantity as Textboxes Yes No Could you show how to use this with Quantity expressed as Textbox not Dropdowns? I have products that can be ordered up to 350 pieces per item.

Thank You.
Quote
http://www.carbonecon.com
Gravatar
Alexandru Plapana (23.09.2010 (07:08:12))
@Thomas, @Alastair Yes No Hello,

We are actually preparing a new blog post that will answer both of your questions.
Quote
rsjoomla.com
Gravatar
Rodrigo (11.11.2010 (11:24:09))
Having a fixed-required product and custom extra Yes No Hi, i would like to implement this form for an "additional donation amount".

We have a product that has a fixed, required value of X dollars. However we want to take an additional, not necessarily required donation using this boxes and or a box where they could enter their own amount.
We were using the Paypal plugin, but cant use both single product (original setup) and multiple products at the same time.
What could be the best way to have the single product plus the additional donation?
Quote
Gravatar
Alexandru Plapana (12.11.2010 (02:05:21))
@Rodrigo Yes No It would actually be best to this custom scripting example. You can simply add a message where you state the value of the fixed product, and simply add it to the amount variable. For example:

$amount = floatVal($_POST ['form']['Total']) 40;

Quote
rsjoomla.com
Gravatar
Jennifer Godin (06.01.2011 (11:31:29))
Yes No is there a tutorial for adding a paypal field that the user can enter there own amount (like for donations)?

Thanks for your help!
Quote
Gravatar
Alexandru Plapana (07.01.2011 (01:44:20))
@Jennifer Yes No Quote :
is there a tutorial for adding a paypal field that the user can enter there own amount (like for donations)?


You can simply adapt this one or the one posted on the http://www.rsjoomla.com/customer-support/forum/37-rsform-pro/4877-rsform-pro-paypal-integration.html. The only difference is that you will have to grab the amount like this:
$_POST['form']['name_of_field']
Quote
rsjoomla.com
Gravatar
Chris (24.02.2011 (11:15:55))
Multiple items Issue Yes No Hello I have to design a website with a paypal payment system.

I want to be able to produce buttons for about 100 items (each with about 10-20 different sizes each which are different prices) items as quickly as possible.

Product 1 for example has 20 sizes and each size is a different price. I want to create it so that the customer can select a size from product one but also a quantity, is it possible to do this? I was able to create a button with product 1 (10 options) and i can check any options I want but the quantity dropdown is global.

I need to know i can do this before purchasing.

Thanks

Chris

Quote

Page 1 of 4

1000 Characters left

Antispam Refresh image Case sensitive

Contact us
Feedback