如何将产品元数据传递给通过 Stripe 客户门户发出的事件

问题描述 投票:0回答:2

我正在使用 Stripe 客户门户来让客户管理他们的账单。 我为每个产品添加了元数据,以便我可以根据这些元数据配置用户。

我可以通过传递如下元数据成功地在 Stripe Checkout 会话中配置用户:

const session = await Stripe.checkout.sessions.create({
        mode: 'subscription',

        metadata: {
           
            teamSize: productObject.metadata.teamSize,
            accountType: productObject.metadata.accountType,
            accountStatus: productObject.metadata.accountStatus
        },

        line_items: [
            {
                price: price_id,
                quantity: 1
            }
        ],

        success_url: `${url}` + "/success?session_id={CHECKOUT_SESSION_ID}'",
        cancel_url: `${url}` + '/cancelled'
    });

同样,当用户通过 Stripe 客户门户时,有什么方法可以传递产品元数据吗?如果没有,在不同事件(发票更新、客户订阅更新等)获取产品元数据的最佳方式是什么


router.post('/create-customer-portal-session',  async (req, res) => {


    const session = await Stripe.billingPortal.sessions.create({
        customer: company.billingId,
        return_url: `${url}`
    });

    res.status(200).send(session.url);
});

stripe-payments
2个回答
0
投票

无法在计费门户调用中传递元数据。

如果您的元数据存储在产品本身上,那么您可以在处理计费门户会话产生的任何订阅 Webhook 事件时访问它。

  1. 订阅项目
  2. 中的价格中选择所有产品 ID
  3. 使用这些 ID 拨打电话列出产品
  4. 既然您的子目录中有产品元数据和客户参考,请执行您需要执行的任何帐户配置操作。

0
投票

2步解决方案:
在使用“type”创建门户之前,您可以通过更新/修改订阅来传递元数据:“subscription_update_confirm”

#1-将元数据传递到您的订阅

stripe.Subscription.modify(
  subscription.id,
  metadata={'ids':ids,'email':email},
)

#2-创建“type”的Portal:“subscription_update_confirm”

checkout_session = stripe.billing_portal.Session.create(
                customer=customer.id,
                flow_data={
                    "type": "subscription_update_confirm",
                    "subscription_update_confirm": {
                        "subscription": subscription.id,
                        "items":[
                            {
                            'id': subscription['items']['data'][0].id,
                            'price': priceId,
                            'quantity': quantity,
                            }
                        ]
                    },
        ...
© www.soinside.com 2019 - 2024. All rights reserved.