支付插件-使用 woocommerce_api_(action) Action 钩子添加自定义 URL 到WooCommerce

WooCommerce的 woocommerce_api_(action)  Action 钩子可以让插件添加一个自定义回调到一个 URL 上面,当这个 URL 被访问的时候,自定义回调中的函数或方法就会执行,这个 API 在 WooCommerce支付网关中会经常用到,除了支付网关,当WooCommerce与第三方服务交互需要接收第三方服务返回的数据时,我们也需要用到这个 API。关于这个 API 的详细信息可参考 WC_API 类文档。

eg byli

 //http://yoursite.com/?wc-api=wc_gateway_youpay

$this->return_url = str_replace ( 'https:', 'http:', add_query_arg ( 'wc-api', 'WC_Gateway_Youpay', home_url ( '/' ) ) );

add_action( 'woocommerce_api_wc_gateway_youpay', array( $this, 'check_ipn_response' ) );//設定鈎子return_url

$returnURL =  $this->return_url;//plugins_url('class-wc-gateway-youpay.php/validation',__FILE__);

回调 URL 的形式

在WooCommerce2.0 以前,我们可以用类似下面的网址访问自定义回调 URL。

http://yoursite.com/?wc-api=CALLBACK

在WooCommerce2.0 以后,  除了上面带参数的 URL,我们还可以以静态化的方式访问我们的回调。

http://yoursite.com/wc-api/CALLBACK/

添加一个自定义 URL

我们可以通过类似下面的代码添加一个自定义回调 URL:

add_action( 'woocommerce_api_callback', 'callback_handler' );

注意上面的钩子名称 “woocommerce_api_callback” 中的 “callback” 字符,这个就是我们自定义回调,独一无二的名称,会显示在 URL 参数里面,获取自定义回调 URL 的时候也需要用到这个名称。

执行完回调里面定义的操作之后,WooCommerce会退出操作,当然,如果需要,我们也可以在退出操作之前跳转到其他 URL。

获取自定义回调 URL

我们可以通过一个 WC() 实例的一个方法获取上面自定义自定义的回调 URL。

WC()->api_request_url( 'wc_ezship_send_order' )

我们可以在开发 WooCommerce支付网关或者其他服务的时候,通过上面的方法来获取自定义回调 URL 的地址。

posted @ 2022-08-27 18:02  也许明天  阅读(358)  评论(0编辑  收藏  举报