使用 Java JSF 的 Braintree 客户端?

Braintree client side with Java JSF?

[根据@Kukeltje 的评论编辑]

我使用 JSF 作为前端框架。我的目标是设置 braintree 的客户端,如 here 所述。

在 Braintree 的教程中,这段代码发送了带有 post 请求的客户端令牌:

<form id="checkout" method="post" action="/checkout">
  <div id="payment-form"></div>
  <input type="submit" value="Pay ">
</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> 解决了这个问题,请参阅

完全披露:我在 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 非常灵活。