关于Woocommerce支付网关的问题 .
我已经定制了一个支付网关来接受采购订单,并从插件中正确加载,然后按照ID的方式显示在结帐页面上;我认为这是一个非常好的开始 .
无论如何,我有一个非标准的表单条目(购买订单号),其ID类似于人们要填写,但我不知道如何将其附加到我的自定义支付网关,以便它显示在生成的管理员侧页面上 .
一切正常:
function payment_fields(){
if ( $description = $this->get_description() )
echo wpautop( wptexturize( $description ) );
global $woocommerce;
?>
<form class="form-horizontal" role="form" id="bv-form">
<fieldset>
<!-- Form Name -->
<legend>Purchase Order</legend>
<!-- Text input-->
<div class="form-group">
<label class="control-label" for="po_no">PO Number</label>
<div class="">
<input id="po_no" name="po_no" type="text" placeholder="" class="form-control input-md">
</div>
</div>
...
但是当我到达这里时,我不知道如何修改 process_payment( $order_id )
(或添加到 functions.php
的内容)以从支付字段中获取表单值 . 我看到有 $order->billingAddress1
等,我如何提交额外的几个表单字段以及订单,然后,我将如何访问它以从新创建的 WC_Order
中获取 po_no
?
-
WP:3.9.2
-
WC:2.1.11
谢谢你的帮助!
1 回答
如果您要创建自定义支付网关,那么您应该在其中实现
process_payment()
. 此代码可以访问支付表单提交的$_POST
变量,因此您可以将其称为:这听起来像你的问题,你可能没有实际编写自定义网关,而是尝试将自定义字段附加到订单 . 如果你想挂钩到另一个网关(如PayPal,Authorize.net等),你应该使用作为
WC_Order.payment_complete()
的一部分调用的WooCommerce动作挂钩,这是网关收集付款后调用的 . 这些操作是woocommerce_pre_payment_complete
,它在其他任何操作之前运行,并将订单ID作为参数,并且在设置了库存/状态/等之后woocommerce_payment_complete
.然后,您可以通过添加元框在“订单编辑”页面上显示此自定义字段 . 如果要使其可编辑,则需要挂钩
save_post
并将po_number
更改为输入 .