我是否需要创建2个表单来集成付款处理API?
问题描述:
我正在关注Braintree Payments docs。要设置信用卡付款方式,它说,形式的代码如下所示:我是否需要创建2个表单来集成付款处理API?
<form id="checkout" action="/your/server/endpoint" method="post">
<input data-braintree-name="number" value="4111111111111111">
<input data-braintree-name="expiration_date" value="10/20">
<input type="submit" id="submit" value="Pay">
</form>
,但我已经有一个形式设立一个获取所有其他必要的输入(它基本上是一个问答网站向用户收费)并将其提交给数据库。我会在哪里放置Braintree文档给出的表单代码?你可以在另一个表单中嵌套表单吗?这是推荐的做法吗?我是否应该将表格分开保存,并在另一页面上处理付款?理想情况下,我想在整个页面上完成整个流程,如果他们选择了该方法,可能会提取信用卡付款方式表单。
答
完全披露:我在布伦特里工作。如果您有任何其他问题,请随时联系support。
根据working HTML5 specification,<form>
元素不应该包含其他<form>
元素,所以嵌套表单实际上在技术上将是无效的HTML。考虑到这一点,我们可以放心地说这不是建议的做法。 :)
但是,页面可以包含多个表单。请记住,由于表单的本质(它将数据发送到端点并加载该端点),您将无法同时从同一页提交多个表单。常见模式是使用专门用于以单一形式收集付款数据的结账页面。
如果您只想使用一个页面和一个表单,Braintree可以适应这种情况。 Braintree数据输入元素不一定是表单中的唯一元素。例如,您可以包含询问用户姓名,出生地或其他任何内容的输入元素。当您将braintree.setup
指向您的表单时,它只会关注您标记为“data-braintree-name”的输入字段,并且所有正常的命名字段仍将位于您的$_POST
变量中。