2

I am working with braintree paypal checkout, it is working fine for me, but i am not able to add tax and shipping charge, i tried to get some information, but that is also not working for me, here is my current code for braintree checkout

var form = document.querySelector('#payment-form');
var client_token = "<?php echo \Braintree\ClientToken::generate(); ?>";
 // Render the PayPal button

    paypal.Button.render({

        // Pass in the Braintree SDK

        braintree: braintree,

        // Pass in your Braintree authorization key

        client: {
            sandbox: client_token,
            production: '<insert production auth key>'
        },

        // Set your environment

        env: 'sandbox', // sandbox | production

        // Wait for the PayPal button to be clicked

        payment: function(data, actions) {

            // Make a call to create the payment

            return actions.payment.create({
                payment: {
                    transactions: [
                        {
                            amount: { 
                                total: <?php echo $cart_total_amount; ?>, 
                                currency: 'USD'
                            }
                        }
                    ]
                }
            });
        },

        // Wait for the payment to be authorized by the customer

        onAuthorize: function(data, actions) {

            // Call your server with data.nonce to finalize the payment

            console.log('Braintree nonce:', data.nonce);

            // Get the payment and buyer details

            return actions.payment.get().then(function(payment) {
                $("div#divLoading").addClass('show');
                console.log('Payment details:', payment);
                var payment_id = payment.id;
                var total_amount = '<?php echo $cart_total_amount; ?>';
                $.ajax({
                            type: 'POST',
                            url : '<?php $_SERVER["DOCUMET_ROOT"] ?>/media/secure_checkout/create_order_braintree.php',
                            data : 'payment_id='+payment_id+'&total_amount='+total_amount,
                            dataType : 'json',
                            success: function(msg) {
                                $("div#divLoading").removeClass('show');
                                if(msg.status == '1') {
                                    //$("#myModal").modal('show');
                                    document.location.href= 'http://<?php  echo $_SERVER['HTTP_HOST']; ?>/media/secure_checkout/checkout.php?payment=confirm';
                                }
                            },
                            error: function(msg) {
                                $("div#divLoading").removeClass('show');
                            }
                });
            });
        }

    }, '#paypal-button-container');

Can anyone please tell me what i need to do to add tax and shipping charge in it?

Nikul Panchal
  • 663
  • 1
  • 14
  • 32

2 Answers2

2

Full disclosure: I work at Braintree. If you have any further questions, feel free to contact support@braintreepayments.com.

Braintree doesn't have parameters for tax or shipping. You'll need to create this logic on your side and pass the total into the amount parameter.

Erica Sosa
  • 91
  • 3
  • 3
    But in case of Recurring/Subscription, how can i manage tax? The rate of tax is different in different province or country. Then this is not good practice to create different plan according to buyer's place. – HarisH Sharma Nov 30 '17 at 08:58
  • Erica, can you confirm or correct the information in [my answer](https://stackoverflow.com/a/51293864/1000655)? Thanks! – Neal Gokli Jul 11 '18 at 20:45
  • @harishsharma This question isn't about Recurring/Subscription, but [my answer](https://stackoverflow.com/a/51293864/1000655) may have some helpful information for you. You can override the plan amount (or perhaps create a "tax" addon, and override that amount). – Neal Gokli Jul 11 '18 at 20:47
1

It seems like you're following the code at Integrate PayPal Checkout Using the Braintree SDK. Check out the available options for the actions.payment.create() call here. Note that tax and shipping are there. More details on the Payments API page. Note: You still need to calculate the total so it includes tax and shipping, like Erica said.

If you want to create the payments server-side, it seems you can pass taxAmount and shippingAmount to Braintree's transaction::sale() method. It's also possible to pass these at a line-item level. Again, you need to calculate the total so it includes tax and shipping. It seems you'll have to include some other fields as well, since taxAmount is a Level 2 field, and shippingAmount is a Level 3 field. I haven't used it, so I can't say how it works, or how well it works. I imagine (hope) these fields get passed onto PayPal, if PayPal is used as payment method.

For recurring transactions: I don't see any tax/shipping-specific fields, but you can override the price to include tax when you create the subscription (at least with the server-side Braintree API). Alternatively, I think if you create an add-on for tax, you could override that at subscription-create time without knowing the subscription price. Either way, I'm not sure if you can easily update the subscription as tax rates change (as laws change).

Neal Gokli
  • 475
  • 7
  • 18