通过运费选项可以显示各种运输选项,如标准、快递和隔夜运输,并提供更准确的运费估计。使用不同的 Stripe 产品向客户收取运费。创建运费前,了解如何收集账单地址和收货地址 。
注意 运费仅支持整个订单的固定金额值。您无法根据订单中的商品数量调整运费。
注意 运费仅支持整个订单的固定金额值。您无法根据订单中的商品数量调整运费。
通过管理平台添加运费 :
点击创建运费 。 输入一个金额、描述和可选的预计送达时间。 点击保存 ,然后复制运费 ID (shr_ 123456
)。 输入运费详情
更新运费 您不能在管理平台中直接更新运费费率。若要在管理平台中更新,您必须先存档该运费费率,再创建新的运费费率。
存档运费费率 存档运费费率:
在运费费率 选项卡上,选择适用的运费费率。 单击溢出菜单 ,然后选择存档 。 若要取消存档运费费率,请单击溢出菜单 ,然后选择取消存档运费费率 。
要创建包含您的运费的 Checkout Session,请将生成的运费 ID 传递到 shipping_options 参数。如果想与 Checkout Session 同时创建运费,请使用带 shipping_ options
的 shipping_ rate_ data
参数。仅 payment mode 下的 Checkout Sessions 支持配送选项。
以下代码示例向 Checkout Session 中添加两个配送选项:
免运费,预计交货时间为 5-7 个工作日。 次日空运,费用为 15.00 美元,预计送达时间为 1 个工作日。 该例中,shipping_ options
数组中的第一个选项是在结账页面上为客户预选的。但是,客户可以选择其中任何一个选项。
curl https://api.stripe.com/v1/checkout/sessions \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
-d "shipping_address_collection[allowed_countries][0]" = US \
-d "shipping_address_collection[allowed_countries][1]" = CA \
-d "shipping_options[0][shipping_rate_data][type]" = fixed_amount \
-d "shipping_options[0][shipping_rate_data][fixed_amount][amount]" = 0 \
-d "shipping_options[0][shipping_rate_data][fixed_amount][currency]" = usd \
-d "shipping_options[0][shipping_rate_data][display_name]" = "Free shipping" \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][minimum][unit]" = business_day \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][minimum][value]" = 5 \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][maximum][unit]" = business_day \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][maximum][value]" = 7 \
-d "shipping_options[1][shipping_rate_data][type]" = fixed_amount \
-d "shipping_options[1][shipping_rate_data][fixed_amount][amount]" = 1500 \
-d "shipping_options[1][shipping_rate_data][fixed_amount][currency]" = usd \
-d "shipping_options[1][shipping_rate_data][display_name]" = "Next day air" \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][minimum][unit]" = business_day \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][minimum][value]" = 1 \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][maximum][unit]" = business_day \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][maximum][value]" = 1 \
-d "line_items[0][price_data][currency]" = usd \
-d "line_items[0][price_data][product_data][name]" = T-shirt \
-d "line_items[0][price_data][unit_amount]" = 2000 \
-d "line_items[0][quantity]" = 1 \
-d mode = payment \
- -data -urlencode success_url = "https://example.com/success "
如果成功,运费选择器会出现在您的结账页面上:
结账页面上的运费选择器
可选 处理已完成的交易
付款成功后,您可以在 shipping_cost 的 amount_total 属性中检索运费金额。您也可以用 shipping_ cost
中的 shipping_ rate
属性来检索选择的运费。要访问 shipping_ cost
属性,必须创建一个事件处理程序 来处理已完成的 Checkout Session。您可以通过安装 Stripe CLI 并用 stripe listen --forward-to localhost:4242/webhook
将事件转发到您的本地服务器 来测试处理程序。在下面的代码示例中,处理程序允许用户访问 shipping_ property
:
Stripe . api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
require 'sinatra'
endpoint_secret = 'whsec_...'
post '/webhook' do
event = nil
begin
sig_header = request . env [ 'HTTP_STRIPE_SIGNATURE' ]
payload = request . body . read
event = Stripe : : Webhook . construct_event ( payload , sig_header , endpoint_secret )
rescue JSON : : ParserError = > e
return status 400
rescue Stripe : : SignatureVerificationError = > e
return status 400
end
if event [ 'type' ] == 'checkout.session.completed'
checkout_session = event [ 'data' ] [ 'object' ]
fulfill_order ( checkout_session )
end
status 200
end
def fulfill_order ( checkout_session )
selected_shipping_rate = Stripe : : ShippingRate . retrieve ( checkout_session . shipping_cost . shipping_rate )
shipping_total = checkout_session . shipping_cost . amount_total
raise NotImplementedError . new ( < < ~ MSG )
Given the Checkout Session " #{ checkout_session . id } " load your internal order from the database then implement your own fulfillment logic .
MSG
end
您可以用一系列交付估计组合来配置运费。下表包含一些简单的英文送达时间估计,以及它们对应的 delivery_ estimate. minimum
和 delivery_ estimate. maximum
的值。
预计送达时间 最小 最大 1 天 {
unit: 'day',
value: 1,
}
{
unit: 'day',
value: 1,
}
1 个工作日 {
unit: 'business_day',
value: 1,
}
{
unit: 'business_day',
value: 1,
}
至少 2 个工作日 {
unit: 'business_day',
value: 2,
}
3 到 7 天 {
unit: 'day',
value: 3,
}
{
unit: 'day',
value: 7,
}
4 到 8 小时 {
unit: 'hour',
value: 4,
}
{
unit: 'hour',
value: 8,
}
4 小时到 2 个工作日 {
unit: 'hour',
value: 4,
}
{
unit: 'business_day',
value: 2,
}
您可以用 Stripe Tax ,通过在运费上设置一个 tax_ code
和 tax_ behavior
来计算运费的税额。Stripe Tax 自动确定运费是否应税(因为应税性因国家/地区而异 ),并在需要时应用正确的税率。
用 shipping_ rate_ data
或通过 Create a Shipping Rate 创建运费时,可以向运费中添加一个 tax_ behavior
和 tax_ code
参数。
建议将 tax_ code
设置为 Shipping
(txcd_ 92010001
),确保您始终收取正确的税额。如果不想收税,还可以将运费 tax_ code
设置为 Nontaxable
(txcd_ 00000000
)。
该例中,我们将 tax_ behavior
设置为 exclusive
,这在美国是比较常见的。了解有关税务行为 的更多信息。
curl https://api.stripe.com/v1/checkout/sessions \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
-d billing_address_collection = required \
-d "shipping_address_collection[allowed_countries][0]" = US \
-d "shipping_address_collection[allowed_countries][1]" = CA \
-d "shipping_options[0][shipping_rate_data][type]" = fixed_amount \
-d "shipping_options[0][shipping_rate_data][fixed_amount][amount]" = 0 \
-d "shipping_options[0][shipping_rate_data][fixed_amount][currency]" = usd \
-d "shipping_options[0][shipping_rate_data][display_name]" = "Free shipping" \
-d "shipping_options[0][shipping_rate_data][tax_behavior]" = exclusive \
-d "shipping_options[0][shipping_rate_data][tax_code]" = txcd_92010001 \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][minimum][unit]" = business_day \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][minimum][value]" = 5 \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][maximum][unit]" = business_day \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][maximum][value]" = 7 \
-d "line_items[0][price_data][currency]" = usd \
-d "line_items[0][price_data][product_data][name]" = T-shirt \
-d "line_items[0][price_data][unit_amount]" = 2000 \
-d "line_items[0][price_data][tax_behavior]" = exclusive \
-d "line_items[0][quantity]" = 1 \
-d "automatic_tax[enabled]" = true \
-d mode = payment \
- -data -urlencode success_url = "https://example.com/success "
您的客户可以在结账页面上看到运费费率的计算税费金额计入总销售税中:
结账页面上运费费率的计算税费金额