AntonLV 6 anni fa
parent
commit
7341c86612

+ 17 - 9
modules/boonex/payment/classes/BxPaymentModule.php

@@ -1004,6 +1004,8 @@ class BxPaymentModule extends BxBaseModPaymentModule
 	    ));
 
 	    $this->onSubscriptionUpdate($aPending);
+
+            return true;
 	}
 
 	public function cancelSubscription($mixedPending)
@@ -1016,14 +1018,20 @@ class BxPaymentModule extends BxBaseModPaymentModule
             foreach($aItems as $aItem)
                 $this->callCancelSubscriptionItem((int)$aItem['module_id'], array($aPending['client_id'], $aPending['seller_id'], $aItem['item_id'], $aItem['item_count'], $aPending['order']));
 
+            $aSubscription = $this->_oDb->getSubscription(array('type' => 'pending_id', 'pending_id' => $aPending['id']));
+            if(!empty($aSubscription) && is_array($aSubscription) && !$this->_oDb->deleteSubscription($aSubscription['id'], 'cancel'))
+                return false;
+
             $this->onSubscriptionCancel($aPending);
+
+            return true;
 	}
 
 	public function onPaymentRegisterBefore($aPending, $aResult = array())
 	{
-		//--- 'System' -> 'Before Register Payment' for Alerts Engine ---//
-		bx_alert('system', 'before_register_payment', 0, $aPending['client_id'], array('pending' => $aPending));
-		//--- 'System' -> 'Before Register Payment' for Alerts Engine ---//
+            //--- 'System' -> 'Before Register Payment' for Alerts Engine ---//
+            bx_alert('system', 'before_register_payment', 0, $aPending['client_id'], array('pending' => $aPending));
+            //--- 'System' -> 'Before Register Payment' for Alerts Engine ---//
 	}
 
 	public function onPaymentRegister($aPending, $aResult = array())
@@ -1060,16 +1068,16 @@ class BxPaymentModule extends BxBaseModPaymentModule
 
 	public function onSubscriptionUpdate($aPending, $aResult = array())
 	{
-	    //--- 'System' -> 'Update Subscription' for Alerts Engine ---//
-		bx_alert('system', 'update_subscription', 0, $aPending['client_id'], array('pending' => $aPending));
-		//--- 'System' -> 'Update Subscription' for Alerts Engine ---//
+            //--- 'System' -> 'Update Subscription' for Alerts Engine ---//
+            bx_alert('system', 'update_subscription', 0, $aPending['client_id'], array('pending' => $aPending));
+            //--- 'System' -> 'Update Subscription' for Alerts Engine ---//
 	}
 	
 	public function onSubscriptionCancel($aPending, $aResult = array())
 	{
-		//--- 'System' -> 'Cancel Subscription' for Alerts Engine ---//
-		bx_alert('system', 'cancel_subscription', 0, $aPending['client_id'], array('pending' => $aPending));
-		//--- 'System' -> 'Cancel Subscription' for Alerts Engine ---//
+            //--- 'System' -> 'Cancel Subscription' for Alerts Engine ---//
+            bx_alert('system', 'cancel_subscription', 0, $aPending['client_id'], array('pending' => $aPending));
+            //--- 'System' -> 'Cancel Subscription' for Alerts Engine ---//
 	}
 
     public function setSiteSubmenu($sSubmenu, $sSelModule, $sSelName)

+ 11 - 5
modules/boonex/payment/classes/BxPaymentProviderChargebee.php

@@ -242,10 +242,7 @@ class BxPaymentProviderChargebee extends BxBaseModPaymentProvider implements iBx
             return false;
         }
 
-        bx_alert($this->_oModule->_oConfig->getName(), $this->_sName . '_cancel_subscription', 0, false, array(
-            'subscription_id' => $sSubscriptionId,
-            'subscription_object' => &$oSubscription
-        ));
+        $this->onDeleteSubscription($sSubscriptionId, $oSubscription->getValues());
 
         return true;
     }
@@ -349,6 +346,13 @@ class BxPaymentProviderChargebee extends BxBaseModPaymentProvider implements iBx
         return $oCustomer;
     }
 
+    public function onDeleteSubscription($sSubscriptionId, $aSubscription)
+    {
+        bx_alert($this->_oModule->_oConfig->getName(), $this->_sName . '_cancel_subscription', 0, false, array(
+            'subscription_id' => $sSubscriptionId,
+            'subscription_info' => $aSubscription
+        ));
+    }
 
 
     protected function _getSite()
@@ -419,7 +423,9 @@ class BxPaymentProviderChargebee extends BxBaseModPaymentProvider implements iBx
         if($mixedResult === false)
             return false;
 
-        list($aPending) = $mixedResult;
+        list($aPending, $aSubscription) = $mixedResult;
+        $this->onDeleteSubscription($aSubscription['id'], $aSubscription);
+
         return $this->_oModule->cancelSubscription($aPending);
     }
 

+ 5 - 12
modules/boonex/payment/classes/BxPaymentSubscriptions.php

@@ -326,29 +326,22 @@ class BxPaymentSubscriptions extends BxBaseModPaymentSubscriptions
     public function cancel($iPendingId)
     {
     	$aSubscription = $this->_oModule->_oDb->getSubscription(array('type' => 'pending_id', 'pending_id' => $iPendingId));
-		if(empty($aSubscription) || !is_array($aSubscription))
-	    	return true;
+        if(empty($aSubscription) || !is_array($aSubscription))
+            return true;
 
         $aOrder = $this->_oModule->_oDb->getOrderSubscription(array('type' => 'id', 'id' => $iPendingId));
         if(empty($aOrder) || !is_array($aOrder))
-	    	return false;
+            return false;
 
         $iSellerId = (int)$aOrder['seller_id'];
         $oProvider = $this->_oModule->getObjectProvider($aOrder['provider'], $iSellerId);
         if($oProvider === false || !$oProvider->isActive())
-        	return false;
+            return false;
 
         if(!$oProvider->cancelRecurring($iPendingId, $aSubscription['customer_id'], $aSubscription['subscription_id']))
             return false;
 
-        list($iSellerId, $iModuleId, $iItemId, $iItemCount) = $this->_oModule->_oConfig->descriptorS2A($aOrder['items']);
-		if(!$this->_oModule->callCancelSubscriptionItem((int)$iModuleId, array($aOrder['client_id'], $iSellerId, $iItemId, $iItemCount, $aOrder['order'])))
-			return false;
-
-		if(!$this->_oModule->_oDb->deleteSubscription($aSubscription['id'], 'cancel'))
-			return false;
-
-        return true;
+        return $this->_oModule->cancelSubscription($aOrder);
     }
 
     protected function _getBlock($sType)