I had the same problem all at once starting like around 10-12 july. It seems like they have closed the negative handling amount fix door.
I had too tidy up the calculations in paypal_ec.php (am using the one from AlexStudio in express checkout contrib)
I replaced the calculation to be: (note // is removed code)
$su_total = round($order->info['subtotal'] * $currencies->get_value($currency_id), $decimal);
$sh_total = round($order->info['shipping_cost'] * $currencies->get_value($currency_id), $decimal);
$tx_total = round($order->info['tax'] * $currencies->get_value($currency_id), $decimal);
$tx_item = round($this->ec_generate_PDI($currency_id, true) * $currencies->get_value($currency_id), $decimal);
//$ha_total = round((($order->info['total'] ) - $order->info['subtotal'] - $order->info['shipping_cost'] - $order->info['tax']) * $currencies->get_value($currency_id), $decimal);
$ha_total = round((($order->info['total'] ) - $order->info['subtotal'] - $order->info['shipping_cost'] - ($order->info['tax'] - $tx_item)) * $currencies->get_value($currency_id), $decimal);
$ot_total = round($order->info['total'] * $currencies->get_value($currency_id), $decimal);
$su_totalex = $su_total - $tx_item;
//$order_info['PAYPAL_ORDER_TOTAL'] = $su_total + $sh_total + $tx_total + $ha_total; //**** Use the sum of all items to avoid decimal rounds mismatch the total.
$order_info['PAYPAL_ORDER_TOTAL'] = $ot_total; //if only ordertotal is given the ship+order is not checked and never a problem
$order_info['PAYPAL_CURRENCY'] = $currency_id;
$email = "Order total=" . $ot_total . "\nItemEx" . $su_totalex . "\n Shipping=" . $sh_total . "\ntxtotal=" . $tx_total . "\ntxitem=" . $tx_item . "\nhatotal=" . $ha_total . "\norder total=" . ($su_totalex + $sh_total + $tx_total + $ha_total) . "\n";
tep_mail(STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, 'PayPal EC Check Error', $email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
note, I send myself an email to check the amount, can delete afterwards.
Now the payments come through. However,still the status is warning:
they send me:
[shortMessage] = Transaction refused because of an invalid argument. See additional error messages for details.
[LongMessage] = The totals of the cart item amounts do not match order amounts.
[ErrorCode] = 10413
[severityCode] = Warning
and I can really not see any error, If i add it all up it fits..?