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.
*
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.
*
* @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,
* @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,
* 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',
$this->assertEquals('payment_notification processor_name=Paypal', $log['values'][$log['id']]['message']);
}
+ public function testSettingUrl() {
+ /** @var CRM_Core_Payment_Dummy $processor */
+ $processor = \Civi\Payment\System::singleton()->getById($this->processorCreate());
+ $success = 'http://success.com';
+ $cancel = 'http://cancel.com';
+ $processor->setCancelUrl($cancel);
+ $processor->setSuccessUrl($success);
+
+ // Using ReflectionUtils to access protected methods
+ $successGetter = new ReflectionMethod($processor, 'getReturnSuccessUrl');
+ $successGetter->setAccessible(TRUE);
+ $this->assertEquals($success, $successGetter->invoke($processor, NULL));
+
+ $cancelGetter = new ReflectionMethod($processor, 'getReturnFailUrl');
+ $cancelGetter->setAccessible(TRUE);
+ $this->assertEquals($cancel, $cancelGetter->invoke($processor, NULL));
+ }
+
}