关于Braintree支付网关与Java的集成

2024-05-22

我是支付网关集成的新手。我需要集成Braintree Payment Gateway与 JSF 应用程序。有人可以向我展示 java 类的基本示例和示例支付页面吗?我看到一些客户端Token如何生成它。我编写了一个示例类和页面,如下所示,但我无法制作,因为我不明白。

page

<form id="checkout" method="post" action="/checkout">
    <div id="payment-form"></div>
    <input type="submit" value="Pay $15">
</form>

<script src="https://js.braintreegateway.com/v2/braintree.js"></script>
<script>
    // We generated a client token for you so you can test out this code
    // immediately. In a production-ready integration, you will need to
    // generate a client token on your server (see section below).
    var clientToken = "sZWQiOmZhbHNlLCJtZXJjaGFudElkIjoiMzQ4cGs5Y2dmM2JneXcyYiIsInZlbm1vIjoib2ZmIn0=";

    braintree.setup(clientToken, "dropin", {
        container : "payment-form"
    });

</script>

Class

import spark.Request;
import spark.Response;
import spark.Route;

import com.braintreegateway.BraintreeGateway;
import com.braintreegateway.Environment;

public class BrainTreeController {
    private static BraintreeGateway gateway = new BraintreeGateway(
              Environment.SANDBOX,
              "your_merchant_id",
              "your_public_key",
              "your_private_key"
            );
        post(new Route("/client_token") {
          @Override
          public Object handle(Request request, Response response) {
            return gateway.clientToken().generate();
          }
        });
}

我在发帖时遇到错误

Syntax error on token "post", @ expected before this token

查看以下示例Braintree Java SDK 实现 https://github.com/braintree/braintree_java。根据要求将其集成到您的项目中:

