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

如何通过Stripe按指定条件收费并生成支付详情PDF

问题解答

一、自定义金额收费并传入产品相关参数

要实现自定义总金额收费,同时记录Product ID、Price ID和数量,推荐使用Stripe Checkout Session(无需前端处理敏感支付信息,更安全),具体步骤如下:

1. 后端核心逻辑

用户在前端选好数量点击「立即支付」后,前端将quantity传给后端,后端执行以下操作:

  • 用自有算法计算折扣后的总金额(转换为Stripe要求的最小货币单位,比如25美元需转为2500美分)
  • 创建Checkout Session,关键配置示例(Node.js):
    const stripe = require('stripe')('你的API秘钥');
    
    const session = await stripe.checkout.sessions.create({
      mode: 'payment',
      payment_method_types: ['card'],
      line_items: [
        // 原产品项:关联已有的固定Price ID和用户选择的数量,展示原价明细
        {
          price: '你的10美元Price ID',
          quantity: 用户选择的数量,
        },
        // 折扣项:用提前创建的「折扣产品」生成负数金额项,抵消原价实现自定义总金额
        {
          price_data: {
            currency: 'usd',
            product: '你在Stripe后台创建的折扣产品ID',
            unit_amount: -折扣金额(美分), // 比如折扣5美元填-500
          },
          quantity: 1,
        },
      ],
      // 存入需要留存的参数,后续可通过API或Dashboard查询
      metadata: {
        product_id: '你的目标产品ID',
        original_price_id: '你的10美元Price ID',
        quantity: 用户选择的数量,
      },
      success_url: '支付成功后的跳转URL',
      cancel_url: '支付取消后的跳转URL',
    });
    
  • 将生成的session.url返回给前端,前端跳转该URL完成支付。

2. 简化方案(无需展示折扣明细)

如果不需要在支付页面显示原价和折扣,仅需直接收取自定义总金额并记录参数:

const session = await stripe.checkout.sessions.create({
  mode: 'payment',
  payment_method_types: ['card'],
  line_items: [
    {
      price_data: {
        currency: 'usd',
        product: '你的目标产品ID',
        unit_amount: 自定义总金额(美分), // 比如2500
      },
      quantity: 1,
    },
  ],
  metadata: {
    original_price_id: '你的10美元Price ID',
    actual_quantity: 用户选择的数量,
  },
  success_url: '...',
  cancel_url: '...',
});

二、生成支付详情PDF

Stripe支持生成标准支付详情PDF,需通过「发票(Invoice)」功能实现,具体流程:

1. 监听支付完成事件

配置Stripe Webhook监听checkout.session.completed事件,支付成功后触发后续逻辑。

2. 创建发票并生成PDF

在Webhook处理函数中,生成关联该支付的发票并获取PDF链接:

// Webhook中处理支付完成事件
const session = event.data.object;
// 创建客户(若之前未关联)
const customer = await stripe.customers.create({
  email: session.customer_details.email,
});
// 创建发票,还原产品、数量、折扣明细
const invoice = await stripe.invoices.create({
  customer: customer.id,
  collection_method: 'send_invoice',
  days_until_due: 0,
  line_items: [
    {
      price: '你的10美元Price ID',
      quantity: session.metadata.quantity,
    },
    {
      price_data: {
        currency: 'usd',
        product: '折扣产品ID',
        unit_amount: -折扣金额(美分),
      },
      quantity: 1,
    },
  ],
});
// 获取发票PDF链接
const invoiceDetail = await stripe.invoices.retrieve(invoice.id, {
  expand: ['invoice_pdf'],
});
// invoiceDetail.invoice_pdf 即为PDF的可访问URL,可下载存储或直接提供给用户

3. 补充说明

  • 生成的PDF包含发票编号、客户信息、产品明细、总金额等完整支付记录,符合财务合规要求。
  • 手动场景可在Stripe Dashboard找到对应支付记录,关联发票后直接下载PDF;自动化场景建议用API实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:57:01