我正在使用 Stripe 的 Checkout API。我想提供国际运输,具有不同的运输选项和基于结账条纹页面上动态选择的国家/地区的运输成本。有没有办法使用 Checkout 使运费选项以用户在 Checkout 表单中输入的送货地址国家/地区为条件?这是我的代码的摘录:
const session = await stripe.checkout.sessions.create({
success_url: "http://localhost:4242/success.html?id={CHECKOUT_SESSION_ID}",
cancel_url: "http://localhost:4242/cancel.html",
payment_method_types: ["card"],
mode: "payment",
line_items: [
{
price: "price_1Nxx6ZDsK4pxN0rvXLjRy7bJ",
quantity: req.body.quantity,
},
],
customer: "cus_Ol9Y0V0GCXTmSF",
billing_address_collection: "required",
shipping_address_collection: {
allowed_countries: [
"AT",
"BE",
"BG",
"HR",
"CY",
"CZ",
"DK",
"EE",
"FI",
"FR",
"DE",
"GR",
"HU",
"IE",
"IT",
"LV",
"LT",
"LU",
"MT",
"NL",
"PL",
"PT",
"RO",
"SK",
"SI",
"ES",
"SE",
],
},
shipping_options: [
{
shipping_rate_data: {
type: 'fixed_amount',
fixed_amount: {
amount: 0,
currency: 'eur',
},
display_name: 'Free shipping',
delivery_estimate: {
minimum: {
unit: 'business_day',
value: 5,
},
maximum: {
unit: 'business_day',
value: 7,
},
},
},
},
{
shipping_rate_data: {
type: 'fixed_amount',
fixed_amount: {
amount: 1000,
currency: 'usd',
},
display_name: 'Express',
delivery_estimate: {
minimum: {
unit: 'business_day',
value: 1,
},
maximum: {
unit: 'business_day',
value: 5,
},
},
},
},
],
customer_update: { shipping: "auto" },
automatic_tax: {
enabled: true,
},
allow_promotion_codes: true,
});
想象一下这种情况,预售产品在意大利,如果用户输入意大利送货地址就可以了,否则我想更改运费,例如对于法国,我将享受 10 欧元的低服务和 20 欧元的快速服务。 我怎样才能在条纹中实现这个?
这是个好主意...但不可能。
唯一的这样的东西是 Stripe Tax,其中税率是根据在会话中输入的地址计算的 - 但仅出于税收目的,您甚至不能将其用作运费的黑客,因为它根据您的注册。
您唯一的选择是在会话之前收集地址,而不是在会话中收集地址,并传递适合您收集的地址的 Shipping_rate。