Braintree客户端使用Java JSF?

时间:2015-12-12 14:39:52

标签: jsf braintree

[@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

1 个答案:

答案 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非常灵活。