X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FPayment.php;h=b58740242cc130b8f87a8ad58b977ef8fa5051fa;hb=e4555ff1269c3e8034375cb9877daca298001164;hp=dcec384ee373da4a45695f8a40930a2ba0eef4d5;hpb=3fd69e12b0d7ca451b819440a560d183dadcb838;p=civicrm-core.git diff --git a/CRM/Core/Payment.php b/CRM/Core/Payment.php index dcec384ee3..b58740242c 100644 --- a/CRM/Core/Payment.php +++ b/CRM/Core/Payment.php @@ -83,14 +83,26 @@ abstract class CRM_Core_Payment { protected $_paymentProcessor; /** - * Base url of the calling form. - * - * This is used for processors that need to return the browser back to the CiviCRM site. + * Base url of the calling form (offsite processors). * * @var string */ protected $baseReturnUrl; + /** + * Return url upon success (offsite processors). + * + * @var string + */ + protected $successUrl; + + /** + * Return url upon failure (offsite processors). + * + * @var string + */ + protected $cancelUrl; + /** * The profile configured to show on the billing form. * @@ -108,15 +120,41 @@ abstract class CRM_Core_Payment { protected $billingProfile; /** - * Set Base return URL. + * Set base return path (offsite processors). + * + * This is only useful with an internal civicrm form. * * @param string $url - * Url of site to return browser to. + * Internal civicrm path. */ public function setBaseReturnUrl($url) { $this->baseReturnUrl = $url; } + /** + * Set success return URL (offsite processors). + * + * This overrides $baseReturnUrl + * + * @param string $url + * Full url of site to return browser to upon success. + */ + public function setSuccessUrl($url) { + $this->successUrl = $url; + } + + /** + * Set cancel return URL (offsite processors). + * + * This overrides $baseReturnUrl + * + * @param string $url + * Full url of site to return browser to upon failure. + */ + public function setCancelUrl($url) { + $this->cancelUrl = $url; + } + /** * Set the configured payment profile. * @@ -827,6 +865,10 @@ abstract class CRM_Core_Payment { * @return string cancel url */ public function getCancelUrl($qfKey, $participantID) { + if (isset($this->cancelUrl)) { + return $this->cancelUrl; + } + if ($this->_component == 'event') { return CRM_Utils_System::url($this->getBaseReturnUrl(), array( 'reset' => 1, @@ -854,6 +896,10 @@ abstract class CRM_Core_Payment { * @return string */ protected function getReturnSuccessUrl($qfKey) { + if (isset($this->successUrl)) { + return $this->successUrl; + } + return CRM_Utils_System::url($this->getBaseReturnUrl(), array( '_qf_ThankYou_display' => 1, 'qfKey' => $qfKey, @@ -873,6 +919,10 @@ abstract class CRM_Core_Payment { * URL for a failing transactor to be redirected to. */ protected function getReturnFailUrl($key, $participantID = NULL, $eventID = NULL) { + if (isset($this->cancelUrl)) { + return $this->cancelUrl; + } + $test = $this->_is_test ? '&action=preview' : ''; if ($this->_component == "event") { return CRM_Utils_System::url('civicrm/event/register',