2014-11-24 6 views
0

Я пытаюсь вызвать (функции теста) в $ this-> mollie-> payments-> создать метод, но я получаю сообщение об ошибке:Вызов функции в другом методе

Фатальная ошибка: неперехваченным exception «Mollie_API_Exception» с сообщением «Ошибка при выполнении вызова API (запрос): сумма меньше минимальной».

Таким образом, это означает, что $ this-> (функции теста) возвращает 0.

Я сделал следующее испытание:

$test = new gtpMollieGateway(); 
echo $test->testFunction(); 

И это дает правильное значение (расчетная сумма мой заказ).

Таким образом, это означает, что я делаю что-то не так с вызовом () функции теста в методе $ this-> mollie-> payments-> создать

Мой код для создания платежа:

// Create payment 
class gtpMollieGateway { 
    public $mollie, $price; 

    function __construct() { 
     $this->mollie = new Mollie_API_Client; 
     $this->mollie->setApiKey('myapikey'); 
     $this->price   = new gtpCheckoutData(); 

     add_action('init', array($this, 'gtpCreatePayment')); 
    } 

    private function testFunction() { 
     return $this->price->getPrice('inclusive'); 
    } 

    public function gtpCreatePayment() { 
     if(isset($_POST['checkout_submit'])) { 
      $payment  = $this->mollie->payments->create(array(
       // Here is the problem 
       'amount'  => $this->testFunction(), 
      )); 
      header('Location: ' . $payment->getPaymentUrl()); 
     } 
    } 
} 

$_mollie = new gtpMollieGateway; 

класс для расчета моей суммы:

class gtpCheckoutData { 
    private $tax, $price; 

    public function __construct() { 
     $this->tax  = get_option('gtp_theme_settings'); 
     $this->tax  = $this->tax['gtp_tax']/100; 

     if(isset($_SESSION['shopping_cart'])) { 
      $this->price = $_SESSION['shopping_cart']['total_price'] + $_SESSION['shopping_cart']['shipping_price']; 
      $this->shipping = $_SESSION['shopping_cart']['shipping_price']; 
     } 
    } 

    public function getPrice($type) { 

     if(isset($type)) { 
      switch($type) { 
       case 'exclusive' : 
        $totalPrice = $this->price; 
        break; 
       case 'tax' : 
        $totalPrice = $this->price * $this->tax; 
        break; 
       case 'inclusive' : 
        $totalPrice = $this->price * ($this->tax + 1); 
        break; 
      } 
      return $totalPrice; 
     } 
    } 
} 
+0

Кажется, что это ошибка вашего платежного шлюза, поэтому ознакомьтесь с руководством по интеграции платежей. –

+0

@hardiksolanki сказал, что эта ошибка возникает, когда 'amount' равно 0 –

+0

У вас, вероятно, нет $ _SESSION ['shopping_cart'] ['total_price']. Можете ли вы выполнить var_dump ($ _ SESSION) и проверить, существует ли это внутри сеанса? Также у вас слишком много связи, попробуйте изменить коэффициент кода – Igor

ответ

0

После длительного поиска и поиска я нашел проблему. Моя сессия не была запущена в моем документе плагина. Wordpress загружает плагин перед functions.php, а мой сеанс запускается в functions.php.

Таким образом, это было причиной того, что мое значение было 0, и это произошло с ошибкой.

0

Ваша функция testFunction() вызывает функцию function getPrice ($ type), а функция getPrice ($ type) возвращает 0, поэтому может быть из-за 0 суммы вы получаете эту ошибку из внешнего api (Payment gateway api).

+0

Спасибо за ответ, но это то, что я уже говорю в своем вопросе. – Robbert

Смежные вопросы