仮想製品を販売する WooCommerce ストア Web サイトに取り組んでいます。顧客がすべてのチェックアウト データを入力し、最後に 2 つのオプションから選択できるカスタム チェックアウト ページを作成しました。
- オプション 1 -後で支払う: 顧客と管理者にのみメールを送信します。
- オプション 2 -今すぐ支払う: PayU支払いゲートウェイを使用する必要があります。
ここで問題があります。
ドキュメントが非常に貧弱であるため、適切なチェックアウト ページに移動するコードが見つかりません。チェックアウトに進む
機能
を使用しようとしましたが、クリックしたのと同じ Web サイトに戻ります。
エコーしwc_get_checkout_url()
ても何も返されません。
payment.php のコードをいくつか使用してみましたが、結果は次のようになりました。
<div class="col-md-12 text-center col-form">
<?php
if ( ! is_ajax() ) {
do_action( 'woocommerce_review_order_before_payment' );
}
if ( WC()->cart->needs_payment() ) : ?>
<ul class="wc_payment_methods payment_methods methods">
<?php
echo "ekhm". esc_url( wc_get_checkout_url()) //testing;
if ( ! empty( $available_gateways ) ) {
foreach ( $available_gateways as $gateway ) {
wc_get_template( 'checkout/payment-method.php', array( 'gateway' => $gateway ) );
}
}; ?>
</ul>
<?php endif; ?>
<!-- <button class="submit-reservation materialbutton">Payment and reserwavion</button>
<button id="reservation-button" class="submit-reservation materialbutton" id="just-reserve">Just Reserve</button> -->
</div>
しかし、以前の試みと同様に、まったく機能しませんでした。
Web サイトでは、クリック時に起動するカスタムの予約 ajax 関数を使用しています。
function addToCart(p_id) {
var getAjax = $.get('../?post_type=product&add-to-cart=' + p_id, function(){updateCart(1); notify("Added!");});
} //updateCart is for display only
これを機能させる正しい方法はありますか?
カスタム チェックアウト ページ全体のコードは次のとおりです。
<?php
/* Template Name: reservation*/
get_header();
sm_small_slider(get_the_title());?>
<script type="text/javascript">
var templateUrl = '<?= get_bloginfo("template_url"); ?>';
</script>
</header>
<section id="reservation">
<div class="container">
<ul class="resevation-order-list">
<div class='row product-list'> <!-- first step: the cart -->
<div class="col-md-3 text-right col-description">
<h4>1) Twoje Zabiegi</h4>
<p>Przed wyborem terminu, upewnij się czy wszystko się zgadza</p>
</div>
<div class="col-md-9 text-left col-form form-cart">
<div class="form-content">
<?php
//THE CART IS PRINTED HERE
global $woocommerce;
if($items = $woocommerce->cart->get_cart()){
?>
<table class="treatments-table table">
<tr class="table-heading">
<th>Usługa</th>
<th>Czas trwania</th>
<th>Cena</th>
<th></th>
</tr>
<?php
foreach($items as $item => $values) {
$_product = $values['data']->post;
$price = get_post_meta($values['product_id'] , '_price', true);
?>
<tr>
<td class="name mail-cc"><?php echo $_product->post_title; ?> - <?php echo $values['quantity']; ?></td>
<td class="mail-cc"><?php echo $_product->post_excerpt;?></td>
<td class="mail-cc"><?php echo $price * $values['quantity']; ?>zł</td>
<td><img title="usuń z listy" onClick="removeFromCart(<?php echo $values['product_id'];?>)" src="<?php echo get_template_directory_uri();?>/img/navigation/close.png" /><a class="remove-from" href="javascript:removeFromCart(<?php echo $values['product_id'];?>)">USUŃ Z LISTY</p></td>
</tr>
<?php } ?>
<tr>
<td class="name"><b>Suma</b></td>
<td></td>
<td><?php echo WC()->cart->get_cart_total(); ?></td>
<td></td>
</tr>
</table>
<?php }else{
echo "<p style='opacity: 0.5'>KOSZYK JEST PUSTY </p>";}?>
</div>
</div>
</div>
<div class="row pick-date">
<div class="col-md-3 text-right col-description">
<!-- here the customer picks the date and day-time of his reservation -->
<h4>2) Wybierz Termin</h4>
<p>Wybierz w kalendarzu dzień, oraz porę dnia Twojej Rezerwacji</p>
</div>
<div class="col-md-9 text-left col-form">
<div id="calendar">
<div class="calendar-container clearfix">
</div>
</div>
<div class="calendar-nav-left">
<img src="<?php echo get_template_directory_uri();?>/img/navigation/arrow_l.png" class="calendar-arrow" />
</div>
<div class="calendar-nav-right">
<img src="<?php echo get_template_directory_uri();?>/img/navigation/arrow.png" class="calendar-arrow" />
</div>
</div>
</div>
<div class="row personal-data-form">
<div class="col-md-3 text-right col-description">
<!-- CONTACT FORM -->
<h4>3) Dane Osobowe</h4>
<p>Prosimy o podanie swoich dokładnych danych osobowych</p>
<p>Wszystkie pola są wymagane</p>
</div>
<div class="col-md-9 text-left col-form">
<form id="reservation-form" class="contact-form">
<input type="hidden" id="adminname" value="<?php echo get_bloginfo('admin_email'); ?>"/>
<input required id="firstname" type="text" placeholder="Imię"></input>
<input required id="lastname"type="text" placeholder="Nazwisko"></input>
<input required type="email" placeholder="Email" id="email"></input>
<input required type="text" id="phonenum" placeholder="Numer telefonu"></input>
<input required type="text" id="city" placeholder="Miejscowość"></input>
<input required type="text" id="street" placeholder="Ulica"></input>
<input required type="text" id="address" placeholder="Numer domu/Mieszkania"></input>
<input required type="checkbox" name="accept" value="Accept" id="akceptuje-regulamin"> Akceptuje <a href="http://mobilnestudio16.pl/regulamin/" class="purple">regulamin</a><br>
</form>
<p>Działamy na terenie Krakowa i okolic</p>
</div>
</div>
<div class="row submit-and-pay">
<div class="col-md-12 text-center col-description">
<h4>Płatność i Rezerwacja</h4>
<p>Kliknij przycisk by zaakceptować dane i przejść do strony płatności</p>
<!-- <p>Płatność z PayU</p> -->
</div>
<div class="col-md-12 text-center col-form">
<?php
if ( ! is_ajax() ) {
do_action( 'woocommerce_review_order_before_payment' );
}
if ( WC()->cart->needs_payment() ) : ?>
<ul class="wc_payment_methods payment_methods methods">
<?php
echo esc_url( wc_get_checkout_url() );
if ( ! empty( $available_gateways ) ) {
foreach ( $available_gateways as $gateway ) {
wc_get_template( 'checkout/payment-method.php', array( 'gateway' => $gateway ) );
}
}; ?>
</ul>
<?php endif;?>
<!-- This button has been commented out due to website being live -->
<!-- But its the button I would like to make the page go to PayU checkout for payments-->
<!-- <button class="submit-reservation materialbutton">Płacę i rezerwuję</button> -->
<button id="reservation-button" class="submit-reservation materialbutton" id="just-reserve">Rezerwuję</button>
</div>
</div>
</ul><!--!RESERVATION ORDER LIST-->
</div>
</section>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/scripts/calendar.js"></script>
<?php get_footer(); ?>
PayUプラグインはすでにセットアップおよび構成されています。
ウェブサイトはこちら(ポーランド語)