From 4164f4e1de1f63be277c061fb7b06b213464f6d5 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Wed, 29 Apr 2015 17:29:19 -0600 Subject: [PATCH] CRM-16422 permit processor_id without ? in IPN urls --- CRM/Core/Payment.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CRM/Core/Payment.php b/CRM/Core/Payment.php index 81774bdfc2..dab234fbe5 100644 --- a/CRM/Core/Payment.php +++ b/CRM/Core/Payment.php @@ -551,6 +551,7 @@ abstract class CRM_Core_Payment { 'processor_name' => @$_GET['processor_name'], 'processor_id' => @$_GET['processor_id'], 'mode' => @$_GET['mode'], + 'q' => @$_GET['q'], ) ); CRM_Utils_System::civiExit(); @@ -572,8 +573,16 @@ abstract class CRM_Core_Payment { */ public static function handlePaymentMethod($method, $params = array()) { if (!isset($params['processor_id']) && !isset($params['processor_name'])) { - CRM_Core_Error::fatal("Either 'processor_id' or 'processor_name' param is required for payment callback"); + $q = explode('/', CRM_Utils_Array::value('q', $params, '')); + $lastParam = array_pop($q); + if (is_numeric($lastParam)) { + $params['processor_id'] = $_GET['processor_id'] = $lastParam; + } + else { + throw new CRM_Core_Exception("Either 'processor_id' or 'processor_name' param is required for payment callback"); + } } + self::logPaymentNotification($params); $sql = "SELECT ppt.class_name, ppt.name as processor_name, pp.id AS processor_id -- 2.25.1