在Woocommerce 3中获取PayTrace付款网关的订单自定义元数据

时间:2018-06-28 17:54:15

标签: php wordpress woocommerce payment-gateway orders

我使用WooCommerce的插件“结帐字段编辑器”设置了3个自定义结帐字段。我已对其进行了设置,以使这些字段显示在电子邮件和订单屏幕上,但是我还需要将这些字段中的信息也发送到PayTrace付款处理器。与PayTrace插件开发人员交谈后,我具有用于添加发送到PayTrace的其他信息订单信息的代码(下面的链接),但是我不确定如何正确/安全地检索自定义结帐字段数据,以便随后将其包括在内。

用于在发送到PayTrace的信息中添加其他数据的代码。 https://gist.github.com/vanbo/dc3d9bc8660a7de33aafb44dde3033fa

1 个答案:

答案 0 :(得分:0)

通常,Woocommerce Order元数据通常总是在前加下划线字符。例如,帐单名meta_key将是_billing_first_name

因此,您需要首先在 wp_postmeta 表中查找最后的Woocommerce订单(post_id,即订单ID),以获取正确的必要在以下代码中使用的元键

假设您的自定义元键是:

  • _event_code用于事件代码
  • _event_date for 活动日期
  • _event_name事件名称

完成后,您将在以下代码中获取并设置该数据,例如:

add_filter( 'wc_paytrace_transaction_request', 'custom_data_paytrace_transaction_request', 10, 5 );
function prefix_filter_paytrace_transaction_request( $request_parameters, $order, $amount, $is_subscription, $is_paid_with_profile ) {
    $event_code = $order->get_meta( '_event_code', true );
    if( ! empty($event_code) )
        $request_parameters['event_code'] = $event_code;

    $event_date = $order->get_meta( '_event_date', true );
    if( ! empty($event_date) )
        $request_parameters['event_date'] = $event_date;

    $event_name = $order->get_meta( '_event_name', true );
    if( ! empty($event_name) )
        $request_parameters['event_name'] = $event_name;

    return $request_parameters;
}

您应该检查$request_parameters的阵列键是否正确使用了。

代码进入活动子主题(或活动主题)的function.php文件中。应该可以。