【发布时间】:2015-11-04 11:49:44
【问题描述】:
我正在尝试使用 Braintree 中的 dropin form,但它会产生奇怪的行为。
我可以成功地将表单放置在视图中:
<form id="createTransactionForm" method="post" action="#">
<div id="payment-form"></div>
<input type="submit" value="Test - Pay">
</form>
<script>
var braintreeToken = @Html.Raw(Json.Encode(Model.brainTreeToken));
braintree.setup(
braintreeToken,
"dropin", {
container: "payment-form"
});
...
结果如下:
他们在documentation(第 3 段)中声明 braintree.js will add a hidden input named payment_method_nonce to your form。
在我的控制器上,我获得了捕获表单集合的操作方法,并且表单集合中有一个 payment_method_nonce 键,其值为空字符串,但没有其他键,这里没有捕获其他表单字段。如上图所示,我期待的是卡号和到期日期。
使用检查器,我看到 Braintree 插件创建了一个带有嵌套表单的 HTML 结构:
我的问题是,如何使用braintree dropin 表单并在action 方法中捕获所有表单输入值?
编辑
好的,多亏了@MikeMiller,我了解到我不需要在控制器方法中捕获 CC 值,只需要从它们生成的随机数字符串即可。但是,我得到一个空字符串。
根据他的建议,我尝试在表单中添加 action 属性的特定值:
<form id="createTransactionForm" method="post" action="@Url.Action("MyMethod", "MyController")">
但结果是一样的,nonce 是一个空字符串。
【问题讨论】:
-
是的,我遇到了 null
payment_method_nonce的问题。您不应该看到任何卡详细信息来处理支付服务器端,您需要的只是 nonce 值。这代表了 Braintree 的付款方式,因此当您发送此信息时,他们会获取信用卡详细信息或在下拉表单中输入的任何内容。 -
嗯,我正在使用取自 here 的伪造/测试信用卡值,也许这就是 nonce 作为空字符串返回的方式?
-
只要表单将 CC 值验证为 OK,就不会出现问题。您使用的是沙盒应用对吗?
-
我认为我们需要做更多的来回故障排除,并且 - 考虑到您和 Mike Miller 在这个问题上已经做了多少 - 我建议联系 Braintree support。当您这样做时,请包含更多您拥有的服务器端代码示例,如果可能,请包含显示空值的 POST 的浏览器开发人员工具网络视图的屏幕截图。
标签: javascript html asp.net-mvc forms braintree