我正在集成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 )
);
}
答案 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
}