在我的应用程序中,由于特定原因,我通过将“付款计划”设置为“手动”,在用户的自定义帐户中保留了一定金额。这让我可以将自定义帐户中的付款保留最多 90 天。并且在某些场景下,用户甚至可以在90天之前将付款重新释放到外部帐户。
现在我的问题是,由于 Stripe 需要 2 到 7 天的时间才能完成付款,因此我只能在处理完成后才能发放付款。
我如何才能了解这一点?我如何知道交易是否处于待处理状态,然后如何知道它是否可用于银行帐户中的付款? 有什么办法可以实现吗?请告诉我,因为我是 Stripe 新手。 任何帮助将不胜感激。
最佳答案
您是在谈论身份验证和捕获吗?验证是指您确保用户的银行允许用户进行交易。然后,一旦付款获得授权,您就可以捕获它,并将资金转移到 Stripe。
示例:您正在以 5000 美元的价格销售一项服务,例如 Web 开发。您首先要确保此人有钱。您还想确保有钱的人在您为他们提供服务时不会花掉这些钱。
解决这个问题的方法是:
- 通过 Stripe 验证付款。您验证付款后,付款就会进入该人的银行帐户中的“待处理”状态(他们无法再花这笔钱)。
- 提供您的服务
- 捕获付款。这笔钱将从他们的帐户中扣除并添加到您的 Stripe 帐户中。
通过Stripe的API来做到这一点的方式是:Auth
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
// Token is created using Checkout or Elements!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];
// Charge the user's card:
$charge = \Stripe\Charge::create(array(
"amount" => 999,
"currency" => "usd",
"description" => "Example charge",
"capture" => false,
"source" => $token,
));
提供您的服务...然后捕获
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
$charge = \Stripe\Charge::retrieve("ch_1A9eP02eZvKYlo2CkibleoVM");
$charge->capture();
当您创建费用时,它将在 JSON 结果中返回一个 ID 以及是否已被捕获。如果您想检查身份验证是否成功,请首先将 ID 保存在对费用的响应中...响应将如下所示...
Stripe\Charge JSON: {
"id": "ch_1CCjK02eZvKYlo2C85c1GGmL",
"object": "charge",
"amount": 2000,
"amount_refunded": 0,
"application": null,
"application_fee": null,
"balance_transaction": "txn_19XJJ02eZvKYlo2ClwuJ1rbA",
"captured": false,
......... more ........
},
要检查费用,看看它是否已被授权,您可以执行以下操作...
\Stripe\Stripe::setApiKey("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
\Stripe\Charge::retrieve("ch_1CCjK02eZvKYlo2C85c1GGmL");
响应将类似于...
Stripe\Charge JSON: {
"id": "ch_1CCjK02eZvKYlo2C85c1GGmL",
"object": "charge",
"amount": 2000,
"amount_refunded": 0,
"application": null,
"application_fee": null,
"balance_transaction": "txn_19XJJ02eZvKYlo2ClwuJ1rbA",
"captured": true,
"created": 1522739568,
....more....
"outcome": {
"network_status": "approved_by_network",
"reason": null,
"risk_level": "normal",
"seller_message": "Payment complete.",
"type": "authorized" // AUTHORIZED
然后你就收费了。完成。
关于php - Stripe - 手动支付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49622912/