条纹如何在 checkout.session.completed 中捕获最后 4 个卡位

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

我创建付款链接如下

//Create payment link
    var quantity int64 = 1
    linkParams := &stripe.PaymentLinkParams{
        LineItems: []*stripe.PaymentLinkLineItemParams{
            {
                Price:    &priceObj.ID,
                Quantity: &quantity,
            },
        },
        Params: stripe.Params{
            Metadata: map[string]string{
                "id": 'some id',
                "value": 'some value',
            },
        },
    }
    result, linkError := paymentlink.New(linkParams)

然后,当用户单击此付款链接时,付款表单将打开,并且一旦处理付款,我的 webhook 就会被触发。

我监听事件“charge.succeeded”和“checkout.session.completed” 所以这就是问题,我需要卡的最后 4 位数字(我通过“charge.succeeded”获得,但不是通过“checkout.session.completed”获得)以及我在创建付款链接时设置的元数据(通过“checkout”获得) .session.completed' 但不带有 'charge.succeeded')

那么有没有办法在任何“checkout.session.completed”中同时获取最后 4 位数字和元数据? 我尝试了很多方法,例如使用 id 访问 PaymentIntent 但没有获取值。

go stripe-payments
1个回答
0
投票

捕获

last4
metadata
的最佳方法是仅侦听这两个事件并缓存其内容以便于查找。

如果您绝对必须为每个属性都有一个序列化工作流程,那么从单个 Webhook 获取它们的最佳方法将取决于您正在侦听的事件。

例如: 要从

last4
事件获取
checkout.session.completed
,您需要获取与结帐会话的付款意图关联的费用对象。这看起来像这样:

  1. 摄取
    checkout.session.completed
    webhook 事件
  2. 提取结帐会话的
    payment_intent
    属性上的 ID(请参阅此处
  3. 使用付款意向 ID 检索付款意向(请参阅此处),确保
    expand
    latest_charge
    对象(请参阅此处了解属性,请参阅此处了解扩展)
  4. 解析步骤 3 中执行的 Retrieve API 调用的有效负载并查找
    latest_charge.payment_method_details.card.last4

类似的方法可以用于从

metadata
获取
charge.succeeded
,只不过您可以使用费用的
payment_intent
ID 来进行列出所有结帐会话 API 调用,以筛选特定的付款意图。

© www.soinside.com 2019 - 2024. All rights reserved.