WooCommerce扩展-重定向到“付款”端点时适用的钩子

时间:2019-04-26 12:05:11

标签: php wordpress woocommerce hook-woocommerce

我正在集成WooCommerce付款网关插件,并且需要将网关嵌入到iframe中。我将下面的代码重定向到Pay(默认为/order-pay路由)端点,该端点要包括iframe,以便继续进行付款过程。

有人知道我在其中加载必要的JS脚本以初始化订单付款模板上的iframe的适用钩子吗?

function process_payment( $order_id ) {
  global $woocommerce;
  $order = new WC_Order( $order_id );
  $order->update_status( 'pending-payment', __( 'Awaiting payment', 'some-domain' ) );

  return array(
    'result'   => 'success',
    'redirect' => $order->get_checkout_payment_url( $on_checkout = true )
  );
}

1 个答案:

答案 0 :(得分:0)

我找不到用于order-pay页面的WooCommerce挂钩。我决定要做的是为wp_enqueue_scripts添加一个动作,并且仅在适用的路由处于活动状态时才加载脚本。

在我的插件构造函数中:

function __contstruct {
  // other stuff
  add_action( 'wp_enqueue_scripts', array( $this, 'load_my_order_pay_scripts' ) );
}

加载脚本的功能:

public function load_my_order_pay_scripts() {
  if( !is_wc_endpoint_url( 'order-pay' ) ) return;

  global $wp;
  $order_id = $wp->query_vars['order-pay'];
  $order = wc_get_order( $order_id );

  wp_enqueue_script( 'my-js-sdk', 'http://my.cdn.com/my-js-sdk.js', true );
  wp_register_script( 'my-plugin-script', plugin_dir_url( __FILE__ ) . '/js/my-plugin-script.js', true );
  wp_localize_script( 'my-plugin-script', 'params', $this->script_parameters, true ); // I need to pass my script some data
  wp_enqueue_script( 'my-plugin-script', array('my-js-sdk'), true ); // my plugin's JS is dependent on my SDK
}