我是支付网关集成的新手 . 我了解到,订单可以通过编程方式创建,无需在woocommerce中添加产品并完成 .
现在的问题是,一旦点击提交订单按钮,我不确定如何自动化付款流程 .
目前,当提交订单时,我以编程方式将订单创建到woocommerce中,并期望用户重定向到所选的(当前默认为billPlz)支付网关页面以进行支付 .
我已经安装了woocomerce和billPlz支付网关 . WC()->payment_gateways->get_available_payment_gateways()
确实给我回了账单.Plz .
但是,付款网关中未显示付款表格,以便用户将付款提交到billPlz中 .
我看到'success'消息并重定向到 mydomain/order-received/72?key=wc_order_5a0f8f3ead251
我想这是谢谢你的页面?
如何在创建订单时重定向到支付网关?
订单(我自己的,不是来自woocomerce)
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="POST">
<input type="text" name="action" value="createOrder">
<input type="text" name="booking_id" value="123">
<input type="text" name="customer_id" value="1006">
<input type="text" name="order_amount" value="180.00">
<input type="text" name="order_status" value="1">
<input type="submit" value="PROCEED TO MAKE PAYMENT">
</form>
创建订单功能
public function createOrder()
{
$product_id = 222;
$quantity = 1;
$args = array(
'variation' => array( 'attribute_color' => 'red'),
'status' => 'complete',
'customer_id'=> 23
);
$order = wc_create_order();
$order_id = trim(str_replace('#', '', $order->get_order_number()));
$order->add_product( get_product( $product_id ), $quantity, $args );
$order->set_status( $args['status'] );
$order->set_customer_id( is_numeric( $args['customer_id'] ) ? absint( $args['customer_id'] ) : 0 );
$order->set_total( ($discount['amount']/100) , 'order_discount'); // not pennies (use dollar amount)
update_post_meta( $order_id, '_payment_method', 'billplz' );
update_post_meta( $order_id, '_payment_method_title', 'Billplz Payment Gateway' );
$order->calculate_totals();
// Process Payment
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
$result = $available_gateways[ 'billplz' ]->process_payment( $order_id );
// Redirect to success/confirmation/payment page
if ( $result['result'] == 'success' ) {
$result = apply_filters( 'woocommerce_payment_successful_result', $result, $order_id );
$return_url = $available_gateways[ 'billplz' ]->get_return_url( $order );
wp_redirect($return_url);
exit;
}
}
1 回答
您可以使用以下订单功能为订单标签页下的“我的帐户”页面中显示的未付订单生成付款网址 .