Im also having endless problems with the sagepay, I get errors on every field missing that is stored in the Crypt and also had no response from support in 4 days apart from we need more time to look into it.
There was a update to ecart which didn't solve the issue.
Most of my clients are using protx so am unable to finish the sites Im now having to pay programmers who know how the system works to do a job that I paid alot of money for a software that should do it.
I hope this issues is resolved soon as its costing me alot of money now.
Here is the code from my confirm.php page and the paymentscript from ecart folder.
CONFIRM.PHP form CODE.
<div class="eC_CheckoutFormWrapper">
<form name="checkout_Protx_VSPForm" action="https://test.sagepay.com/gateway/service/vspserver-register.vsp" method="post">
<div class="eC_PurchaserInfoWrapper">
<div class="eC_CheckoutFormBody">
</div>
</div>
<table class="eC_ButtonWrapper" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="hidden" name="Vendor" id="Vendor" value="theaudioworksuk" />
<input type="hidden" name="VPSProtocol" id="VPSProtocol" value="2.23" />
<input type="hidden" name="TxType" id="TxType" value="PAYMENT" />
<input type="hidden" name="Crypt" id="Crypt" value="<?php echo WA_Protx_VSPFormHash($ecommerce, "by2DE6GWXJ5yFsKa", "".WAEC_getTimestamp() ."", "".$ecommerce->GrandTotal() ."", "GBP", "".WAEC_getTimestamp() ."", "http://localhost/AudioWorks/checkout_success.php", "http://localhost/AudioWorks/checkout_failure.php", "".((isset($_POST["email"]))?$_POST["email"]:"") ."", "", "".((isset($_POST["shipping_lastname"]))?$_POST["shipping_lastname"]:"") ."", "".((isset($_POST["shipping_firstname"]))?$_POST["shipping_firstname"]:"") ."", "".((isset($_POST["shipping_street1"]))?$_POST["shipping_street1"]:"") ."", "".((isset($_POST["shipping_postcode"]))?$_POST["shipping_postcode"]:"") ."", "".((isset($_POST["shipping_city"]))?$_POST["shipping_city"]:"") ."", "".((isset($_POST["shipping_country"]))?$_POST["shipping_country"]:"") ."", "".((isset($_POST["lastname"]))?$_POST["lastname"]:"") ."", "".((isset($_POST["firstname"]))?$_POST["firstname"]:"") ."", "".((isset($_POST["street1"]))?$_POST["street1"]:"") ."", "".((isset($_POST["postcode"]))?$_POST["postcode"]:"") ."", "".((isset($_POST["city"]))?$_POST["city"]:"") ."", "".((isset($_POST["country"]))?$_POST["country"]:"") ."", "".((isset($_POST["phone"]))?$_POST["phone"]:"") ."", "".((isset($_POST["fax"]))?$_POST["fax"]:"") ."", "0", "0", "0", ""); ?>" />
<input type="button" value="Modify information" onclick="history.back();return false;"/><input type="submit" name="Submit_order" id="Submit_order" value="Checkout" />