为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕丝7291255 2021-12-03 15:36:10
我需要验证我使用 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>在这里我需要,如果单选按钮没有被选中,那么表单将不会提交。但根据我的代码,它无法检查验证。
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

在 checkout.stripe.com 脚本周围添加一个 div。由于“立即付款”是动态生成的,因此您无法对其进行太多控制。所以你可以通过以下方法限制点击它。


<!DOCTYPE html>

<html>

<head>

  <title></title>

  <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"

          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>

</div>

</form>

<script type="text/javascript">

  jQuery('.checkout-part-wrapper').css('pointer-events', 'none');

  jQuery('input[type=radio][name=package]').change(function() {

    jQuery('.checkout-part-wrapper').css('pointer-events', 'auto');

  });

</script>

</body>

</html>


查看完整回答
反对 回复 2021-12-03
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

改变这一行

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

if (document.querySelectorAll('input[name=package]:checked').length) {


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 212 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信