如何触发woocommerce回调函数?

时间:2019-01-06 01:02:38

标签: php wordpress woocommerce

我正在尝试通过访问浏览器http://localhost:90/wordpress-payment-demo/wc-api/callback_handler/中的回调URL来测试我的回调函数是否正常,但是我一直保持为-1。这是我的回调函数。

$this->id = 'paymentplugin';

add_action( 'woocommerce_api_wc_' . $this->id , array( $this, 'callback_handler' ) );

function callback_handler() { 
    header( 'HTTP/1.1 200 OK' );
    echo "callback";
    die();
}

我还尝试使用Postman将其发布到URL,并且收到状态代码400错误的请求。

1 个答案:

答案 0 :(得分:0)

这看起来像是自定义WooCommerce付款网关的网钩。在这种情况下,您可能不需要在_wc_函数中使用add_action

示例:

$this->id = 'paymentplugin';

add_action( 'woocommerce_api_' . $this->id , array( $this, 'webhook' ) );

function webhook() { 
    header( 'HTTP/1.1 200 OK' );
    echo "callback";
    die();
}

您还不需要结束执行,因为这是由WooCommerce完成的,因此您可能希望删除die()函数:

$this->id = 'paymentplugin';

add_action( 'woocommerce_api_' . $this->id , array( $this, 'webhook' ) );

function webhook() { 
    header( 'HTTP/1.1 200 OK' );
    echo "callback";
}

要考虑的另一件事是标题。我不知道是否需要发送它们,但是我最近创建了一个自定义网关,该网关仅在Webhook中包含此代码,并且可以正常运行:

function webhook() {
  $order_id = isset($_GET['order_id']) ? $_GET['order_id'] : null;
  $order = wc_get_order( $order_id );
  $order->payment_complete();
  wc_reduce_stock_levels($order_id);
}

付款提供商基本上会发送一个IPN,其中包含我先前发送的订单ID,因此我可以确认订单已付款。

这是我最近创建的自定义网关的链接,希望它能对您有所帮助:

https://github.com/usainicola/weldpay-woocommerce