计算条纹紫杉税价格的最佳方式,包括税收

时间:2017-01-23 07:42:42

标签: ruby stripe-payments taxamo

您好我很好奇如何最好地计算价格,包括产品预结算的增值税。目前我找到的唯一方法是创建一个包含该项目的订单,然后从订单中提取税和价格。然而,这会产生大量冗余订单,并且看起来是次优的。有没有办法在不创建订单的情况下进行此计算?

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

更新

在与条纹支持人员交谈之后,我的建议似乎是目前最好的方法。我向他们建议,如果开发人员可以在订单上设置一个标志,它只是为了定价信息,以避免创建一个以后不会用于付款的订单。他们说他们会向开发者提供这个建议。也许我们将来有更好的方法来做到这一点。

1 个答案:

答案 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