所以,我的网站涉及一个预订系统,流程如下:
- 客人选择预订产品的日期(地点)。
- 提交请求后,系统会向主机发送一条消息以供审核。
- 如果接受,我希望订单由客人支付。 // 我的问题在这里
我已成功创建订单。理想情况下,我希望能够将客人发送到他们的“购物车”页面,并附上他们所下的预订订单(仅在房东批准预订之后)。这样,除了主机最初的接受或拒绝之外,一切都可以由 WooCommerce 处理。
问题:
- 此流程开始时(步骤 1),我是否需要将订单添加到用户的购物车?如果是这样,在房东批准订单之前我如何禁用付款?
Code:
在初始预订页面:
$y_booking_order = wc_create_order();
$y_booking_order->add_product( get_product( $san_y_id ), $san_num_days);
$y_booking_order->calculate_totals();
$y_booking_order->update_status('on-hold');
update_post_meta($y_booking_order->id, '_arrival_date', $san_date_arr);
update_post_meta($y_booking_order->id, '_departure_date', $san_date_dep);
update_post_meta($y_booking_order->id, '_request_sender', $san_user_id);
update_post_meta($y_booking_order->id, '_customer_user', get_current_user_id());
// do I add to cart here? If so, how to stop guest from paying until after host approves?
到目前为止,订单创建后,我只是让主持人将订单状态从“暂停”更改为“待处理”。现在我只想让客人付钱...
想法?
如果您没有收集某种预授权,则状态应为“待处理”。
就发送发票而言,深入研究 WooCommerce 的代码并对其进行一些重组以削减脂肪会产生以下功能,这应该允许您以与您告诉它相同的方式以编程方式发送发票电子邮件编辑订单时从菜单发送发票:
function send_invoice_email($post_id) {
$order = wc_get_order($post_id);
wc_switch_to_site_locale();
do_action('woocommerce_before_resend_order_emails', $order);
// Ensure gateways are loaded in case they need to insert data into the emails.
WC()->payment_gateways();
WC()->shipping();
// Load mailer.
$mailer = WC()->mailer();
$email_to_send = 'customer_invoice';
$mails = $mailer->get_emails();
if (!empty($mails)) {
foreach ($mails as $mail) {
if ($mail->id == $email_to_send) {
$mail->trigger($order->get_id(), $order);
$order->add_order_note( sprintf( __('%s email notification manually sent.', 'woocommerce'), $mail->title), false, true);
}
}
}
do_action('woocommerce_after_resend_order_email', $order, $email_to_send);
wc_restore_locale();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)