猿问

无法使用 PHP 和 Stripe 支付网关验证表单

我需要验证我使用 Stripe 支付网关定期支付的表单。我的代码如下。


<form method="post" action="charge.php" name="renew" onsubmit="return validate();">

<input type="radio" name="package" id="package" mode="normal" duration="30" text="1 Monat" value="29.90"> 29.90 € Pro Werbeanzeige-Laufzeit: 1 Monat<br>

<input type="radio" name="package" id="package" mode="normal" duration="60" text="2 Monate" value="49.90"> 49.90 € Pro Werbeanzeige-Laufzeit: 2 Monate<br>

<input type="radio" name="package" id="package" mode="normal" duration="90" text="3 Monate" value="59.90"> 59.90 € Pro Werbeanzeige-Laufzeit: 3 Monate<br>

<input type="radio" name="package" id="package" mode="recurring" duration="30" text="Monate" value="19.90"> 19,90 € Monate<br>

<input name="oid" type="hidden" value="<?=$oid;?>" />

<input name="mode" id="mode" type="hidden" value="" />

<input name="duration" id="duration" type="hidden" value="" />

<!--<input type="submit" name="makepayment" value="Pay" > -->

<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"

          data-key="<?php echo $stripe['publishable_key']; ?>"

          data-name="GOALSTART"

          data-description="1 Monate"

          data-panel-label="Abonnieren"

          data-label="PAY NOW"

          data-locale="auto">></script>

</form>

<script type="text/javascript">

  function validate(){

    console.log('hello');

    if (document.getElementById('package').checked) {

        //alert("checked submit form");

        return true;

    } else {

        alert("Unchecked form will not be submitted");

        return false;

    }

  }

</script>

在这里我需要,如果单选按钮没有被选中,那么表单将不会提交。但根据我的代码,它无法检查验证。


慕丝7291255
浏览 213回答 2
2回答

梦里花落0921

在 checkout.stripe.com 脚本周围添加一个 div。由于“立即付款”是动态生成的,因此您无法对其进行太多控制。所以你可以通过以下方法限制点击它。<!DOCTYPE html><html><head>&nbsp; <title></title>&nbsp; <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script></head><body><form method="post" action="charge.php" name="renew" onsubmit="validate();"><input type="radio" name="package" id="package-1" mode="normal" duration="30" text="1 Monat" value="29.90" required="true"> 29.90 € Pro Werbeanzeige-Laufzeit: 1 Monat<br><input type="radio" name="package" id="package-2" mode="normal" duration="60" text="2 Monate" value="49.90"> 49.90 € Pro Werbeanzeige-Laufzeit: 2 Monate<br><input type="radio" name="package" id="package-3" mode="normal" duration="90" text="3 Monate" value="59.90"> 59.90 € Pro Werbeanzeige-Laufzeit: 3 Monate<br><input type="radio" name="package" id="package-4" mode="recurring" duration="30" text="Monate" value="19.90"> 19,90 € Monate<br><input name="oid" type="hidden" value="<?=$oid;?>" /><input name="mode" id="mode" type="hidden" value="" /><input name="duration" id="duration" type="hidden" value="" /><!--<input type="submit" name="makepayment" value="Pay" > --><div class="checkout-part-wrapper"><script src="https://checkout.stripe.com/checkout.js" class="stripe-button"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data-key="<?php echo $stripe['publishable_key']; ?>"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data-name="GOALSTART"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data-description="1 Monate"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data-panel-label="Abonnieren"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data-label="PAY NOW"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data-locale="auto">></script></div></form><script type="text/javascript">&nbsp; jQuery('.checkout-part-wrapper').css('pointer-events', 'none');&nbsp; jQuery('input[type=radio][name=package]').change(function() {&nbsp; &nbsp; jQuery('.checkout-part-wrapper').css('pointer-events', 'auto');&nbsp; });</script></body></html>

慕莱坞森

改变这一行if&nbsp;(document.getElementById('package').checked)&nbsp;{到if&nbsp;(document.querySelectorAll('input[name=package]:checked').length)&nbsp;{
随时随地看视频慕课网APP
我要回答