total of items in the cart did not match the total of all items
I keep getting this error message when trying to process my transaction with paypal:
This transaction has been completed, but the total of items in the cart did not match the total of all items.
I can't find the problem in my code. Can you please help:
<?php
if (($_SERVER["REQUEST_METHOD"] == "POST") && (isset($_SERVER["HTTP_REFERER"]) && strpos(urldecode($_SERVER["HTTP_REFERER"]), urldecode($_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"])) > 0) && isset($_POST)) {
$PP_DirectPayment_required = array();
$PP_DirectPayment_required[0] = array();
$PP_DirectPayment_required[1] = array();
$PP_DirectPayment_itemized = array();
$PP_DirectPayment_itemized[0] = array();
$PP_DirectPayment_itemized[1] = array();
$PP_DirectPayment_optional = array();
$PP_DirectPayment_optional[0] = array();
$PP_DirectPayment_optional[1] = array();
$cartIndex = 0;
$nextIndex = 0;
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "Username";
$PP_DirectPayment_required[1][$nextIndex] = "xxxxxxx";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "Password";
$PP_DirectPayment_required[1][$nextIndex] = "xxxxxxx";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "Signature";
$PP_DirectPayment_required[1][$nextIndex] = "xxxxxxx";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "PaymentAction";
$PP_DirectPayment_required[1][$nextIndex] = "Sale";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "Currency";
$PP_DirectPayment_required[1][$nextIndex] = "".$CurrencyCode ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "IPAddress";
$PP_DirectPayment_required[1][$nextIndex] = "".$_SERVER["REMOTE_ADDR"] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "CreditCardType";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['cc_type'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "CreditCardNumber";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['cc_number'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "ExpMonth";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['exp_month'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "ExpYear";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['exp_year'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "FirstName";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['first_name'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "LastName";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['last_name'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "Street1";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['address1'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "CityName";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['town_city'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "StateOrProvince";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['county'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "PostalCode";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_WAATKcustomers['post_code'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "Country";
$PP_DirectPayment_required[1][$nextIndex] = "".$row_rs_country_list['currency_code'] ."";
$nextIndex = count($PP_DirectPayment_required[0]);
$PP_DirectPayment_required[0][$nextIndex] = "UseSandbox";
$PP_DirectPayment_required[1][$nextIndex] = "true";
$PP_DirectPayment_itemized[0][0] = "OrderTotal";
$PP_DirectPayment_itemized[1][0] = "".number_format(round($GrandTotal,2), 2) ."";
$PP_DirectPayment_itemized[0][1] = "OrderDescription";
$PP_DirectPayment_itemized[1][1] = "";
while ( !$Tech8_Spares_eCart1->EOF() ) {
$nextIndex = count($PP_DirectPayment_itemized[0]);
$PP_DirectPayment_itemized[0][$nextIndex] = "Amount" . strval($cartIndex+1) . "";
$PP_DirectPayment_itemized[1][$nextIndex] = "".round($price,2) ."";
$nextIndex = count($PP_DirectPayment_itemized[0]);
$PP_DirectPayment_itemized[0][$nextIndex] = "Name" . strval($cartIndex+1) . "";
$PP_DirectPayment_itemized[1][$nextIndex] = "".$pname ."";
$nextIndex = count($PP_DirectPayment_itemized[0]);
$PP_DirectPayment_itemized[0][$nextIndex] = "Number" . strval($cartIndex+1) . "";
$PP_DirectPayment_itemized[1][$nextIndex] = "".$product_id ."";
$nextIndex = count($PP_DirectPayment_itemized[0]);
$PP_DirectPayment_itemized[0][$nextIndex] = "Quantity" . strval($cartIndex+1) . "";
$PP_DirectPayment_itemized[1][$nextIndex] = "".$qty ."";
$Tech8_Spares_eCart1->MoveNext();
$cartIndex ++;
}
$Tech8_Spares_eCart1->MoveFirst();
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "MerchantSessionID";
$PP_DirectPayment_optional[1][$nextIndex] = "".session_id() ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "Payer";
$PP_DirectPayment_optional[1][$nextIndex] = "".$row_WAATKcustomers['email'] ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "Street2";
$PP_DirectPayment_optional[1][$nextIndex] = "".$row_WAATKcustomers['address1'] ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "Phone";
$PP_DirectPayment_optional[1][$nextIndex] = "".$row_WAATKcustomers['phone'] ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "CVV2";
$PP_DirectPayment_optional[1][$nextIndex] = "".$row_WAATKcustomers['cvv'] ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "ItemTotal";
$PP_DirectPayment_optional[1][$nextIndex] = "".number_format(round($SubTotal,2), 2) ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "ShippingTotal";
$PP_DirectPayment_optional[1][$nextIndex] = "".$delivery ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "HandlingTotal";
$PP_DirectPayment_optional[1][$nextIndex] = "".$charges - $discount ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "TaxTotal";
$PP_DirectPayment_optional[1][$nextIndex] = "".number_format(round($VAT,2), 2) ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "InvoiceID";
$PP_DirectPayment_optional[1][$nextIndex] = "".$order_id ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_Name";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["first_name_ship"]))?$_POST["first_name_ship"]:"") ." ".((isset($_POST["last_name_ship"]))?$_POST["last_name_ship"]:"") ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_Street1";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["address1_ship"]))?$_POST["address1_ship"]:"") ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_Street2";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["address2_ship"]))?$_POST["address2_ship"]:"") ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_CityName";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["town_city_ship"]))?$_POST["town_city_ship"]:"") ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_StateOrProvince";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["county_ship"]))?$_POST["county_ship"]:"") ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_PostalCode";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["post_code_ship"]))?$_POST["post_code_ship"]:"") ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_Country";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["country_ship_code"]))?$_POST["country_ship_code"]:"") ."";
$nextIndex = count($PP_DirectPayment_optional[0]);
$PP_DirectPayment_optional[0][$nextIndex] = "SH_Phone";
$PP_DirectPayment_optional[1][$nextIndex] = "".((isset($_POST["phone_ship"]))?$_POST["phone_ship"]:"") ."";