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. Note that you will need at least RSForm!Pro revision 28.
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     [. . . .] 
Product 2 - Price $200.00: Quantity     [. . . .] 
Product 3 - Price $90.00: Quantity     [. . . .] 
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.
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.
The Additional Attributes area incorporates the following code snippets: onclick="enableQuantity('Product10','QunatityProd1');" and onchange="calculateTotal();"
- 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.
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.
document.getElementById(quantity).disabled = false;
document.getElementById(quantity).disabled = true;
var products = new Array("Product10","Product20","Product30");
var total = 0;
for(i;i < products.length;i++)
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.
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 :
In the Drop-down components add:
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 = 'firstname.lastname@example.org';
$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.'¤cy_code='.$currency_code.'&amount='.$amount.'&return='.$return); exit();
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.
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.
$email@example.com' - replace firstname.lastname@example.org 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.
- 3 ways to create a small Joomla! shopping cart with RSForm!Pro and Paypal - Part 1
- 3 ways to create a small Joomla! shopping cart with RSForm!Pro and Paypal - Part 2
- 3 ways to create a small Joomla! shopping cart with RSForm!Pro and Paypal - Part 4: payment confirmation