繁体   English   中英

有没有办法从 Braintree 获取 Paypal 的保险信用卡信息?

[英]Is there a way to fetch Paypal's vaulted credit card information from Braintree?

在我的项目中,我使用 scheduler cron job 进行每月订阅,试用期为 2 个月。 因此,如果有任何服务在当前日期到期,将向管理员支付特定金额,从而启用每月订阅流程。 话虽如此,我已将来自 Paypal 保险库的信用卡参考 ID 存储在我的数据库中。 现在,我想使用此参考 ID 通过 Braintree 进行付款。 有什么办法可以从 Paypal 保险库获取详细信息或使用卡参考 ID 直接付款。 请帮忙!

我试过下面的代码。 但不确定如何从 Paypal 保险库中获取信用卡详细信息或从数据库中获取卡片参考 ID 并将其添加到此处。

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("cpatel@gmail.com");
     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());
     }
 }
 }
  1. 使用 PayPal Vault 或 PayPal Checkout with Vault 获取随机数并将其发送到服务器。 PayPal 金库

  2. 服务器使用随机数来创建用户。 创建客户

  3. 服务器使用用户 ID 或支付令牌创建交易。 销售

示例代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

</head>
<body>
<div id="paypal-button" style="padding-top: 150px"></div>
</body>
<!-- Load the client component. -->
<script src="https://js.braintreegateway.com/web/3.88.2/js/client.min.js"></script>

<!-- Load the PayPal Checkout component. -->
<script src="https://js.braintreegateway.com/web/3.88.2/js/paypal-checkout.min.js"></script>

<script>
    // Create a PayPal Checkout component
    // Create a client.
    braintree.client.create({
        authorization: '' //tokenizationKey
    }, function (clientErr, clientInstance) {

        // Stop if there was a problem creating the client.
        // This could happen if there is a network error or if the authorization
        // is invalid.
        if (clientErr) {
            console.error('Error creating client:', clientErr);
            return;
        }

        // Create a PayPal Checkout component.
        braintree.paypalCheckout.create({
            client: clientInstance
        }, function (paypalCheckoutErr, paypalCheckoutInstance) {
            paypalCheckoutInstance.loadPayPalSDK({
                vault: true
            }, function () {
                paypal.Buttons({
                    fundingSource: paypal.FUNDING.PAYPAL,

                    createBillingAgreement: function () {
                        return paypalCheckoutInstance.createPayment({
                            flow: 'vault', // Required
                            // The following are optional params
                            billingAgreementDescription: 'Your agreement description',
                            enableShippingAddress: false,
                            shippingAddressEditable: false,
                        });
                    },

                    onApprove: function (data, actions) {
                        return paypalCheckoutInstance.tokenizePayment(data, function (err, payload) {
                            // Submit `payload.nonce` to your server
                            console.log('nonce:',payload.nonce)
                        });
                    },

                    onCancel: function (data) {
                        console.log('PayPal payment canceled', JSON.stringify(data, 0, 2));
                    },

                    onError: function (err) {
                        console.error('PayPal error', err);
                    }
                }).render('#paypal-button').then(function () {
                    // The PayPal button will be rendered in an html element with the ID
                    // `paypal-button`. This function will be called when the PayPal button
                    // is set up and ready to be used
                });

            });

        });

    });
</script>
</html>
public class BraintreePayDemo {

    private static BraintreeGateway gateway = new BraintreeGateway(
            Environment.SANDBOX,
            "merchantId",
            "publicKey",
            "privateKey"
    );

    public static void customerCreate(){
        CustomerRequest request = new CustomerRequest()
                .id("test123")
                .firstName("Hu")
                .lastName("Z")
                .paymentMethodNonce("3614a3fe-7503-0d1a-cfea-cad702094cc2");
        Result<Customer> result = gateway.customer().create(request);

        if(result.isSuccess()){
            Customer customer = result.getTarget();
            System.out.println(customer.getId());
            System.out.println(customer.getPaymentMethods().get(0).getToken());
        }else{
            System.out.println(result.getMessage());
        }
    }

    public static void saleByCustomerId(){
        TransactionRequest request = new TransactionRequest()
                .customerId("204871267")
                .amount(new BigDecimal("1.00"))
                .options()
                .submitForSettlement(true)
                .done();;

        Result<Transaction> result = gateway.transaction().sale(request);
        if (result.isSuccess()) {
            Transaction transaction = result.getTarget();
            System.out.println("Success ID: " + transaction.getId());
        } else {
            System.out.println("Message: " + result.getMessage());
        }
    }

    public static void saleByPaymentMethodToken(){
        TransactionRequest request = new TransactionRequest()
                .paymentMethodToken("16mv5t7k")
                .amount(new BigDecimal("10.00"))
                .options()
                .submitForSettlement(true)
                .done();

        Result<Transaction> result = gateway.transaction().sale(request);
        if (result.isSuccess()) {
            Transaction transaction = result.getTarget();
            System.out.println("Success ID: " + transaction.getId());
        } else {
            System.out.println("Message: " + result.getMessage());
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM