php - Stripe - 手动支付

标签 php android ios stripe-payments stripe-connect

在我的应用程序中,由于特定原因,我通过将“付款计划”设置为“手动”,在用户的自定义帐户中保留了一定金额。这让我可以将自定义帐户中的付款保留最多 90 天。并且在某些场景下,用户甚至可以在90天之前将付款重新释放到外部帐户。

现在我的问题是,由于 Stripe 需要 2 到 7 天的时间才能完成付款,因此我只能在处理完成后才能发放付款。

我如何才能了解这一点?我如何知道交易是否处于待处理状态,然后如何知道它是否可用于银行帐户中的付款? 有什么办法可以实现吗?请告诉我,因为我是 Stripe 新手。 任何帮助将不胜感激。

最佳答案

您是在谈论身份验证和捕获吗?验证是指您确保用户的银行允许用户进行交易。然后,一旦付款获得授权,您就可以捕获它,并将资金转移到 Stripe。

示例:您正在以 5000 美元的价格销售一项服务,例如 Web 开发。您首先要确保此人有钱。您还想确保有钱的人在您为他们提供服务时不会花掉这些钱。

解决这个问题的方法是:

  1. 通过 Stripe 验证付款。您验证付款后,付款就会进入该人的银行帐户中的“待处理”状态(他们无法再花这笔钱)。
  2. 提供您的服务
  3. 捕获付款。这笔钱将从他们的帐户中扣除并添加到您的 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

然后你就收费了。完成。

https://stripe.com/docs/charges

关于php - Stripe - 手动支付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49622912/

相关文章:

javascript - 自定义数据属性,切碎并嵌入 <img>

php - 使用PHP阻止用户下载代码,但代码是cpu密集型的

javascript - Phonegap IOS 地理定位权限警报未显示

全国 iOS 离线 map (OSM)

ios - Realm 列表未保存数据

php - 从 MySQL 获取数据的更有效方法

php - 如何使用 php 循环遍历该数组并在每一行中打印一个结果

java - 未引用的方法是否包含在最终的可执行文件中?

安卓屏幕方向 : Portrait doesn't work

android - 使用 XMLPullParser 解析 XML