Stripe发票数量显示异常求助:金额正确但数量错误
问题原因
你当前创建InvoiceItem时,直接传入了总金额(单价×数量),但没有单独指定quantity和unit_amount参数。Stripe无法从总金额反推出数量,所以发票上的数量显示异常。
修复方案
修改stripe.invoiceItems.create的参数,拆分出单价(unit_amount)和数量(quantity),而不是直接传总金额。这样Stripe就能正确识别并显示数量信息。
修改后的代码如下:
if (createinvoice) { if (lineItems && lineItems.length > 0) { for (var i = 0; i < lineItems.length; i++) { var element = lineItems[i]; // 计算单价的最小货币单位(Stripe要求使用最小单位,比如新加坡元的分) const unitAmount = parseFloat((element.Price * 100).toFixed(2)); await stripe.invoiceItems.create({ customer: customerid, unit_amount: unitAmount, // 单独传入商品单价 quantity: element.Quantity, // 单独传入商品数量 currency: "sgd", description: element.ItemName, metadata: { ConversationID: convID, RowKey: rowkey }, }); } } const invoiceitem = await stripe.invoices.create({ customer: customerid, }); invoice_id = invoiceitem.id; const invoice = await stripe.invoices.finalizeInvoice(invoice_id); } const invoice1 = await stripe.invoices.retrieve(invoice_id); const shortenedURL = invoice1.hosted_invoice_url; return shortenedURL;
说明
unit_amount:传入单个商品的价格(需转换为对应货币的最小单位,比如新加坡元的分)quantity:传入商品的购买数量- Stripe会自动计算
unit_amount × quantity作为该条目的总金额,结果和你之前手动计算的一致,同时能正确在发票上显示数量和单价信息。
内容的提问来源于stack exchange,提问作者Surabhi MS
相关产品推荐
相关产品推荐

