问题
I wish to redirect to a custom page following the failure in payment as returned by payment gateway. To this end, I am using the ShoppingCartCheckoutCompletePage hook to check this using the variable $vars['ispaid']. When payment is successful, $vars['ispaid'] is true and the redirect to the thankyou page works.
add_hook('ShoppingCartCheckoutCompletePage', 1, function ($vars)
{
# Will be true if the order has been paid
if($vars['ispaid'] == true)
{
#redirect to thank you page
header('location:'.thankYouPage);
die;
}
else
{
header('location:'.transactionFailedPage);
die;
}
}
However the else statement is not executing when payment obviously fails, rather the viewinvoice.php page is loaded and payment status set to 'unpaid'
Am I missing something? How can I redirect to the transaction failed page?
Thanks.
回答1:
WHMCS doesn't provide an intuitive way to get to where you are wanting to go, that's for sure. You may need to add a file to execute in the hooks directory to run without a hook - any php you add into the hooks directory gets executed as soon as the system starts up and security checks are done. So this means you can see if you are a) on the viewinvoice.php file, b) if there is an error message indicating a failed payment and c) redirect from there if these are true.
The ShoppingCartCheckoutCompletePage I believe is only called after the order is complete and payment is made, that's what I recall though, and again, it's not intuitive.
Hope that is of help.
来源:https://stackoverflow.com/questions/34682783/redirect-to-custompage-php-instead-of-viewinvoice-php-if-payment-fails-in-whmcs