立即支付一次,并可选择(!)创建一个订阅——如何在 Stripe 中做到这一点?

Pay now once and, optionally (!), create a subscription too -- how to do this in Stripe?

在一个页面上有一个文本框,客户或付款人在其中输入要通过 Stripe 捐赠给我的金额,作为一次性付款。还有一个复选框“每月 5 美元订阅”,如果选中,将向他收取该金额 afterwards

事情是:

这是一次性付款无论如何并立即收费;自定义金额——无论客户输入什么。 并且,可选地,客户将在一个月内开始自动在订阅中每月收取 5 美元 - 当且仅当,他选中一个复选框。

我知道如何创建一次向客户收费的会话,这里是部分代码:

    stripeParams := &stripe.CheckoutSessionParams{
        PaymentMethodTypes: stripe.StringSlice([]string{
            "card",
        }),

        LineItems: []*stripe.CheckoutSessionLineItemParams{
            &stripe.CheckoutSessionLineItemParams{
             PriceData: &stripe.CheckoutSessionLineItemPriceDataParams{
                 Currency: stripe.String(string(stripe.CurrencyUSD)),
                 ProductData: &stripe.CheckoutSessionLineItemPriceDataProductDataParams{
                     Name: stripe.String("test123"),
                 },
                 UnitAmount: stripe.Int64(amount * 100),
             },
             Quantity: stripe.Int64(1),
            },
        },
        Mode: stripe.String(string(stripe.CheckoutSessionModePayment)),

    //........

我将如何实施“加上每月 5 美元的订阅费”?

如果您想通过结帐会话创建订阅,您应该遵循此指南:https://stripe.com/docs/billing/subscriptions/checkout

总而言之,如果您想在客户输入的一次性付款金额之上添加 5 美元的订阅,您可以执行以下操作:

  1. Dashboard or the API
  2. 中创建产品和关联的 5 美元经常性价格
  3. 将结帐会话从 mode: payment 更改为 mode: subscription(参见 apiref
  4. 添加您在第 1 步中创建的价格 ID,并将其添加为结帐会话的附加行项目(请参阅 apiref
  5. 设置 subscription_data.trial_end (apiref) or subscription_data.trial_period_days (apiref) 以便在试用结束之前不会收取经常性价格。一次性价格仍将预先收取,即使重复价格处于试用状态。

如果您不想使用试用版,您也可以考虑向会话中添加一次性 5 美元 discount