我正在使用braintree paypal checkout,它对我来说工作正常,但我无法增加税费和运费,我试图获取一些信息,但这也不适合我,这是我目前的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');
任何人都可以告诉我我需要做些什么来增加税费和运费?
答案 0 :(得分:1)
完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support@braintreepayments.com。
Braintree没有tax
或shipping
的参数。您需要在您身边创建此逻辑并将总计传递到amount
参数。
答案 1 :(得分:0)
似乎您正在遵循Integrate PayPal Checkout Using the Braintree SDK上的代码。查看actions.payment.create()
呼叫here的可用选项。请注意,tax
和shipping
在那里。有关Payments API page的更多详细信息。注意:您仍然需要计算总数,以便包括税金和运费,如Erica所说。
如果要在服务器端创建支付,似乎可以将taxAmount
和shippingAmount
传递给Braintree的transaction::sale()
方法。也可以在订单项级别传递它们。同样,您需要计算总数,以便包括税收和运费。由于taxAmount
是Level 2字段,而shippingAmount
是Level 3字段,因此似乎还必须包括一些其他字段。我没有使用它,所以我不能说它是如何工作的,或者它是如何工作的。我想(希望)如果将PayPal用作付款方式,这些字段会传递到PayPal。
对于重复交易:我看不到任何特定于税收/运输的字段,但是在创建订阅时(至少使用服务器端Braintree API),您可以覆盖price
以包括税收。另外,我认为如果您创建税项附加组件,则可以在创建订阅时覆盖它,而无需了解订阅价格。无论哪种方式,我都不确定随着税率的变化(法律变化)您是否可以轻松地更新订阅。