您好我很好奇如何最好地计算价格,包括产品预结算的增值税。目前我找到的唯一方法是创建一个包含该项目的订单,然后从订单中提取税和价格。然而,这会产生大量冗余订单,并且看起来是次优的。有没有办法在不创建订单的情况下进行此计算?
def get_price
location = current_user.location
location_data = APP_CONFIG['country_list'][location]
currency = location_data['currency']
country_code = location_data['code']
product_id = APP_CONFIG['stripe_reconstruction_ids'][currency]
product = Stripe::Product.retrieve(product_id)
product_sku = product['skus']['data'][0]['id']
ip = request.remote_ip
order = Stripe::Order.create(
:currency => currency,
:customer => current_user.stripe_id,
:items => [
{
:type => 'sku',
:parent => product_sku,
:quantity => 1,
:currency => currency
}
],
:email => current_user.email,
:metadata => {
:buyer_ip => ip,
:billing_country_code => country_code,
:product_type => 'e-service'
}
)
render :json => order, :status => 200 and return
rescue => error
logger.error error.message
render :json => { message: "Could not fetch the correct price." }, :status => 500 and return
end
更新
在与条纹支持人员交谈之后,我的建议似乎是目前最好的方法。我向他们建议,如果开发人员可以在订单上设置一个标志,它只是为了定价信息,以避免创建一个以后不会用于付款的订单。他们说他们会向开发者提供这个建议。也许我们将来有更好的方法来做到这一点。
答案 0 :(得分:3)
您可以使用Taxamo的API Calculate tax端点(Ruby客户端库是available)。
请注意,如果必须使用buyer_ip
私人令牌,则忽略字段。
curl call示例:
curl -X 'POST' -H "Content-Type: application/json" -d \
'{
"transaction": {
"currency_code": "EUR",
"transaction_lines": [
{
"custom_id": "line1",
"product_type": "e-service",
"amount": 100
}
],
"billing_country_code": "SOME_COUNTRY_CODE",
"buyer_ip": "SOME_IP"
},
"private_token": "YOUR_PRIVATE_TOKEN"
}' \
https://api.taxamo.com/api/v1/tax/calculate | python -m json.tool