From 3db503e04ef9e9d54e5d13ae9223d98f98a27ce2 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Sat, 16 May 2015 13:46:27 +1000 Subject: [PATCH] Improved error logging/handling in paypal IPN routines --- booking.paypal.inc | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/booking.paypal.inc b/booking.paypal.inc index b3cfdcd..c3ebfdf 100644 --- a/booking.paypal.inc +++ b/booking.paypal.inc @@ -33,18 +33,16 @@ function _booking_paypal_ipn_verify($vars = array()) { ob_end_clean(); if (preg_match('/VERIFIED/i', $info)) { - watchdog('booking', 'Payment verification completed successfully: @info', array('@info' => $info)); + watchdog('booking', 'Payment verification completed successfully: @info', array('@info' => $info)); return TRUE; - } - else { - watchdog('booking', 'Payment verification not successful: @info', array('@info' => $info)); + } else { + watchdog('booking', 'Payment verification not successful: @info', array('@info' => $info)); return FALSE; } - } - else { - watchdog('booking_paypal', 'Call to curl_exec() failed. url=@url vars=@vars', array( - '@vars' => print_r($vars, TRUE) - ), WATCHDOG_ERROR); + + } else { + watchdog('booking_paypal', 'Call to curl_exec() failed with error @error. vars=@vars', array( + '@vars' => print_r($vars, TRUE), '@error' => curl_error($ch)), WATCHDOG_ERROR); return FALSE; } } @@ -58,9 +56,17 @@ function booking_paypal_ipn() { watchdog('booking', 'Payment notification received: @info', array('@info' => var_export($ipn, TRUE))); - if(!_booking_paypal_ipn_verify($ipn)) - return; - + //verify the notification with paypal + if(!_booking_paypal_ipn_verify($ipn)) { + watchdog('booking', 'Payment verification did not succeed. Retrying.'); + if(!_booking_paypal_ipn_verify($ipn)) { + return; + } else { + watchdog('booking', 'Payment verification succeeded on second attempt.'); + } + } + + //if we're still exectuing then the verification was successful /* if ($ipn['payment_status'] != 'Pending' && variable_get('booking_paypal_sandbox', 0) == 1) {