我正在尝试为WooCommerce编写自己的支付网关,并且进展顺利。现在我的支付提供商可以进行回调以验证支付状态,因此我创建了一个回调函数。
add_action('woocommerce_api_'.strtolower(get_class($this)), array(&$this, 'callback'));
public function callback()
{
mail('my@email.com', 'callback ideal', print_r($_REQUEST,true) . print_r($_SERVER,true));
echo '+';
return '+';
}
当我调用回调URL时,我收到回调函数中的电子邮件,但回调给出的输出始终为1.
我做了一些关于1意味着什么的谷歌搜索,这意味着回调没有结束或根本没有被调用。
在我的情况下它会被调用,因为我收到了电子邮件。有人能指出我正确的方向吗?我一定错过了什么。
更新
当我用回调函数中的退出来杀死脚本时,我可以看到输出。但这可能不是合适的解决方案
答案 0 :(得分:0)
原因可能是这个动作是通过一些ajax调用的。在wordpress中,ajax默认返回函数结束前的die()函数。因此,如果我们不在自定义函数中指定die(),它将在我们的回调中追加数据1。 所以你必须在输出回显到浏览器之后调用die或exit,以防止返回和我们通过ajax调用的自定义函数中的其他数据。
希望此解决方案可以帮助您。