I found a bug in pm2checkout.php. When you have a lot of text on the product page, it is stored as the product description and sent to 2checkout. If it is very long it will not pass the parameters correctly to 2checkout and you will get the parameter error or a generic error screen. There is a simple fix.
You may want to try adding several products to your cart and try to check out. You can get this error even when you can buy any of your products with no errors. Fill up your cart with a wide array of your products and see if it will make it to 2checkout. Don't be surprised if it doesn't work.
PROBLEM:
At checkout when you press the CONFIM ORDER button to go to the 2checkout site and you get an error for invalid parameters or you get a generic error screen that doesn't even allow you to get to the 2checkout site, here is a fix. This can happen if you have several products in your cart too.
It may be that your product description is too long. You can check by going to through your sites check out process and when you get to the CONFIRM ORDER part of checkout, view the source for the web page. Now look for "<form name="checkout_confirmation"" in the source. This is where the parameters are set and will be sent to 2checkout. One of the paramters is "name="c_description_0" value=". Check the value= for c_description. If it is very long this could be your problem. It may lhave line breaks and lots of other htlm code in it. It gets the description from the product page.
Ther is a simple fix. Since the description doesn't show up when you go to 2checkout, you can put any value in this field. I used a generic "product from my web site".
HOW TO HARD CODE A SHORTER DESCRIPTION:
In the module, includes/modules/payment/pm2checkout.php
The line "$text = $product_description['products_description'];" needs to be commented out. Below it you can add a line to set the description to be generic and short enough so you don't have any issues.
See below to see what it looks like in the pm2checkout module:
// format product description (from Short Description contrib)
$product_id = $order->products[$i]['id'];
$product_query = tep_db_query("select products_description from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . $product_id . "' and language_id = '" . $languages_id . "'");
$product_description = tep_db_fetch_array($product_query);
//$text = $product_description['products_description'];
$text = "Put a generic description here, maybe your store name";
$text = strip_tags($text);
$text = nl2br($text);
$text = str_replace("<br />","<br>",$text);
$process_button_string .= tep_draw_hidden_field('c_description_' . $i, $text);
$process_button_string .= tep_draw_hidden_field('c_price_' . $i, $order->products[$i]['final_price']);
That is it. You are done.