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) {