You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Stripe Session的unit_amount转换为实际产品价格(AED币种)

问题描述

我正在使用Stripe支付网关,采用AED币种,实际产品价格为100.00 AED,支付页面显示金额正确,但打印会话详情时,unit_amount显示为10000。

我的代码如下:

return {
price_data: {
currency: "aed",
product_data: {
name: product.product_name,
// images: [productImagePath],
metadata: {
address: JSON.stringify(address)
},
},
unit_amount: parseInt(product.product_price) * 100,
},
quantity: parseInt(product.product_qty),
    };
  }
);
console.log("Name:", lineItems);

我希望打印lineItems时,unit_amount显示为100.00而非10000,请问如何实现?

解决方案

Stripe的unit_amount字段要求传入对应币种的最小单位数值(AED的最小单位是费尔,1迪拉姆=100费尔),所以100.00 AED对应10000费尔,这是Stripe API的强制要求,支付页面显示正常就是因为这个逻辑是正确的。

如果只是想在控制台打印时看到100.00的格式,绝对不能修改传给Stripe的unit_amount值(否则会导致扣款金额错误),只需在打印前对数值做格式化处理即可:

示例代码:

// 保留原有生成lineItems的逻辑
const lineItems = {
  price_data: {
    currency: "aed",
    product_data: {
      name: product.product_name,
      metadata: {
        address: JSON.stringify(address)
      },
    },
    unit_amount: parseInt(product.product_price) * 100,
  },
  quantity: parseInt(product.product_qty),
};

// 打印时格式化unit_amount为带两位小数的格式
console.log("Name:", {
  ...lineItems,
  price_data: {
    ...lineItems.price_data,
    unit_amount: (lineItems.price_data.unit_amount / 100).toFixed(2)
  }
});

这样既不会影响Stripe的支付流程,又能在控制台看到你需要的100.00格式。

内容的提问来源于stack exchange,提问作者ajo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:22:25