条纹,验证卡,只在行动后充电

时间:2015-07-09 02:11:58

标签: php paypal payment stripe-payments

我正致力于为网站启用付款。我正在使用Stripe作为提供者。如果有两个条件,我想知道如何为卡充电。当用户付费时,我想更改数据库中的值,并为卡充电。但是如果数据库查询失败,我不想收取卡。同样,我不想查询该卡是否无效。我需要两个,卡有效,查询成功。我该怎么做?

以下是为卡充电的代码

try {
$charge = \Stripe\Charge::create(array(
  "amount" => $amount, // amount in cents, again
  "currency" => "cad",
  "source" => $token,
  "description" => $description)
);
} catch(\Stripe\Error\Card $e) {
  // The card has been declined
}

2 个答案:

答案 0 :(得分:4)

您应考虑为客户收费,而不是为卡充电。 我的意思是:

<强> 1. Create a customer

$customer = \Stripe\Customer::create(array(
  "description" => "Customer for test@example.com",
  "source" => "tok_15gDQhLIVeeEqCzasrmEKuv8" // obtained with Stripe.js
));

<强> 2. Create a card

$card = $customer->sources->create(array("source" => "tok_15gDQhLIVeeEqCzasrmEKuv8"));

来自Stripe API参考:

  

来源| external_account   REQUIRED   向客户添加卡时,参数名称为source。该值可以是令牌,如我们的Stripe.js返回的令牌,也可以是包含用户信用卡详细信息的字典。 Stripe会自动验证卡片。

通过创建卡片,Stripe将自动验证它。因此,如果您拥有有效的信用卡对象,则可以在数据库中执行任何查询,如果成功,则向客户收取费用。

<强> 3. Charge

\Stripe\Charge::create(array(
    "amount" => 400,
    "currency" => "usd",
    "source" => "tok_15gDQhLIVeeEqCzasrmEKuv8", // obtained with Stripe.js,
    // "customer" => $cusomer->id // the customer created above
    "metadata" => array("order_id" => "6735")
));

收费时,您可以传递来源(使用Stripe.js获得的令牌)或我们刚创建的客户ID。

也不要忘记try...catch一切。

答案 1 :(得分:4)

好的,所以在阅读了API之后,我发现通过将capture参数设置为false可以实现这一点

像这样:

$charge = \Stripe\Charge::create(array(
  "amount" => $amount, // amount in cents, again
  "currency" => "cad",
  "source" => $token,
  "description" => $description,
  "capture" => false)
);

这将授权付款和卡,但不会产生费用。在您进行查询并确保其成功后,您可以使用此方法向客户收取费用(获取费用)

$ch = \Stripe\Charge::retrieve({$charge->id});
$ch->capture();