首页 > 解决方案 > 与一次性付款相反的连接帐户和创建订阅

问题描述

我是一个小市场。有推荐人/关联账户 (A) 和用户 (B)。推荐带来新用户,用户是为某些服务付费的人。并且付款将被拆分:90% 将分配给带来特定用户的推荐人,10% 将分配给市场。

用户有 2 个选项:一次性付款或创建订阅。我已经实现了前者,它工作正常,这是代码的一部分:

    //for one time payments - all is good

    if md == stripe.CheckoutSessionModePayment {

        stripeParams.PaymentIntentData = &stripe.CheckoutSessionPaymentIntentDataParams{
            ApplicationFeeAmount: stripe.Int64(appFeeInCents), // 10% of a price, in cents
            TransferData: &stripe.CheckoutSessionPaymentIntentDataTransferDataParams{
                Destination: stripe.String(stripeRefr.StripeAccountId), //Stripe connected account id of a referral, retrieved from Db
            },

            //important!
            OnBehalfOf: stripe.String(stripeRefr.StripeAccountId), //Stripe connected account id of a referral, retrieved from Db
        }
    } else {

        //for subscriptions - this won't work

        //how to implement it?

        // stripeParams.SubscriptionData = &stripe.CheckoutSessionSubscriptionDataParams{
        //    // Items: []*stripe.SubscriptionItemsParams{
        //    //   {
        //    //     price: stripe.String("price_id_from_stripe_123"),
        //    //   },
        //    // },
        //    // TransferData: &stripe.InvoiceTransferDataParams{
        //    //   Destination: stripe.String(stripeRefr.StripeAccountId),
        //    // },
        //    // ApplicationFeePercent: stripe.Float64(cfg.Stripe.ApplicationFeePercent),
        //    ApplicationFeePercent: stripe.Float64(10),
        // }
    }


    sess, err := session.New(stripeParams)

我想为订阅做同样的事情。怎么做?

这段代码是 Go 语言,但我也能理解其他语言的代码。

标签: gostripe-payments

解决方案


下面的代码应该可以工作

params := &stripe.SubscriptionParams{
  Customer: stripe.String("cus_..."),
  Items: []*stripe.SubscriptionItemsParams{
    {
      Price: stripe.String("price_..."),
    },
  },
  ApplicationFeePercent: stripe.Float64(10),
  TransferData: &stripe.SubscriptionTransferDataParams{
    Destination: stripe.String("acct_..."),
  },
}

推荐阅读