php - 无法使用 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>
在这里我需要如果没有选中单选按钮,那么表单将不会提交。但根据我的代码,它无法检查验证。
解决方案
在 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>
推荐阅读
- swift - Wordpress swift builder框架轮播箭头拆分
- hibernate - Hibernate插入没有主键的记录
- java - Java 10 上的 Swing 问题
- php - 如何排除两个日期范围之间的周末
- xquery - 如何在 XQuery 中尽量减少 FOR 循环的使用?
- javascript - 调整列的大小,同时从右侧为元素设置动画
- javascript - 如何防止机器人和垃圾邮件 API 请求?
- javascript - 如何使用 AsyncStorage 在 React Native 中隐藏登录屏幕
- r - R data.table:melt() 自动转换为大写字母
- mysql - 尝试选择所有内容,但不包括 ID 之间的内容不起作用