【问题标题】:Callback_handler won't fire WooCommerceCallback_handler 不会触发 WooCommerce
【发布时间】:2014-07-26 19:01:13
【问题描述】:

我正在为 WooCommerce 构建一个支付网关,其中支付发生在一个异地 URL 中。我需要该页面能够向 WooCommerce 插件发送消息,而“回调” URL 确实是我所需要的。

WooCommerce 似乎有这个,但我无法让它工作。你应该能够ping通:

http://yoursite/wc-api/WC_your_gateway

然后你应该添加 add_action('woocommerce_api_callback', 'callback_handler'); 然后它应该触发这样的功能 公共函数 callback_handler() {}

但是当我转到那个 URL 时,我看到的只是页面上的 1 - 我的处理程序应该重定向到另一个页面(这就是我设置它的目的,以使其显而易见)。如果有人有这个工作的例子,我会喜欢的。我已经尝试将 add_action 和处理函数放在很多地方,但没有运气。

【问题讨论】:

    标签: php wordpress woocommerce payment-gateway


    【解决方案1】:

    我遇到了同样的问题,所以,这对我有用:

    class WC_mygateway extends WC_Payment_Gateway {
      public function __construct() {
        //'woocommerce_api_'.strtolower(get_class($this)) will result in 'woocommerce_api_wc_mygateway'
        add_action('woocommerce_api_'.strtolower(get_class($this)), array(&$this, 'handle_callback'));
      }
      function handle_callback() {
        //Handle the thing here!
      }
    }
    
    function woocommerce_mygateway_add_gateway( $methods ) {
      $methods[] = 'WC_mygateway';
      return $methods
    }
    add_filter( 'woocommerce_payment_gateways', 'woocommerce_mygateway_add_gateway');
    

    确保您没有遗漏任何这些细节,否则它将无法正常工作。您也可以使用http://example.com/?wc-api=wc_mygatewayhttp://example.com/wc-api/wc_mygateway 调用它

    希望这对每个遇到此问题的人都有帮助!

    【讨论】:

    • 另外,必须使用函数名'handle_callback',不能重命名。浪费我大约五个小时......
    【解决方案2】:

    我也有同样的问题。尝试添加退出;或 wp_die();在回调函数的末尾。

    这对我有用。

    【讨论】:

      【解决方案3】:

      您是否尝试过使用http://yoursite/wc-api/WC_your_gateway/(在末尾添加斜杠)?

      另外,add_action 应该是“woocommerce_api_{class_name}”而不是“woocommerce_api_callback”。因此,对于您的示例,它应该是“woocommerce_api_wc_your_gateway”。

      【讨论】:

        猜你喜欢
        • 2016-03-23
        • 2019-08-07
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 2016-02-10
        • 2015-11-25
        相关资源
        最近更新 更多