public class BrainTreeImplementation {

private static Logger logger = Logger.getLogger(BrainTreeImplementation.class.getName());

// Below are the Braintree sandbox credentials
private static BraintreeGateway gateway = null;
private static String publicKey = "YOUR_PUBLIC_KEY";
private static String privateKey = "YOUR_PRIVATE_KEY";
private static String merchantId= "YOUR_MERCHANT_ID";   

public static void main(String[] args) {
    // Initialize Braintree Connection
    gateway = connectBraintreeGateway();
    braintreeProcessing();
}

public static void braintreeProcessing() {

    System.out.println(" ----- BrainTree Implementation Starts --- ");

    // Generate client Token
    String clientToken = generateClientToken();
    System.out.println(" Client Token : " +clientToken);

    // Receive payment method nonce
    String nonceFromTheClient = receivePaymentMethodNonce();

    // Do payment transactions
    BigDecimal amount = new BigDecimal("5.10");
    doPaymentTransaction(nonceFromTheClient, amount);
}

// Connect to Braintree Gateway.
public static BraintreeGateway connectBraintreeGateway() {
    BraintreeGateway braintreeGateway = new BraintreeGateway(
            Environment.SANDBOX, merchantId, publicKey, privateKey);
    return braintreeGateway;
}

// Make an endpoint which return client token.
public static String generateClientToken() {
    // client token will be generated at server side and return to client
    String clientToken = gateway.clientToken().generate();
    return clientToken;
}

// Make an endpoint which receive payment method nonce from client and do payment.
public static String receivePaymentMethodNonce() {
     String nonceFromTheClient =  "fake-valid-mastercard-nonce";
     return nonceFromTheClient;
}

// Make payment 
public void String doPaymentTransaction(String paymentMethodNonce, BigDecimal amount) {

    TransactionRequest request = new TransactionRequest();
    request.amount(amount);
    request.paymentMethodNonce(paymentMethodNonce);

    CustomerRequest customerRequest = request.customer();
    customerRequest.email("[email protected] /cdn-cgi/l/email-protection");
    customerRequest.firstName("Chirag");
    customerRequest.lastName("Patel");

    TransactionOptionsRequest options = request.options();
    options.submitForSettlement(true);

    // Done the transaction request
    options.done();

    // Create transaction ...
    Result<Transaction> result = gateway.transaction().sale(request);
    boolean isSuccess = result.isSuccess();

    if (isSuccess) {
        Transaction transaction = result.getTarget();
        displayTransactionInfo(transaction);
    } else {
        ValidationErrors errors = result.getErrors();
        validationError(errors);
    }
}

private static void displayTransactionInfo(Transaction transaction) {
    System.out.println(" ------ Transaction Info ------ ");
    System.out.println(" Transaction Id  : " +transaction.getId());
    System.out.println(" Processor Response Text : " +transaction.getProcessorResponseText());
}

private static void validationError(ValidationErrors errors) {
    List<ValidationError> error = errors.getAllDeepValidationErrors();
    for (ValidationError er : error) {
        System.out.println(" error code : " + er.getCode());
        System.out.println(" error message  : " + er.getMessage());
    }
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Braintree支付网关与Java的集成 的相关文章

  • 透明平开窗

    我有一点JWindow上面有一个标志 用户可以将东西拖到上面 我主要在 OS X 上开发我的应用程序 为了获得我使用的透明窗口 setBackground new Color 0 0 0 0 在 Mac 上 这工作得很好 但在 Window
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • 使用 AbstractTableModel 获取 JTable 中选定的行

    我有一个JTable using AbstractTableModel我在哪里有一个JCheckBox在第一列中用于选择行 现在 我需要从已检查的表中获取选定的行 现在 我按顺序从第一行遍历到最后一行并获取所有选择的行 如下所示 List
  • Java:高性能消息传递(单生产者/单消费者)

    我最初问这个问题here https stackoverflow com questions 3367192 java is while true loop in a thread bad whats the alternative 但我意
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 使用 Spring Data REST 处理自定义异常 (i18n)

    我正在使用 Spring Boot 1 5 4 和 Spring JPA Spring Data REST HATEOAS 我正在寻找一种最佳实践 Spring 方式 来自定义异常 Spring Data REST 正在管理添加 i18n
  • 使用 jpql 和 jpa 从日期字段中提取年份

    我想从数据库中的一行中提取年份部分 以便将其与值进行比较 这是我的功能 public List
  • 如何识别 Java 中的不可变对象

    在我的代码中 我正在创建一个对象集合 这些对象将由各种线程以只有在对象不可变的情况下才安全的方式访问 当尝试将新对象插入到我的集合中时 我想测试它是否是不可变的 如果不是 我将抛出异常 我能做的一件事是检查一些众所周知的不可变类型 priv
  • 在 TestNG 中运行多个类

    我正在尝试自动化一个场景 其中我想登录一次应用程序 然后进行操作而无需再次重新登录 考虑一下 我有在特定类的 BeforeSuite 方法中登录应用程序的代码 public class TestNGClass1 public static
  • 要打乱的键值(整数、字符串)列表的最佳结构

    我需要在 Java 中实现一个结构 它是一个键值列表 类型为整数 字符串 并且我想对其进行洗牌 基本上 我想做类似的事情 public LinkedHashMap
  • Java 唤醒休眠线程

    我阅读了其他帖子 但没有找到我正在寻找的确切答案 所以我希望有人能给出一些澄清 我有一个将运行一段时间的程序 我有一些在后台运行的线程来执行各种任务 为了简单起见 让我们考虑 3 个线程 ThreadA每 10 秒执行一次任务 其中Thre
  • 使用Java开发跨平台,不同平台字体缩放不同

    我正在为我的大学制作一些软件 需要一个 GUI 在它的第一个版本中 我让它使用系统外观 因此它看起来像 Linux Mac Windows 中的本机应用程序 我发现这很麻烦 因为我必须根据操作系统使所有 JLabel 具有不同的大小 无论分
  • Java ConcurrentModificationException [重复]

    这个问题在这里已经有答案了 当删除倒数第二个元素时 没有 ConcurrentModificationException List
  • 在服务器内部调用 Web 服务

    我有一个网络服务 getEmployee 当传递 id 时 它会获取单个员工的员工详细信息 同一服务器上的另一个 Web 服务 getEmployeeList 当传递一个部门时 它会获取整个员工列表 这将获取部门的 ID 然后调用 getE
  • 我们可以有虚假中断吗?

    我正在创建一个任务轮询器 每分钟都会查找任务 它看起来像这样 public class Poller private final ExecutorService e Executors newSingleThreadExecutor pub
  • 找不到符号assertEquals

    我正在尝试为计算器编写第一个单元测试 但 NetBeans 说它找不到该符号assertEquals和注释 Test 我应该包括一些东西吗 我正在使用 NetBeans 7 3 1 和 W7 package calculator impor
  • Selenium - 等待网络流量

    我们将 Selenium 与 Java API 和一些 Javascript 用户扩展一起使用 我们在应用程序中使用了大量 AJAX 调用 我们的许多测试随机失败 因为有时 AJAX 调用完成得比其他时候慢 因此页面未完全加载 我们通过等待
  • 如果抛出RuntimeException,是否可以将其作为异常捕获?

    如果我有一个try抛出一个块RuntimException子类 可以是后续的catch块将其捕获为Exception 具体来说 public class MyAppException extends RuntimeException In
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • Integer.parseInt 引发的 NumberFormatException

    嘿 我在学校上编码课 但老师没有很好地解释 所以我们必须在网上查找我所做的信息 但我无法找到代码中的错误 你能帮我吗 char end s do System out println Tipo de boleto char boleto c

随机推荐

  • 收益率回报多少?

    我发现自己经常对 IEnumerables 进行查找 以便返回每个结果 有没有办法压缩这样的东西 foreach var subSelector in subSelectors foreach var node in FindSingle
  • Android应用程序开发中的EditText警告

    在 xml 文件中声明 EditText 时 我收到了如下警告 没有标签视图通过 android labelFor id id start 属性指向此文本字段 编辑文本代码是
  • SWT GridLayout 列重叠

    Code final Composite sectionClient toolkit createComposite parent SWT NONE sectionClient setLayout UIHelper getLayoutFor
  • FFMPEG:使用具有复杂滤波器的视频滤波器

    我正在使用fluent ffmpeg用于对视频文件执行批量操作的 Node js 库 视频过滤器裁剪 16 9 输入 添加填充并将字幕刻录到填充中 在下一步中 我想使用复杂的滤镜来覆盖图像作为水印 ff input video mp4 ff
  • 网格 xamarin 形式中的重叠框架

    我正在使用最新的 xamarin 表单 我有一个要求 我需要在网格中的两行之间放置一个框架 我无法使其与绝对布局或弹性布局一起使用 下面是我对网格的简化尝试
  • 更新我的模型然后重新评估 IsValid?

    我将一些值传递给我的控制器操作 一切都绑定得很好 根据设计 表单 POST 中会缺少两个属性 然后我设置了缺失的值 但随后我想验证模型 但它仍然显示为 false 因为 ModelState 似乎没有跟上我的更改 HttpPost Auth
  • 为什么此类方法中的“this”未定义?

    我试图搜索似乎整个互联网 但我仍然对我为微服务编写的 JS 类的问题感到烦恼 仍在学习中 因此 我尝试在实例化对象上调用类方法 根据我的知识和我的 我认为是错误的 单元测试 它应该可以工作 好吧 我将从我收到的错误开始 GET api us
  • Huggingface 长文档摘要

    我预计摘要任务通常会假设长文档 但是 以下文档here https huggingface co course chapter1 3 fw pt 我所做的任何简单摘要调用都表示我的文档太长 gt gt gt summarizer pipel
  • WPF 如何从 DataGrid 转换为 DataTable?

    嗨 我正在关注这个guide http www wpf tutorial com datagrid control details row 以了解如何使用 DataGrid 我遇到的问题是如何将 DataGrid 中的数据转换为 DataT
  • 如何在 Unity 中对齐“轨道”或模块化对象?

    我正在开发一个简单的游戏 用户可以在其中放置不同但模块化的对象 例如 轨道 道路等 我的问题是 当将一个物体靠近另一个物体时 如何匹配和放置不同的物体 我的第一种方法是为每个模块对象创建一个隐藏的子对象 一个盒子 并将其放在可以放置其他对象
  • 将 TypeScript 项目与 Webpack 捆绑时,Node.js 提示“ReferenceError: require is not Define”

    我有一个简单的test ts我想使用 webpack 捆绑的文件 该文件包含一些代码和以下导入 没有任何错误 import from interval Observable of pipe Subject timer BehaviorSub
  • 对 numpy 数组中存在的元组中的列进行切片

    我已将一个文本文件导入到 numpy 数组中 如下所示 data np genfromtxt f dtype None delimiter names None 其中 f 包含我的 csv 文件的路径 现在数据包含以下内容 array 53
  • 安装 libjpeg v8 到 /opt/local

    如何在 OSX 上将 libjpeg 8 安装到 opt local 我问的原因是我想用以下方法制作大脑活动的小电影MNE C 库 http www nmr mgh harvard edu martinos userInfo data MN
  • 使用 PyArg_ParseTuple 解析用户定义类型

    如何使用解析用户定义的类型 或现有非标准库中的类型 PyArg ParseTuple 而不是使用普通的O格式 正如 Martijn 建议的那样 我通常更喜欢使用 它允许您传递一个函数 该函数将被调用以转换任何PyObject 到任意 C 双
  • 测试后 NUnit 回滚

    我对 NUnit 以及一般的自动化测试 还很陌生 我最近做了一些 Ruby On Rails 工作 并注意到在我的测试套件中 当我创建对象 例如新用户 并在套件过程中提交它们时 它们永远不会提交到数据库 以便我可以运行一遍又一遍地测试 不用
  • asp.net datalist 选择每个类别的所有复选框

    我有一个页面 用户可以在数据列表控件中选择不同的文档文件 使用预渲染事件处理程序根据类别对文档进行分类 文档是根据复选框控件 而不是复选框列表 选择的 到目前为止 一切都很好 接下来我想要发生的事情是在每个类别名称旁边放置一个 全选 复选框
  • Java异常处理——捕获超类异常

    我有一个关于处理网络应用程序异常的问题 我经常听说捕获超类 Exception 是一个坏主意 我经常编写代码来捕获 struts action java servlet 类中的所有异常 try call business facade bu
  • Angular核心模块的作用是什么?

    我读了一篇article https medium com michelestieven organizing angular applications f0510761d65a关于在 Angular 中组织文件夹 作者使用了一个名为cor
  • 在 php 标头中使用 x-auth-token 发送请求

    如何将 x auth token 参数发送到带有 YII 标头的服务器 我有这个代码 data array customerId gt userId getdata http build query data options array h
  • 关于Braintree支付网关与Java的集成

    我是支付网关集成的新手 我需要集成Braintree Payment Gateway与 JSF 应用程序 有人可以向我展示 java 类的基本示例和示例支付页面吗 我看到一些客户端Token如何生成它 我编写了一个示例类和页面 如下所示 但