php - Wordpress 表单操作不适用于 wordpress 中的页面链接,用于在 wordpress 中集成支付网关的永久链接平原
问题描述
我正在集成条带连接付款表格。在表单中,我有一个定义的表单操作,其中下一页的 id 作为获取下一页 url 的页面链接。现在我已经为页面分配了一个模板页面。
此外,我的永久链接正在分配给页面的普通 Wordpress 模板页面上工作,并且在提交表单时,为下一页提供的操作不起作用。它显示错误:page not found
.
如果通过添加将永久链接设置为自定义,/index.php/%postname%
则页面视图适用于除表单操作之外的所有操作,例如:表单提交后未找到https://siteurl/index.php/post-name 。如果我重新输入 url,那么成功页面会正常运行。
<?php /*Template Name:Stripe*/get_header();?>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
//set your publishable key
Stripe.setPublishableKey('pk_test_uFOdE1YPIXhbssFt1FwH9RGQ');
//callback to handle the response from stripe
function stripeResponseHandler(status, response) {
if (response.error) {
//enable the submit button
$('#payBtn').removeAttr("disabled");
//display the errors on the form
$(".payment-errors").html(response.error.message);
} else {
var form$ = $("#paymentFrm");
//get token id
var token = response['id'];
//insert the token into the form
form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");
//submit form to the server
form$.get(0).submit();
}
}
$(document).ready(function() {
//on form submit
$("#paymentFrm").submit(function(event) {
//disable the submit button to prevent repeated clicks
$('#payBtn').attr("disabled", "disabled");
//create single-use token to charge the user
Stripe.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, stripeResponseHandler);
//submit from callback
return false;
});
});
paymentRequest.on('token', function(ev) {
// Send the token to your server to charge it!
fetch('/charges', {
method: 'POST',
body: JSON.stringify({token: ev.token.id}),
headers: {'content-type': 'application/json'},
})
.then(function(response) {
if (response.ok) {
// Report to the browser that the payment was successful, prompting
// it to close the browser payment interface.
ev.complete('success');
} else {
// Report to the browser that the payment failed, prompting it to
// re-show the payment interface, or show an error message and close
// the payment interface.
ev.complete('fail');
}
});
});
</script>
<div class="container">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<h1></h1>
<!-- display errors returned by createToken -->
<span class="payment-errors"></span>
<!-- stripe payment form -->
<form action="<?php echo esc_url( get_permalink(376) ); ?>" method="POST" id="paymentFrm">
<p>
<label>Name</label>
<input type="text" name="name" size="50" />
</p>
<p>
<label>Email</label>
<input type="text" name="email" size="50" />
</p>
<p>
<label>Card Number</label>
<input type="text" name="card_num" size="20" autocomplete="off" class="card-number" />
</p>
<p>
<label>CVC</label>
<input type="text" name="cvc" size="4" autocomplete="off" class="card-cvc" />
</p>
<p>
<label>Expiration (MM/YYYY)</label>
<input type="text" name="exp_month" size="2" class="card-expiry-month"/>
<span> / </span>
<input type="text" name="exp_year" size="4" class="card-expiry-year"/>
</p>
<button type="submit" id="payBtn">Submit Payment</button>
</form>
</div>
<div class="col-md-3"></div>
</div>
</div>
<?php get_footer();?>
解决方案
推荐阅读
- ssis - 如何使用表达式生成器创建带有日期的文件名,即使是每月的第一天
- firebase - 如何运行基于客户端平台的firebase云功能?
- swift - iOS 13 上的@StateObject
- vb.net - 用 vb net 改变下拉列表的值
- typescript - 如何在 Typescript 中强制执行多个参数的类型?
- python - Python - 将字节数组转换为二进制数据,然后选择位
- r - 通过索引合并任意数量的不同长度的 xts 对象
- ssh - 使用 ssh 到 oracle-solaris-114-sru29 的远程连接不使用 -o 选项
- visual-studio-code - 在 Visual Studio 代码 1.53.2 版本中首次显示 webview 时是否未触发 webviewPanel.onDidChangeViewState?
- c++ - 打开 CV:为 Mac M1 编译时未定义 cv::LineIterator