Просмотр исходного кода

Ticket #3802 - Payments: Metadata is too long in Stripe V3 integration.

AntonLV 4 лет назад
Родитель
Сommit
8571f594a1

+ 5 - 0
modules/boonex/payment/classes/BxPaymentConfig.php

@@ -244,6 +244,11 @@ class BxPaymentConfig extends BxBaseModPaymentConfig
     	return explode($this->getDivider('DIVIDER_DESCRIPTOR'), $s);
     }
 
+    public function descriptorsA2S($a) 
+    {
+    	return implode($this->getDivider('DIVIDER_DESCRIPTORS'), $a);
+    }
+
     /**
      * Conver items to array with necessary structure.
      *

+ 7 - 7
modules/boonex/payment/classes/BxPaymentProviderStripeV3.php

@@ -376,7 +376,7 @@ class BxPaymentProviderStripeV3 extends BxPaymentProviderStripeBasic implements
                         'quantity' => $aItem['quantity'],
                     );
 
-                    $aMetaItems[] = array('v' => $aCartInfo['vendor_id'], 'c' => $aClient['id'], 'm' => $aItem['module_id'], 'i' => $aItem['id']);
+                    $aMetaItems[] = $this->_oModule->_oConfig->descriptorA2S([$aItem['module_id'], $aItem['id']]);
                 }
                 break;
 
@@ -389,27 +389,27 @@ class BxPaymentProviderStripeV3 extends BxPaymentProviderStripeBasic implements
                         'quantity' => $aItem['quantity'],
                     );
 
-                    $aMetaItems[] = array('v' => $aCartInfo['vendor_id'], 'c' => $aClient['id'], 'm' => $aItem['module_id'], 'i' => $aItem['id']);
+                    $aMetaItems[] = $this->_oModule->_oConfig->descriptorA2S([$aItem['module_id'], $aItem['id']]);
                 }
                 break;
         }
 
         $oSession = null;
-        $aSession = array(
+        $aSession = [
             'payment_method_types' => ['card'],
             'customer_email' => !empty($aClient['email']) ? $aClient['email'] : '',
             'line_items' => $aLineItems,
             'mode' => $sMode,
             'success_url' => $aParams['success_url'],
             'cancel_url' => $aParams['cancel_url'],
-            'metadata' => array(
+            'metadata' => [
                 'vendor' => $aCartInfo['vendor_id'],
                 'client' => $aClient['id'],
                 'type' => $sType, 
-                'items' => serialize($aMetaItems),
+                'items' => $this->_oModule->_oConfig->descriptorsA2S($aMetaItems),
                 'verification' => $this->getVerificationCodeSession($aCartInfo['vendor_id'], $aClient['id'], $fAmount, $aCartInfo['vendor_currency_code'])
-            )
-        );
+            ]
+        ];
 
         bx_alert($this->_oModule->_oConfig->getName(), $this->_sName . '_create_session', 0, false, array(
             'session_object' => &$oSession,