我正在使用 Stripe 的结帐功能。我的产品需要几分钟才能生成,因此我想保留资金,仅在客户的产品准备就绪后才向他们收费。是否可以在不重构的情况下使用此功能来做到这一点?
\n
这段代码对我有用:
\n<?php\n$amount = 50;\n\n$stripe = new \\Stripe\\StripeClient(env(\'STRIPE_SECRET\'));\n\n$session = $stripe->checkout->sessions->create([\n \'payment_method_types\' => [\'card\'],\n \'success_url\' => \'reservation.success\'.\'?id={CHECKOUT_SESSION_ID}\',\n \'cancel_url\' => \'reservation.cancel\',\n \'payment_intent_data\' => [\n \'capture_method\' => \'manual\',\n ],\n\n \'line_items\' => [[\n \'price_data\' => [\n \'currency\' => "eur",\n \'product_data\'=> [\n \'name\'=> "My awesome product",\n ],\n \'unit_amount\'=> $amount * 100,\n ],\n \'quantity\' => 1\n ]],\n \'mode\' => \'payment\',\n]);\n\nreturn redirect()->to($session->url);\nRun Code Online (Sandbox Code Playgroud)\n这是在 Laravel 中完成的。您可能需要对其进行一些调整以满足您的需求。
\n当然你需要
\n$amount你想要在\xe2\x82\xac中收集的数量。currency如果需要,success_urlcancel_url调用此代码后,用户将被重定向到会话 URL 进行付款,然后将其保留在他的卡上。
\n然后您可以稍后通过以下方式获取付款:
\n<?php\n$stripe = new \\Stripe\\StripeClient(env(\'STRIPE_SECRET\'));\n\n$session_id = \'THE_CHECKOUT_SESSION_ID\';\n$payment_intent = $stripe->checkout->sessions->retrieve($session_id)-payment_intent;\n\n$intent = \\Stripe\\PaymentIntent::retrieve($payment_intent);\n// Capture all\n$intent->capture();\n// Alternative: Capture only a part of the reserved amount\n// $intent->capture([\'amount_to_capture\' => 750]);\nRun Code Online (Sandbox Code Playgroud)\n也可以看看https://stripe.com/docs/ payments/capture- later
\n