其他方法调用函数

时间:2014-11-24 10:45:37

标签: php function class methods payment-gateway

我试图在 $ this-&gt; mollie-&gt; payments-&gt; create 方法中调用 testFunction(),但是我收到错误:< / p>

致命错误:未捕获异常'Mollie_API_Exception',消息'执行API调用时出错(请求):金额低于最低值。

所以这意味着 $ this-&gt; testFunction()返回0.

我做了以下测试:

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

这给出了正确的价值(我的结帐的计算金额)。

所以这意味着我在 $ this-&gt; mollie-&gt; payments-&gt; create 方法中调用 testFunction()时出错了。

我创建付款的代码:

// 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;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

你的函数testFunction()正在调用函数函数getPrice($ type)并且函数getPrice($ type)返回0因此可能是因为你从外部api(支付网关api)获得此错误的数量为0。

答案 1 :(得分:0)

经过长时间的搜索和尝试,我发现了问题。我的会话未在我的插件文档中启动。 Wordpress在functions.php之前加载插件,我的会话在functions.php。

中启动

所以这就是我的值为0的原因,并且发生了错误。