use*_*334 5 php payment paypal stripe-payments
我正在为网站启用付款。我使用 Stripe 作为提供者。我想知道如果 2 个条件为真,我如何为卡充电。当用户付款时,我想更改数据库中的一个值,然后向卡收费。但是如果数据库查询失败,我不想对该卡收费。同样,我不想查询卡是否无效。我需要卡片有效和查询成功。我怎么做?
这是充值卡的代码
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
}
Run Code Online (Sandbox Code Playgroud)
您应该考虑向客户收费,而不是向卡收费。我的意思是:
$customer = \Stripe\Customer::create(array(
"description" => "Customer for test@example.com",
"source" => "tok_15gDQhLIVeeEqCzasrmEKuv8" // obtained with Stripe.js
));
Run Code Online (Sandbox Code Playgroud)
$card = $customer->sources->create(array("source" => "tok_15gDQhLIVeeEqCzasrmEKuv8"));
Run Code Online (Sandbox Code Playgroud)
来自 Stripe API 参考:
来源 | external_account REQUIRED 向客户添加卡片时,参数名称为 source。该值可以是一个令牌,如我们的 Stripe.js 返回的令牌,也可以是包含用户信用卡详细信息的字典。Stripe 将自动验证卡。
通过创建卡片,Stripe 将自动对其进行验证。因此,拥有一个有效的信用卡对象,您就可以在数据库上执行您想要的任何查询,如果成功,则向客户收费。
\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")
));
Run Code Online (Sandbox Code Playgroud)
计费时,可以传入source(通过Stripe.js获取的token),也可以传入我们刚刚创建的customer id。
也不要忘记try...catch一切。
好的,所以在阅读 API 后,我发现可以通过将 capture 参数设置为 false 来实现
像这样:
$charge = \Stripe\Charge::create(array(
"amount" => $amount, // amount in cents, again
"currency" => "cad",
"source" => $token,
"description" => $description,
"capture" => false)
);
Run Code Online (Sandbox Code Playgroud)
这将授权付款和卡,但不会产生费用。进行查询并确保成功后,您可以使用此向客户收费(捕获费用)
$ch = \Stripe\Charge::retrieve({$charge->id});
$ch->capture();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7208 次 |
| 最近记录: |