如何在 payment_intent.succeeded 中查看条带创建会话详细信息?

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

借助此功能,我正在创建条带结帐会话,该会话将为我提供付款网址。 我在会话中传递 client_reference_id = sender_id 我如何在我的付款意图成功有效负载中获取它。 这两者是如何连接的帮助我。

def generate_payment_link(sender_id, selected_option_title, email_address): #genrating payment link
    try:
        # Create a Checkout Session
        session = stripe.checkout.Session.create(
            payment_method_types=['card'],
            line_items=[{
                'price_data': {
                    'currency': 'inr',
                    'product_data': {
                        'name': f'{selected_option_title}',
                    },
                    'unit_amount': 10000,  
                },
                'quantity': 1,
                "adjustable_quantity": {
                    "enabled": "True",
                    "maximum": "100",
                    "minimum": "1"
            }, 
                 
            }],
           
            customer_email = email_address,
            client_reference_id = sender_id,
            mode='payment',
            success_url='https://example.com/success',
            cancel_url='https://example.com/cancel',
        )
        
        payment_link = session.get('url') 
        return payment_link
    except Exception as e:
        print(f"Error generating payment link: {e}")

并在我的网络钩子中接收,就像这样

@app.post("/stripe-webhook")
async def webhook(request: Request):
    """ other code""" 
    if event['type'] == 'checkout.session.completed':
        session = event['data']['object']
        print(session)
     
    elif event['type'] == 'payment_intent.succeeded':
        payment_intent = event['data']['object']
        
        send_success_payment_message()

我尝试传递元数据,但没有收到有关我的付款意图成功有效负载的数据

python stripe-payments fastapi payment-gateway
1个回答
0
投票

使用结帐会话时,最好监听

checkout.session.completed
事件而不是
payment_intent.succeeded
来完成订单。 这里有更好的解释。

付款失败如何处理?

我们在结账会话中有 3 种付款失败的情况:

  1. 支付方式同步失败(例如卡被拒绝等),这不会触发任何事件,只会在前端失败
  2. 支付方式是异步的(如银行扣款等),需要等待
    checkout.session.async_payment_succeeded
    checkout.session.async_payment_failed
    事件才能知道支付是否成功
  3. 会话默认在 24 小时后过期,您会收到
    checkout.session.expired
    事件
© www.soinside.com 2019 - 2024. All rights reserved.