In order to understand why you are getting a failed Payments Pro transaction you will need to add in the full request and full response bindings to your failure page.
To do this open up your failure page, either pp_checkout_failure, or checkout_failure. In here you will need to add the full request and full response bindings into the code on the page. Here is the code to add.
For Direct Payment add these into the checkout_failure.php
<?php echo(PP_DirectPayment_Result("Full Request")) ?>
<br/><br/>
<?php echo(PP_DirectPayment_Result("Full Response")) ?>
For Express Checkout add these into the pp_checkout_failure.php
<?php echo $WA_PP_ECO_DoResult->fullRequest; ?>
<br/><br/>
<?php echo $WA_PP_ECO_DoResult->fullResponse; ?>
When you test the checkout after applying this you will get the full request that was sent and the response. In the response you should see all the information about the error message.