If you are test mode turned off and are getting to the failure page with the sandbox or live mode then you will need to add in the debug info to your failure pages to see what the problem might be.
On you pp_checkout_failure and the checkout_failure pages add this into the source on the pages, it will print out all of the api interactions that are occurring. This should let you know what the error is, please post back with what you discover.
<?php
if(!session_id()) session_start();
if($WAGLOBAL_Gateway == 1 ) {
echo "<p>Direct Pay: <br />";
echo "Full Request: ".(isset($_SESSION["PP_DirectPayment_postedValues"])?htmlentities($_SESSION["PP_DirectPayment_postedValues"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["PP_DirectPayment"])?htmlentities($_SESSION["PP_DirectPayment"]):"n/a")."<br /></p>";
echo "<p>Express Authorize <br />";
echo "Full Request: ".(isset($_SESSION["ECO_Auth_Request"])?htmlentities($_SESSION["ECO_Auth_Request"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["ECO_Auth_Result"])?htmlentities($_SESSION["ECO_Auth_Result"]):"n/a")."<br />";
echo "<p>Express Process: <br />";
echo "Full Request: ".(isset($_SESSION["ECO_Process_Request"])?htmlentities($_SESSION["ECO_Process_Request"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["ECO_Process_Result"])?htmlentities($_SESSION["ECO_Process_Result"]):"n/a")."<br /></p>";
}
if($WAGLOBAL_Gateway == 2) {
echo "<p>Auth Net: <br />";
echo "Full Request: ".(isset($_SESSION['WAAuthNet_postedValues'])?htmlentities($_SESSION['WAAuthNet_postedValues']):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION['WAAuthNet'])?htmlentities($_SESSION['WAAuthNet']):"n/a")."<br /></p>";
}
if($WAGLOBAL_Gateway == 3 ) {
echo "<p>Express Authorize: <br />";
echo "Full Request: ".(isset($_SESSION["ECO_Auth_Request"])?htmlentities($_SESSION["ECO_Auth_Request"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["ECO_Auth_Result"])?htmlentities($_SESSION["ECO_Auth_Result"]):"n/a")."<br /></p>";
echo "<p>Express Process: <br />";
echo "Full Request: ".(isset($_SESSION["ECO_Process_Request"])?htmlentities($_SESSION["ECO_Process_Request"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["ECO_Process_Result"])?htmlentities($_SESSION["ECO_Process_Result"]):"n/a")."<br /></p>";
}
if($WAGLOBAL_Shipping == 1) {
echo "<p>UPS: <br />";
echo "Full Request: ".(isset($_SESSION["WA_Store_Cart_UPS_FullRequest"])?htmlentities($_SESSION["WA_Store_Cart_UPS_FullRequest"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["WA_Store_Cart_UPS_FullResponse"])?htmlentities($_SESSION["WA_Store_Cart_UPS_FullResponse"]):"n/a")."<br /></p>";
}
if($WAGLOBAL_Shipping == 2) {
echo "<p>FedEX: <br />";
echo "Full Request: ".(isset($_SESSION["WA_Store_Cart_FedEx_FullRequest"])?htmlentities($_SESSION["WA_Store_Cart_FedEx_FullRequest"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["WA_Store_Cart_FedEx_FullResponse"])?htmlentities($_SESSION["WA_Store_Cart_FedEx_FullResponse"]):"n/a")."<br /></p>";
}
if($WAGLOBAL_Shipping == 3) {
echo "<p>USPS: <br />";
echo "Full Request: ".(isset($_SESSION["WA_Store_Cart_USPS_FullRequest"])?htmlentities($_SESSION["WA_Store_Cart_USPS_FullRequest"]):"n/a")."<br />";
echo "Full Response: ".(isset($_SESSION["WA_Store_Cart_USPS_FullResponse"])?htmlentities($_SESSION["WA_Store_Cart_USPS_FullResponse"]):"n/a")."<br /></p>";
}
?>
For signing up to UPS I found this info from Joe Lowery on the Adobe Developer Connection:
To start, visit the My UPS sign up page at registration. Review the service agreement terms and conditions; if you wish to proceed, click Accept at the bottom of the page. On the next page, fill in basic contact information such as name, street address, telephone number, and e-mail address; developers should enter their own information rather than that of a client. The final step is to establish a username and password.
Once you have a My UPS account, register with them as an end-user of their online tools. Log onto your My UPS account and then visit toolintro?loc=en_US&WT.svl=SubNav; and select the Get Tools link (located on both the left and right side of the page). When the Get Tools page opens, choose the link to the UPS Rates & Service Selection in the Standard Tools section. You may need to provide the additional information requested before you can proceed. After you've registered with their online tools division, you'll receive an e-mail with a developer's key. The developer's key has two purposes: It gives you access to all the UPS documentation for implementing their online tools, and it is needed to retrieve a UPS Access Key, which, in turn, is required to actually communicate with the UPS web services.
UPS offers two varieties of services, one HTML-based and the other rooted in XML. The XML version is far more robust and allows connection to all of UPS' services worldwide whereas the HTML version is limited to two services (UPS Tracking and UPS Rates & Service Selection) and only between the United States and Puerto Rico