leifermendez / laravel-stripe
此包最新版本(1.1.0)没有提供许可证信息。
用于laravel的包,已集成欧洲SCA(支付服务法规)系统,日期为2021年9月14日
1.1.0
2019-10-24 18:05 UTC
Requires
- ext-curl: *
- ext-json: *
This package is auto-updated.
Last update: 2024-08-29 04:49:14 UTC
README
以下将展示如何使用SCA协议在Stripe中进行充值。此包允许我们注册用户,保存卡片用于后续支付,创建支付意图。
注意:在继续之前,请记得在 Stripe 获取您的访问凭证
安装
composer require leifermendez/laravel-stripe
Laravel 5.* 集成
将服务提供者添加到您的 config/app.php
文件中
'providers' => array( //... leifermendez\stripe\StripeProvider::class, ),
将外观添加到您的 config/app.php
文件中
'aliases' => array( //... 'StripeSCA' => leifermendez\stripe\StripeLaravelFacade::class, ),
使用
请记住将您的凭证放入 .env 文件中,模式:"sandbox" 或 "live"
# STRIPE
STRIPE_PK=pk_test_xxxxxxxxxxxx
STRIPE_SK=sk_test_xxxxxxxxxxx
STRIPE_MODE=sandbox
(1) 获取卡片Token
在某些情况下,需要通过API获取卡片Token(不推荐),建议使用 StripeJS
StripeJS 演示
//Test card: https://stripe.com/docs/testing#cards $card_data = array( 'card' => [ 'number' => 4000002500003155, 'exp_month' => 12, 'exp_year' => 2020, 'cvc' => 123 ] ); $card = StripeLaravelFacade::tokenCard($card_data); $card = json_decode($card, true); dd($card);
(2) 保存客户
如果我们想保存我们的客户以供以后查询。
// https://stripe.com/docs/api/payment_intents/create $data = array( 'email' => 'leifer33@gmail.com', 'source' => 'tok_1FOO42HBaMrHjOH4Cu0dnogU' // <-- Token Card Paso (1) ); $user = StripeLaravelFacade::saveCustomer($data); $user = json_decode($user, true); dd($response);
(3) 创建支付
注意:由于SCA的实施,支付必须在"支付意图" 下进行。技术上,我们执行的是请求支付的操作,Stripe负责检查卡片是否需要或不需要两步验证。
行为:可能发生两种情况
- (1) 不需要双重验证,支付将正确完成。
- (2) 需要双重验证
- 响应的 "status" 将决定采取的行动 查看更多状态。在此情况下最常见的状态是
requires_action
,此操作只能通过StripeJS完成
- 响应的 "status" 将决定采取的行动 查看更多状态。在此情况下最常见的状态是
// https://stripe.com/docs/api/payment_intents/create $amount = 134; $charge = array( 'description' => 'Mi primer cobro', 'amount' => floatval($amount * 100), 'currency' => 'EUR', 'payment_method_types' => ['card'], 'customer' => cus_G0amE3Dmn4p1f0, // <--- ID Customer Paso (2) 'setup_future_usage' => 'off_session' // <--- Off Session ); $response = StripeLaravelFacade::charge_sca($charge); dd($response);
(3.1) 创建未捕获的支付
注意:(未捕获的),是需要保留或冻结以供以后使用或放弃的支付。例如:如果您有酒店,希望收取100EUR的保证金或押金,您可以使用此选项,因为系统会冻结客户卡片上的此金额7天。这笔钱只有在接下来的7天内才能用于收取,否则如果未进行任何收取,Stripe将释放此金额给客户。
$amount = 134; $charge = array( 'description' => 'Cobro de fianza' , 'amount' => floatval($amount * 100), 'currency' => 'EUR', 'payment_method_types' => ['card'], 'off_session' => 'true', 'confirm' => 'true', 'capture_method' => 'manual', // <--- Indicamos que es un pago No Capturado 'source' => 'card_1FX8TaHBaMrHjOH4MeiQmvPC', // <--- ID Source Customer Paso (2) 'customer' => 'cus_G0amE3Dmn4p1f0' // <--- ID Customer Paso (2) ); $response = StripeLaravelFacade::charge_sca($charge); dd($response);