To help troubleshoot the cause of the failure, add the following code to the checkout failure page:
<?php
if(!session_id()) session_start();
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>";
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>";
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>";
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>";
?>
This will write the full request and full response from payapl and any shipping providers you have selected to help us troubleshoot the cause.
NOTE: The full request and full response will contain sensitive information that should be removed before posting here.