Sfoglia il codice sorgente

Ticket #4069 - Credits: Negative balance should not be allowed and Subscription shouldn't be continued and processed when there is low balance.

AntonLV 4 anni fa
parent
commit
eb280d9600

+ 10 - 6
modules/boonex/payment/classes/BxPaymentProviderCredits.php

@@ -113,13 +113,13 @@ class BxPaymentProviderCredits extends BxBaseModPaymentProvider implements iBxBa
     public function makePayment($mixedPending)
     {
         if(!BxDolModuleQuery::getInstance()->isEnabledByName($this->_sModuleCredits))
-            return array('code' => 1, 'message' => $this->_sLangsPrefix . 'cdt_err_not_available');
+            return ['code' => 1, 'message' => $this->_sLangsPrefix . 'cdt_err_not_available'];
 
         if(!is_array($mixedPending))
-            $mixedPending = $this->_oModule->_oDb->getOrderPending(array('type' => 'id', 'id' => (int)$mixedPending));
+            $mixedPending = $this->_oModule->_oDb->getOrderPending(['type' => 'id', 'id' => (int)$mixedPending]);
 
         if(empty($mixedPending) || !is_array($mixedPending))
-            return array('code' => 2, 'message' => $this->_sLangsPrefix . 'err_not_found_pending');
+            return ['code' => 2, 'message' => $this->_sLangsPrefix . 'err_not_found_pending'];
 
         $iClient = (int)$mixedPending['client_id'];
         $oClient = BxDolProfile::getInstance($iClient);
@@ -128,11 +128,15 @@ class BxPaymentProviderCredits extends BxBaseModPaymentProvider implements iBxBa
         $oSeller = BxDolProfile::getInstance($iSeller);
 
         if(!$oClient || !$oSeller)
-            return array('code' => 3, 'message' => $this->_sLangsPrefix . 'err_wrong_data');
+            return ['code' => 3, 'message' => $this->_sLangsPrefix . 'err_wrong_data'];
 
         $fAmount = (float)$mixedPending['amount'];
-        if(!bx_srv($this->_sModuleCredits, 'make_payment', array($iClient, $fAmount, $iSeller, $mixedPending['order'])))
-            return array('code' => 4, 'message' => $this->_sLangsPrefix . 'err_cannot_perform');
+        $fClientBalance = bx_srv($this->_sModuleCredits, 'get_profile_balance', [$iClient]);
+        if($fAmount > $fClientBalance)
+            return ['code' => 4, 'message' => $this->_sLangsPrefix . 'cdt_err_wrong_balance'];
+
+        if(!bx_srv($this->_sModuleCredits, 'make_payment', [$iClient, $fAmount, $iSeller, $mixedPending['order']]))
+            return ['code' => 5, 'message' => $this->_sLangsPrefix . 'err_cannot_perform'];
 
         return true;        
     }

+ 1 - 0
modules/boonex/payment/install/langs/en.xml

@@ -433,6 +433,7 @@
     <string name="_bx_payment_cdt_msg_charged"><![CDATA[Payment was successfully processed.]]></string>
     <string name="_bx_payment_cdt_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
     <string name="_bx_payment_cdt_err_not_available"><![CDATA[Checkout with Credits isn't available now.]]></string>
+    <string name="_bx_payment_cdt_err_wrong_balance"><![CDATA[Insufficient funds to write off.]]></string>
     <string name="_bx_payment_cdt_err_wrong_transaction"><![CDATA[Transaction verification failed.]]></string>
     <string name="_bx_payment_txt_name_credits"><![CDATA[Credits]]></string>
     <string name="_bx_payment_txt_cart_credits"><![CDATA[Credits]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/bx_payment/ru.xml

@@ -435,6 +435,7 @@
     <string name="_bx_payment_cdt_msg_charged"><![CDATA[Платеж успешно принят.]]></string>
     <string name="_bx_payment_cdt_msg_subscribed"><![CDATA[Спасибо! Подписка создана. Пожалуйста, проверьте ваш email для получения дальнейших инструкций.]]></string>
     <string name="_bx_payment_cdt_err_not_available"><![CDATA[В данное время оплата Кредитами не доступна.]]></string>
+    <string name="_bx_payment_cdt_err_wrong_balance"><![CDATA[Недостаточно средств для списания.]]></string>
     <string name="_bx_payment_cdt_err_wrong_transaction"><![CDATA[Не удалось верифицировать транзакцию.]]></string>
     <string name="_bx_payment_txt_name_credits"><![CDATA[Кредиты]]></string>
     <string name="_bx_payment_txt_cart_credits"><![CDATA[Кредиты]]></string>