Przeglądaj źródła

Ticket #4971 - Build-in API support: Stripe Connect. Services.

AntonLV 1 rok temu
rodzic
commit
2816754dc6

+ 145 - 106
modules/boonex/stripe_connect/classes/BxStripeConnectModule.php

@@ -17,13 +17,129 @@ define('BX_STRIPE_CONNECT_PMODE_PLATFORM', 'platform');
 
 
 class BxStripeConnectModule extends BxBaseModGeneralModule
 class BxStripeConnectModule extends BxBaseModGeneralModule
 {
 {
-    function __construct(&$aModule)
+    public function __construct(&$aModule)
     {
     {
         parent::__construct($aModule);
         parent::__construct($aModule);
 
 
         $this->_oConfig->init($this->_oDb);
         $this->_oConfig->init($this->_oDb);
     }
     }
 
 
+    /**
+     * 
+     * SERVICE METHODS
+     * 
+     */
+    public function serviceAccountCreate($iId)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $sError = _t('_bx_stripe_connect_err_perform');
+    	if(empty($iId) || $iId != bx_get_logged_profile_id())
+            return ['code' => 1, 'message' => $sError];
+
+        $oProfile = BxDolProfile::getInstance($iId);
+        if(!$oProfile)
+            return ['code' => 1, 'message' => $sError];
+
+        $sAccIdField = $CNF['FIELD_' . strtoupper($this->_oConfig->getMode()) . '_ACCOUNT_ID'];
+
+        $oApi = BxStripeConnectApi::getInstance();        
+        $oAccount = $oApi->createAccount($oProfile->getAccountObject()->getEmail());
+        if(!$oAccount)
+            return ['code' => 1, 'message' => $sError];
+
+        $this->_oDb->insertAccount([
+            'profile_id' => $iId,
+            $sAccIdField => $oAccount->id
+        ]);
+
+        $sLink = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=payment-details');
+        $oAccountLink = $oApi->createAccountLinks($oAccount->id, $sLink, $sLink);
+        if(!$oAccountLink)
+            return ['code' => 1, 'message' => $sError];
+
+        return ['code' => 0, 'redirect' => $oAccountLink->url];
+    }
+
+    public function serviceAccountContinue($iId)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $sError = _t('_bx_stripe_connect_err_perform');
+    	if(empty($iId) || $iId != bx_get_logged_profile_id())
+            return ['code' => 1, 'message' => $sError];
+
+        $sModeUc = strtoupper($this->_oConfig->getMode());
+        $sAccIdField = $CNF['FIELD_' . $sModeUc . '_ACCOUNT_ID'];
+        $sAccDetailsField = $CNF['FIELD_' . $sModeUc . '_DETAILS'];
+
+        $aAccount = $this->_oDb->getAccount(['sample' => 'profile_id', 'profile_id' => $iId]);
+        if(empty($aAccount) || !is_array($aAccount) || $aAccount[$sAccIdField] == '')
+            return ['code' => 1, 'message' => $sError];
+
+        if((int)$aAccount[$sAccDetailsField] != 0)
+            return ['code' => 0];
+
+        $sLink = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=payment-details');
+        $oAccountLink = BxStripeConnectApi::getInstance()->createAccountLinks($aAccount[$sAccIdField], $sLink, $sLink);
+        if(!$oAccountLink)
+            return ['code' => 1, 'message' => $sError];
+
+        return ['code' => 0, 'redirect' => $oAccountLink->url];
+    }
+
+    public function serviceAccountDelete($iId)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $sError = _t('_bx_stripe_connect_err_perform');
+    	if(empty($iId) || $iId != bx_get_logged_profile_id())
+            return ['code' => 1, 'message' => $sError];
+
+        $aAccount = $this->_oDb->getAccount(['sample' => 'profile_id', 'profile_id' => $iId]);
+        if(empty($aAccount) || !is_array($aAccount))
+            return ['code' => 1, 'message' => $sError];
+
+        $sAccIdField = $CNF['FIELD_' . strtoupper($this->_oConfig->getMode()) . '_ACCOUNT_ID'];
+
+        $oAccount = BxStripeConnectApi::getInstance()->deleteAccount($aAccount[$sAccIdField]);
+        if(!$oAccount || !$oAccount->deleted)
+            return ['code' => 2, 'message' => _t('_bx_stripe_connect_err_delete')];
+
+        $this->_oDb->deleteAccount([
+            'profile_id' => $iId,
+            $sAccIdField => $oAccount->id
+        ]);
+
+        return ['code' => 0, 'reload' => 1];
+    }
+
+    public function serviceAccountSessionCreate($iProfileId)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        if(!$iProfileId || ($iProfileId != $this->_iProfileId && !isAdmin()))
+            $iProfileId = $this->_iProfileId;
+        if(!$iProfileId)
+            return ['code' => 1];
+
+        $sModeUc = strtoupper($this->_oConfig->getMode());
+        $sAccIdField = $CNF['FIELD_' . $sModeUc . '_ACCOUNT_ID'];
+
+        $aAccount = $this->_oDb->getAccount(['sample' => 'profile_id', 'profile_id' => $iProfileId]);
+        if(empty($aAccount) || !is_array($aAccount) || $aAccount[$sAccIdField] == '')
+            return ['code' => 1];
+
+        $oAccountSession = BxStripeConnectApi::getInstance()->createAccountSessions($aAccount[$sAccIdField]);
+        if(!$oAccountSession)
+            return ['code' => 1];
+
+        return [
+            'code' => 0,
+            'secret' => $oAccountSession->client_secret
+        ];
+    }
+
     /**
     /**
      * @page service Service Calls
      * @page service Service Calls
      * @section bx_stripe_connect Stripe Connect
      * @section bx_stripe_connect Stripe Connect
@@ -109,7 +225,12 @@ class BxStripeConnectModule extends BxBaseModGeneralModule
     public function serviceGetBlockPayments()
     public function serviceGetBlockPayments()
     {
     {
         if(!isLogged())
         if(!isLogged())
-            return '';
+            return $this->_bIsApi ? [] : '';
+        
+        if($this->_bIsApi)
+            return [bx_api_get_block('stripe_connect', [
+                'embed' => 'payments'
+            ])];
 
 
         return $this->_oTemplate->getBlockPayments();
         return $this->_oTemplate->getBlockPayments();
     }
     }
@@ -121,15 +242,25 @@ class BxStripeConnectModule extends BxBaseModGeneralModule
     public function serviceGetBlockReportingChart()
     public function serviceGetBlockReportingChart()
     {
     {
         if(!isLogged())
         if(!isLogged())
-            return '';
+            return $this->_bIsApi ? [] : '';
 
 
+        if($this->_bIsApi)
+            return [bx_api_get_block('stripe_connect', [
+                'embed' => 'reporting-chart'
+            ])];
+        
         return $this->_oTemplate->getBlockReportingChart();
         return $this->_oTemplate->getBlockReportingChart();
     }
     }
 
 
     public function serviceGetBlockBalances()
     public function serviceGetBlockBalances()
     {
     {
         if(!isLogged())
         if(!isLogged())
-            return '';
+            return $this->_bIsApi ? [] : '';
+
+        if($this->_bIsApi)
+            return [bx_api_get_block('stripe_connect', [
+                'embed' => 'balances'
+            ])];
 
 
         return $this->_oTemplate->getBlockBalances();
         return $this->_oTemplate->getBlockBalances();
     }
     }
@@ -137,7 +268,12 @@ class BxStripeConnectModule extends BxBaseModGeneralModule
     public function serviceGetBlockNotifications()
     public function serviceGetBlockNotifications()
     {
     {
         if(!isLogged())
         if(!isLogged())
-            return '';
+            return $this->_bIsApi ? [] : '';
+
+        if($this->_bIsApi)
+            return [bx_api_get_block('stripe_connect', [
+                'embed' => 'notification-banner'
+            ])];
 
 
         return $this->_oTemplate->getBlockNotifications();
         return $this->_oTemplate->getBlockNotifications();
     }
     }
@@ -155,119 +291,22 @@ class BxStripeConnectModule extends BxBaseModGeneralModule
 
 
     public function actionAccountCreate()
     public function actionAccountCreate()
     {
     {
-        $CNF = &$this->_oConfig->CNF;
-
-        $sError = _t('_bx_stripe_connect_err_perform');
-
-        $iId = (int)bx_get('id');
-    	if(empty($iId) || $iId != bx_get_logged_profile_id())
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        $oProfile = BxDolProfile::getInstance($iId);
-        if(!$oProfile)
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        $sAccIdField = $CNF['FIELD_' . strtoupper($this->_oConfig->getMode()) . '_ACCOUNT_ID'];
-
-        $oApi = BxStripeConnectApi::getInstance();        
-        $oAccount = $oApi->createAccount($oProfile->getAccountObject()->getEmail());
-        if(!$oAccount)
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        $this->_oDb->insertAccount([
-            'profile_id' => $iId,
-            $sAccIdField => $oAccount->id
-        ]);
-
-        $sLink = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=payment-details');
-        $oAccountLink = $oApi->createAccountLinks($oAccount->id, $sLink, $sLink);
-        if(!$oAccountLink)
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        return echoJson(['code' => 0, 'redirect' => $oAccountLink->url]);
+        return echoJson($this->serviceAccountCreate((int)bx_get('id')));
     }
     }
 
 
     public function actionAccountContinue()
     public function actionAccountContinue()
     {
     {
-        $CNF = &$this->_oConfig->CNF;
-
-        $sError = _t('_bx_stripe_connect_err_perform');
-
-        $iId = (int)bx_get('id');
-    	if(empty($iId) || $iId != bx_get_logged_profile_id())
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        $sModeUc = strtoupper($this->_oConfig->getMode());
-        $sAccIdField = $CNF['FIELD_' . $sModeUc . '_ACCOUNT_ID'];
-        $sAccDetailsField = $CNF['FIELD_' . $sModeUc . '_DETAILS'];
-
-        $aAccount = $this->_oDb->getAccount(['sample' => 'profile_id', 'profile_id' => $iId]);
-        if(empty($aAccount) || !is_array($aAccount) || $aAccount[$sAccIdField] == '')
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        if((int)$aAccount[$sAccDetailsField] != 0)
-            return echoJson(['code' => 0]);
-
-        $sLink = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=payment-details');
-        $oAccountLink = BxStripeConnectApi::getInstance()->createAccountLinks($aAccount[$sAccIdField], $sLink, $sLink);
-        if(!$oAccountLink)
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        return echoJson(['code' => 0, 'redirect' => $oAccountLink->url]);
+        return echoJson($this->serviceAccountContinue((int)bx_get('id')));
     }
     }
 
 
     public function actionAccountDelete()
     public function actionAccountDelete()
     {
     {
-        $CNF = &$this->_oConfig->CNF;
-
-        $sError = _t('_bx_stripe_connect_err_perform');
-
-        $iId = (int)bx_get('id');
-    	if(empty($iId) || $iId != bx_get_logged_profile_id())
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        $aAccount = $this->_oDb->getAccount(['sample' => 'profile_id', 'profile_id' => $iId]);
-        if(empty($aAccount) || !is_array($aAccount))
-            return echoJson(['code' => 1, 'message' => $sError]);
-
-        $sAccIdField = $CNF['FIELD_' . strtoupper($this->_oConfig->getMode()) . '_ACCOUNT_ID'];
-
-        $oAccount = BxStripeConnectApi::getInstance()->deleteAccount($aAccount[$sAccIdField]);
-        if(!$oAccount || !$oAccount->deleted)
-            return echoJson(['code' => 2, 'message' => _t('_bx_stripe_connect_err_delete')]);
-
-        $this->_oDb->deleteAccount([
-            'profile_id' => $iId,
-            $sAccIdField => $oAccount->id
-        ]);
-
-        return echoJson(['code' => 0, 'reload' => 1]);
+        return echoJson($this->serviceAccountDelete((int)bx_get('id')));
     }
     }
 
 
     public function actionAccountSessionCreate($iProfileId)
     public function actionAccountSessionCreate($iProfileId)
     {
     {
-        $CNF = &$this->_oConfig->CNF;
-
-        if(!$iProfileId || ($iProfileId != $this->_iProfileId && !isAdmin()))
-            $iProfileId = $this->_iProfileId;
-        if(!$iProfileId)
-            return echoJson(['code' => 1]);
-
-        $sModeUc = strtoupper($this->_oConfig->getMode());
-        $sAccIdField = $CNF['FIELD_' . $sModeUc . '_ACCOUNT_ID'];
-
-        $aAccount = $this->_oDb->getAccount(['sample' => 'profile_id', 'profile_id' => $iProfileId]);
-        if(empty($aAccount) || !is_array($aAccount) || $aAccount[$sAccIdField] == '')
-            return echoJson(['code' => 1]);
-
-        $oAccountSession = BxStripeConnectApi::getInstance()->createAccountSessions($aAccount[$sAccIdField]);
-        if(!$oAccountSession)
-            return echoJson(['code' => 1]);
-
-        return echoJson([
-            'code' => 0,
-            'secret' => $oAccountSession->client_secret
-        ]);
+        return echoJson($this->serviceAccountSessionCreate($iProfileId));
     }
     }
 
 
     /**
     /**