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

标签 java paypal braintree braintree-sandbox

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

页面

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

类别

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 Implementation 中的以下示例。根据要求将其集成到您的项目中:

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("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ec8f9c8d988980ac8b818d8580c28f8381" rel="noreferrer noopener nofollow">[email protected]</a>");
    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());
    }
}
}

关于java - 关于Braintree支付网关与Java的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39716674/

相关文章:

java - 将 JTables 与 netbeans 6.1 又名 Matisse 一起使用

php - PayPal IPN 没有做任何事情

javascript - Brain DropIn UI 显示错误 "Cannot read property "渲染“未定义”

javascript - 如果关闭 Javascript,Braintree.js 会发生什么?

javascript - Braintree 托管字段未在 Polymer 上渲染

java - MongoDB Spring 数据 Criteria.all

java - 保存数组中两个数字之间的奇数

java - For 循环错误 -> if 语句不产生输出

ios - 我如何使用 Paypal 进行拆分付款

PayPal 将 _cart 形式的空格转换为加号