Peculiarities of e-payment system functioning in Demo mode. Use value 1 as order number In Demo mode even if in post request correct order number is set. In this case MD5 hash is generated right. By the way, it’s not implemented in current module 2checkout of Ubercart.
Prooflink https://www.2checkout.com/documentation/UsersGuide2/chapter6/md5-hash.html
Just insert
if ($_POST['demo'] == 'Y') { $_POST['merchant_order_id'] = 1; } to the beginning of function uc_2checkout_complete in file uc_2checkout.pages.inc.