Php WooCommerce以编程方式创建订单,并重定向到IFRAME内的付款
基于此,, 对于WooCommerce,对于自定义产品(使用UNI CPO 4插件),我试图通过编程方式创建一个onepage签出,包括产品页面上iframe中的付款页面 据我所见,大多数onepage签出插件不包括同一页面上的实际付款(iframe付款) 这就是我到目前为止所做的:Php WooCommerce以编程方式创建订单,并重定向到IFRAME内的付款,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,基于此,, 对于WooCommerce,对于自定义产品(使用UNI CPO 4插件),我试图通过编程方式创建一个onepage签出,包括产品页面上iframe中的付款页面 据我所见,大多数onepage签出插件不包括同一页面上的实际付款(iframe付款) 这就是我到目前为止所做的: 我已将[woocommerce\u checkout]快捷码添加到产品页面 在functions.php中,我绕过了“submitorder”submit按钮事件,将其附加到一个ajax函数,该函数创建订单并返回支
[woocommerce\u checkout]
快捷码添加到产品页面<div id="step-payment" class="checkout-step">
//payment method gateway form
</div>
//支付方式网关表单
你知道为什么吗?我怀疑这可能与nonce没有传递到IFRAME有关。也许有人对如何以更好的方式实现这一点有很好的想法。
这就是我目前所拥有的
(functions.php)
jQuery(函数($){
$(document.body).on(“submit”,“form.checkout”,函数(evt){
evt.preventDefault();
var formArr=$('form.checkout').serializeArray();
$.ajax({
键入:“POST”,
url:“/wp admin/admin ajax.php”,
contentType:“application/x-www-form-urlencoded;charset=UTF-8”,
enctype:“多部分/表单数据”,
数据:{
“操作”:“ajax_顺序”,
“字段”:formArr,
“用户id”:,
},
成功:功能(结果){
var res=$.parseJSON(结果);
$(“#内联支付”).empty().append(“”);
$(“#内联签出”).toggleClass(“滑入隐藏”);
},
错误:函数(错误){
}
});
});
});
因此,我最终设法让它工作起来。问题在于支付网关。在WC order_receipt.php模板中
<?php do_action( 'woocommerce_receipt_' . $order->get_payment_method(), $order->get_id() ); ?>
调用测试会话参数的网关类,该参数定义是否在iframe中完成支付,如果是,则退出该类。我必须将此会话参数更改为false
<div id="inline-checkout">
<!-- this is where the order form checkout shortcode in appended -->
<?php define( 'WOOCOMMERCE_CHECKOUT', true ); ?>
</div>
<div id="inline-payment">
<!-- this is where the inline payment iframe happens -->
</div>
<?php do_action( 'woocommerce_receipt_' . $order->get_payment_method(), $order->get_id() ); ?>