change
'&L_PAYMENTREQUEST_0_AMT'.$i.'='.urlencode((float)$product['price_wt']).
to
'&L_PAYMENTREQUEST_0_AMT'.$i.'='.urlencode(number_format((float)$product['price_wt'],2)).
change
'&PAYMENTREQUEST_0_ITEMAMT='.(float)$total;
to
'&PAYMENTREQUEST_0_ITEMAMT='.number_format((float)$total,2);
change
if ($this->paypal_usa->validateOrder((int)$this->context->cart->id, (int)$order_status, (float)$result['PAYMENTINFO_0_AMT'], $this->paypal_usa->displayName, $message, array(), null, false, $customer->secure_key))
to
if ($this->paypal_usa->validateOrder((int)$this->context->cart->id, (int)$order_status, number_format((float)$result['PAYMENTINFO_0_AMT'],2), $this->paypal_usa->displayName, $message, array(), null, false, $customer->secure_key))
Sometimes line number does not match because of line-break format.
So I recommend to use search & replace function of text editors.