Woocommerce API возвращает 1, но работает

Я пытаюсь написать свой собственный платежный шлюз для WooCommerce, и все идет неплохо. Теперь мой платежный провайдер может выполнить обратный вызов для проверки статуса платежа, поэтому я создал функцию обратного вызова.

 add_action('woocommerce_api_'.strtolower(get_class($this)), array(&$this, 'callback'));

    public function callback()
    {
        mail('[email protected]', 'callback ideal', print_r($_REQUEST,true) . print_r($_SERVER,true));

        echo '+';
        return '+';
    }

Когда я вызываю URL-адрес обратного вызова, я получаю электронное письмо, которое находится в функции обратного вызова, однако результат обратного вызова всегда равен 1.

Я немного погуглил, что означает 1, это означает, что обратный вызов не заканчивается или вообще не вызывается.

В моем случае это вызывается, так как я получаю электронное письмо. Может ли кто-нибудь указать мне в правильном направлении? Я должен что-то упустить.

Обновлять:

Когда я убиваю скрипт выходом из функции обратного вызова, я вижу результат. Но это, вероятно, не подходящее решение


person David Ericsson    schedule 29.05.2015    source источник


Ответы (1)


Причина может заключаться в том, что это действие вызывается через какой-то ajax. В wordpress по умолчанию ajax возвращает функцию die() до завершения функции. Поэтому, если мы не укажем die() в нашей пользовательской функции, она добавит 1 к данным в нашем обратном вызове. Таким образом, вы должны вызывать die или exit после того, как вывод будет эхо-отображением в браузере, чтобы предотвратить возврат и другие данные в наших пользовательских функциях, которые вызываются через ajax.

Надеюсь, это решение поможет вам.

person Domain    schedule 30.05.2015