如何使用 paypal 计算税金 api
how to calculate tax using paypal api
我安装了paypal的.net sdk并在沙箱环境中创建了一个应用程序
接下来我选择了 clientId 和 secret 并使用以下示例代码进行支付。
static void Main(string[] args)
{
// Get a reference to the config
var config = ConfigManager.Instance.GetProperties();
// Use OAuthTokenCredential to request an access token from PayPal
var accessToken = new OAuthTokenCredential(config["clientId"], config["clientSecret"]);
var apiContext = new APIContext(accessToken.GetAccessToken());
var payment = Payment.Create(apiContext, new Payment
{
intent = "sale",
payer = new Payer
{
payment_method = "paypal"
},
transactions = new List<Transaction>
{
new Transaction
{
description = "Test",
invoice_number = "009",
amount = new Amount
{
currency = "EUR",
total = "41.00",
details = new Details
{
tax = "0",
shipping = "0",
subtotal = "40",
handling_fee = "1"
}
},
item_list = new ItemList
{
items = new List<Item>
{
new Item
{
name = "Room 12",
currency = "EUR",
price = "10",
quantity = "4",
}
}
}
}
},
redirect_urls = new RedirectUrls
{
return_url = "https://google.de/",
cancel_url = "https://google.de/"
}
});
}
在交易中我必须传递税务信息。
我是否让 paypal 计算税款,我只是传递金额信息以及地址和一些其他信息(如果需要)?
不行,你必须自己算税。
默认情况下,用户将能够 select 他们在 PayPal 的送货地址,推荐这样做,因为这样他们就不必手动输入。鉴于他们的地址在 PayPal 结帐期间可能会发生变化,您可能希望根据 selected 地址计算新的税额 and/or 运费。您可以使用 JS SDK 的 onShippingChange callback.
执行此操作
不过,首先,您似乎正在使用已弃用的 SDK 和已弃用的 v1/payments API,并且还从您的网站重定向到 PayPal,所有这些都是旧的。不要做任何这些。
改为:遵循你可以使用的PayPal Checkout integration guide and make 2 routes on your server, one for 'Create Order' and one for 'Capture Order' (see the optional step 5 in 'Add and modify the code'). Both of these routes should return only JSON data (no HTML or text). There is a Checkout-Java-SDK,或者与你自己的直接HTTPS API调用集成(先获取一个access_token,它可以被缓存但在9小时后过期).
在您服务器上的第二个捕获路由中,当捕获 API 调用成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id
,这是 PayPal 交易 ID)并立即执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品),然后将您的returnJSON转发给前端调用者。
将这 2 条路线与前端批准流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server
我安装了paypal的.net sdk并在沙箱环境中创建了一个应用程序 接下来我选择了 clientId 和 secret 并使用以下示例代码进行支付。
static void Main(string[] args)
{
// Get a reference to the config
var config = ConfigManager.Instance.GetProperties();
// Use OAuthTokenCredential to request an access token from PayPal
var accessToken = new OAuthTokenCredential(config["clientId"], config["clientSecret"]);
var apiContext = new APIContext(accessToken.GetAccessToken());
var payment = Payment.Create(apiContext, new Payment
{
intent = "sale",
payer = new Payer
{
payment_method = "paypal"
},
transactions = new List<Transaction>
{
new Transaction
{
description = "Test",
invoice_number = "009",
amount = new Amount
{
currency = "EUR",
total = "41.00",
details = new Details
{
tax = "0",
shipping = "0",
subtotal = "40",
handling_fee = "1"
}
},
item_list = new ItemList
{
items = new List<Item>
{
new Item
{
name = "Room 12",
currency = "EUR",
price = "10",
quantity = "4",
}
}
}
}
},
redirect_urls = new RedirectUrls
{
return_url = "https://google.de/",
cancel_url = "https://google.de/"
}
});
}
在交易中我必须传递税务信息。
我是否让 paypal 计算税款,我只是传递金额信息以及地址和一些其他信息(如果需要)?
不行,你必须自己算税。
默认情况下,用户将能够 select 他们在 PayPal 的送货地址,推荐这样做,因为这样他们就不必手动输入。鉴于他们的地址在 PayPal 结帐期间可能会发生变化,您可能希望根据 selected 地址计算新的税额 and/or 运费。您可以使用 JS SDK 的 onShippingChange callback.
执行此操作不过,首先,您似乎正在使用已弃用的 SDK 和已弃用的 v1/payments API,并且还从您的网站重定向到 PayPal,所有这些都是旧的。不要做任何这些。
改为:遵循你可以使用的PayPal Checkout integration guide and make 2 routes on your server, one for 'Create Order' and one for 'Capture Order' (see the optional step 5 in 'Add and modify the code'). Both of these routes should return only JSON data (no HTML or text). There is a Checkout-Java-SDK,或者与你自己的直接HTTPS API调用集成(先获取一个access_token,它可以被缓存但在9小时后过期).
在您服务器上的第二个捕获路由中,当捕获 API 调用成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id
,这是 PayPal 交易 ID)并立即执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品),然后将您的returnJSON转发给前端调用者。
将这 2 条路线与前端批准流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server