Nitish Nitish - 5 months ago 40
PHP Question

How to send the total amount to be paid to paypal

I am trying to send the total amount to be paid by the customer with

<input type="hidden" name="amount" value="{$total}">
holds the total amount(smarty) but when I click buy now button of paypal,it shows amount to be paid as 0.00 . Whats wrong ?My code is :

Total :

<form action="" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="SVXVEBF9CH4YU">

<input type="hidden" name="amount" value="{$total}">

<input type="image" src="" border="0" name="submit" alt="PayPal — The safer, easier way to pay online.">
<img alt="" border="0" src="" width="1" height="1">

I am testing it in
,is this creating that problem ?


The reason you can't override the amount dynamically, is because you have a so-called 'PayPal hosted button'.
With a hosted button, the amount is stored on PayPal's side and can't be overwritten with the 'amount' variable. You'll either want to use a non-hosted button (as Peter Szymkowski is using in his answer), or use the BMUpdateButton API call to dynamically update the button's amount.

An example request for BMUpdateButton would look as follows:

USER=Your API username
PWD=Your API password
SIGNATURE=Your API signature
HOSTEDUBTTONID=The value of <input type="hidden" name="hosted_button_id" value="">
BUTTONTYPE=The type of button. E.g. BUYNOW
BUTTONCODE=The type of code you want to get back. E.g. HOSTED
L_BUTTONVAR0=amount=The new amount with a period as separator
L_BUTTONVAR1=item_name=Optional: a new item name if you wish

Similary, you could also use the BMCreateButton API to create a new button, or use the BMButtonSearch API to search through a list of all your stored hosted buttons (to find the hosted_button_id of your button automatically, for example)

The reason to use a hosted button is because it's more secure. A non-hosted, unencrypted button would basically leave the amounts open to manipulation. Fraudulent transactions waiting to happen.