本文将指导您如何在 Stripe 中灵活控制支付捕获的时机,既可以设置自动捕获,也可以使用手动捕获,以便在特定时间点或满足特定条件后才真正完成交易。
PaymentIntent 的捕获方式Stripe 提供了两种主要的 PaymentIntent 捕获方式:自动捕获和手动捕获。默认情况下,PaymentIntent 创建后会自动捕获授权金额。如果您需要更精细地控制捕获时机,可以选择手动捕获。
手动捕获的实现步骤-
创建 PaymentIntent 并设置 capture_method 为 manual:
在创建 PaymentIntent 时,将 capture_method 参数设置为 manual。这将指示 Stripe 仅预授权付款,而不是立即捕获。预授权有效期最长为 7 天。
import stripe stripe.api_key = "YOUR_STRIPE_SECRET_KEY" payment_intent = stripe.PaymentIntent.create( amount=1000, # 金额,单位为分 currency="usd", capture_method="manual", payment_method_types=["card"], ) print(payment_intent.id)
注意: 将 YOUR_STRIPE_SECRET_KEY 替换为您的 Stripe Secret Key。
燕雀光年
一站式AI品牌设计平台,支持AI Logo设计、品牌VI设计、高端样机设计、AI营销设计等众多种功能
68 查看详情
-
在预定时间后捕获 PaymentIntent:
使用 Stripe API 的 capture endpoint 手动捕获 PaymentIntent。您可以使用 payment_intent.capture() 方法,也可以使用 stripe.PaymentIntent.capture() 方法。
import stripe import time stripe.api_key = "YOUR_STRIPE_SECRET_KEY" payment_intent_id = "YOUR_PAYMENT_INTENT_ID" # 替换为实际的 PaymentIntent ID # 等待5分钟 time.sleep(300) try: payment_intent = stripe.PaymentIntent.capture(payment_intent_id) print("Payment captured successfully!") print(payment_intent) except stripe.error.StripeError as e: print(f"Error capturing payment: {e}")
注意: 将 YOUR_STRIPE_SECRET_KEY 替换为您的 Stripe Secret Key,并将 YOUR_PAYMENT_INTENT_ID 替换为实际的 PaymentIntent ID。上述代码示例中,我们使用 time.sleep(300) 模拟等待 5 分钟。在实际应用中,您可以根据需要调整等待时间。
- 有效期: 请注意,预授权的有效期最长为 7 天。如果在此期间未捕获付款,预授权将失效。
- 部分捕获: 使用 capture() 方法进行捕获时,只能全额捕获预授权的金额。Stripe 不支持部分捕获。如果需要部分退款,可以使用 Stripe 的退款功能。
- 错误处理: 在捕获 PaymentIntent 时,务必进行错误处理,以应对可能出现的异常情况,例如余额不足、卡片失效等。
- 时区问题: 在安排延迟捕获时,请注意时区问题,确保在正确的时间捕获付款。
通过设置 capture_method 为 manual 并结合 capture endpoint,您可以灵活地控制 Stripe PaymentIntent 的捕获时机,从而满足各种业务场景的需求。这种方法特别适用于需要延迟捕获付款的场景,例如订单发货后或服务完成后。请务必仔细阅读 Stripe 官方文档,并根据您的具体需求进行调整和测试。
以上就是使用 Stripe 实现手动/自动捕获的详细内容,更多请关注资源网其它相关文章!
相关标签: 退款 red 大家都在看: 教程:如何在Java中通过用户输入退出循环 生成准确表达文章主题的标题如何在Java中使用用户输入退出循环 如何在Java中使用用户输入退出for或while循环 在JAR中整合Kotlin Native可执行文件与JVM回退机制的实践指南 如何用Java实现小程序订单退款流程 Java退款流程自动化设计
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。