php - 如何触发woocommerce回调函数?

标签 php wordpress woocommerce

我试图通过访问浏览器中的回调 URL 来测试我的回调函数是否有效 http://localhost:90/wordpress-payment-demo/wc-api/callback_handler/但我一直得到-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 个错误请求的状态代码。

最佳答案

这看起来像是自定义 WooCommerce 支付网关的 webhook。在这种情况下,您可能不需要 _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);
}

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

这是我最近创建的自定义网关的链接,希望它可以帮助:

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

关于php - 如何触发woocommerce回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54057758/

相关文章:

ios - WordPress iOS API

jquery - 清除联系表 7 (Wordpress) 中的字段

javascript - 使用 javascript 过滤表格

php - 如何通过php脚本执行.exe程序

Javascript 文本调整大小问题

php - 在 WooCommerce Checkout 上为每种产品添加数量输入字段

wordpress - WooCommerce 中的圆形购物车小计

php - 如何在 Wordpress 的 Woocommerce 中禁用模板 Hook 的操作?

php - MySql 和 Php 与 xcode

php - HHVM 或 PHP5 Zend 正在运行吗?