the problem appear because gestpay return an URl containing *.
In function wpsc_gestpay_callback I define the b string by
$url = $_SERVER['REQUEST_URI'];
$url2= explode("&b=", $url);
and accordingly
from if( !$_REQUEST['b'] ) to if( !$url2[1] )
and from
fputs( $handle, 'GET /CryptHTTP/Decrypt.asp?a=' . urlencode( $_REQUEST['a'] ) . '&b=' . urlencode( $_REQUEST['b'] ) . " HTTP/1.0\r\n\r\n" );
to
fputs( $handle, 'GET /CryptHTTP/Decrypt.asp?a=' . urlencode( $_REQUEST['a'] ) . '&b=' . urlencode($url2[1]) . " HTTP/1.0\r\n\r\n" );
Also I limit the decimal number to 2 in wpsc_gestpay_gateway function by adding round function
'PAY1_AMOUNT' => round(( $advance ? $wpsc_cart->total_price / 100 * $advance : $wpsc_cart->total_price ), 2, PHP_ROUND_HALF_DOWN),