Автоматическая загрузка формы RazorPay при загрузке страницы без нажатия кнопки «Оплатить сейчас»

Я пытаюсь интегрировать Razorpay в свое приложение. Вот код, который управляет загрузкой модели оплаты при нажатии кнопки «Оплатить сейчас». Я хочу сделать модальную загрузку при загрузке страницы вместо нажатия кнопки. Я попытался отправить форму через javascript, чтобы увидеть, загружает ли это модальное окно, но это не работает.

Вот код:

<form action="verify.php" method="POST" id="gateway">
  <script
    src="https://checkout.razorpay.com/v1/checkout.js"
    data-key="<?php echo $data['key']?>"
    data-amount="<?php echo $data['amount']?>"
    data-currency="INR"
    data-name="<?php echo $data['name']?>"
    data-image="<?php echo $data['image']?>"
    data-description="<?php echo $data['description']?>"
    data-prefill.name="<?php echo $data['prefill']['name']?>"
    data-prefill.email="<?php echo $data['prefill']['email']?>"
    data-prefill.contact="<?php echo $data['prefill']['contact']?>"
    data-notes.shopping_order_id="3456"
    data-order_id="<?php echo $data['order_id']?>"
    <?php if ($displayCurrency !== 'INR') { ?> data-display_amount="<?php echo $data['display_amount']?>" <?php } ?>
    <?php if ($displayCurrency !== 'INR') { ?> data-display_currency="<?php echo $data['display_currency']?>" <?php } ?>
  >
    document.getElementById("gateway").submit(); // Not working
  </script>
  <!-- Any extra fields to be submitted with the form but not sent to Razorpay -->
  <input type="hidden" name="shopping_order_id" value="3456">
</form>

Однако я также заметил, что форма действует на страницу verify.php, поэтому, если форма будет отправлена, она перейдет на ту страницу, где я просто хочу загрузить модальное окно оплаты. Следовательно, то, что я пробовал, может просто не быть решением.


person Shreyansh Kashyap    schedule 08.06.2020    source источник


Ответы (3)


Я нашел решение. Пишу, может кому пригодится в будущем:

В razorpay/checkout/automatic.php (or manual.php) поместите это сразу после открывающего элемента <form>:

<script>
  $(window).on('load', function() {
    $('.razorpay-payment-button').click();
  });
</script>
person Shreyansh Kashyap    schedule 08.06.2020
comment
откуда вы взяли файл: razorpay/checkout/automatic.php (или manual.php)? - person retro_coder; 02.11.2020

Прикрепите событие загрузки к скрипту и смоделируйте щелчок в обработчике

<script>
  function loadPaymentModal() {
    const elem = document.getElementsByClassName('razorpay-payment-button')[0];
    elem.click();
  }
</script>
<form action="verify.php" method="POST" id="gateway">
  <script onLoad="loadPaymentModal()" src="https://checkout.razorpay.com/v1/checkout.js"
    data-key="<?php echo $data['key']?>" 
    data-amount="<?php echo $data['amount']?>" 
    data-currency="INR"
    data-name="<?php echo $data['name']?>"
    data-image="<?php echo $data['image']?>"
    data-description="<?php echo $data['description']?>" 
    data-prefill.name="<?php echo $data['prefill']['name']?>"
    data-prefill.email="<?php echo $data['prefill']['email']?>"
    data-prefill.contact="<?php echo $data['prefill']['contact']?>" 
    data-notes.shopping_order_id="3456"
    data-order_id="<?php echo $data['order_id']?>"
    <?php if ($displayCurrency !=='INR' ) { ?> data - display_amount="<?php echo $data['display_amount']?>" <? php } ?>
    <? php if ($displayCurrency !== 'INR') { ?> data - display_currency="<?php echo $data['display_currency']?>" <? php } ?>
  >
    </script>
  <!-- Any extra fields to be submitted with the form but not sent to Razorpay -->
  <input type="hidden" name="shopping_order_id" value="3456">
</form>
person Mayank    schedule 11.07.2021

<script src="{{url('/')}}/frontendtheme/js/plugins/jquery-3.3.1.min.js"></script>
<script>
    $(window).on('load', function() {
        jQuery('#gateway').submit();
    });
</script>

Примечание: используйте папку с файлами min.js в источнике скрипта

person Gourab Mal    schedule 25.03.2021