[@Kukeltje评论后编辑]
我使用JSF作为前端框架。我的目标是设置braintree的客户端,如here所述。
在Braintree的教程中,这段代码发送一个带有帖子请求的客户端令牌:
<form id="checkout" method="post" action="/checkout">
<div id="payment-form"></div>
<input type="submit" value="Pay $10">
</form>
<script src="https://js.braintreegateway.com/v2/braintree.js"></script>
<script>
var clientToken = "xxxxxx";
braintree.setup(clientToken, "dropin", {
container: "payment-form"
});
</script>
我怀疑在上面的代码中,脚本生成参数或有效负载并将它们附加到post请求,但我可能完全错了。我运行了这个代码,它工作正常。
我的问题:如何调整post请求,以便使用bean替换它,例如:
<h:form id="checkout">
<h:CommandButton value="5€" actionListener="#{bean.submitToken()}"/>
</form>
我更喜欢JSF而不是纯HTML的原因是它更容易与我的页面的其余部分集成,后者已经包含<h:form>
。
注意:感谢Braintree撰稿人的回答。我实际上使用Primefaces <p:remoteCommand>
解决了这个问题,请参阅this question and @BalusC answer。
答案 0 :(得分:3)
完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support。
您的问题可能只关注JSF / Primefaces社区,但我可以回答Braintree部分。
在许多情况下,包括onPaymentMethodReceived
回调是处理任何框架特定问题的好方法。您可以编写custom javascript callback来触发在使用特定于框架的代码生成工具(例如您指定的操作)时所需的任何行为。为此,只需在Braintree插件设置中指定它:
braintree.setup("CLIENT-TOKEN-FROM-SERVER", "dropin", {
container: "dropin-container",
onPaymentMethodReceived: function (obj) {
// Do some logic in here.
// When you're ready to submit the form:
myForm.submit();
}
});
同样,我不熟悉JSF / Primefaces的细节,但是当你开始使用回调时,Drop-in非常灵活。