主页/PHP笔记/PHP问答/框架Laravel/如何将Stripe支付网关添加到Laravel

如何将Stripe支付网关添加到Laravel

Bug编译狮

Bug编译狮

要将Stripe支付网关添加到Laravel项目中,你可以按照以下步骤进行操作:

  1. 安装Stripe PHP库: 首先,你需要在你的项目中安装Stripe PHP库。你可以使用Composer来管理依赖项。

    composer require stripe/stripe-php
  2. 配置Stripe API密钥: 在你的 .env 文件中,添加你的 Stripe API 密钥(Publishable Key 和 Secret Key)。

    STRIPE_PUBLISHABLE_KEY=your_publishable_key
    STRIPE_SECRET_KEY=your_secret_key
  3. 创建支付表单: 创建一个新的控制器或模型来处理支付流程,并编写相应的视图文件。例如,创建一个 PaymentController.php 控制器和一个 payment.blade.php 视图文件。

  4. 生成支付按钮: 在视图文件中生成一个 Stripe 支付按钮的HTML代码。你可以使用 Stripe 的 JavaScript SDK 来实现这一点。

    <script src="https://js.stripe.com/v3/"></script>
    <form id="payment-form">
       <input type="text" id="card-number" placeholder="Card Number">
       <input type="text" id="card-expiry-month" placeholder="Expire Month">
       <input type="text" id="card-expiry-year" placeholder="Expire Year">
       <input type="text" id="card-cvc" placeholder="CVC">
       <button type="submit">Pay Now</button>
    </form>
    
    <script>
       var stripe = Stripe('{{ env('STRIPE_SECRET_KEY') }}');
    
       document.getElementById('payment-form').addEventListener('submit', function(event) {
           event.preventDefault();
    
           stripe.createToken({
               card: document.getElementById('payment-form').elements
           }).then(function(result) {
               if (result.error) {
                   // Handle error
                   alert(result.error.message);
               } else {
                   // Send token to server
                   fetch('/stripe-payment', {
                       method: 'POST',
                       headers: {
                           'Content-Type': 'application/json'
                       },
                       body: JSON.stringify({ token: result.token.id })
                   })
                   .then(response => response.json())
                   .then(data => {
                       if (data.success) {
                           alert('Payment successful!');
                       } else {
                           alert('Payment failed.');
                       }
                   });
               }
           });
       });
    </script>
  5. 处理支付请求: 在你的控制器中处理 Stripe 令牌并执行支付逻辑。

    use StripeStripeClient;
    use StripeToken;
    
    public function stripePayment(Request $request)
    {
       $token = Token::create([
           'card' => [
               'number'    => $request->input('card_number'),
               'exp_month' => $request->input('card_expiry_month'),
               'exp_year'  => $request->input('card_expiry_year'),
               'cvc'      => $request->input('card_cvc')
           ]
       ]);
    
       try {
           $charge = Charge::create([
               'amount'        => 100 * 100, // Amount in cents
               'currency'     => 'usd',
               'source'        => $token->id,
               'description'  => 'Example charge'
           ]);
           return response()->json(['success' => true]);
       } catch (Exception $e) {
           return response()->json(['success' => false, 'message' => $e->getMessage()]);
       }
    }

通过以上步骤,你就可以成功地将Stripe支付网关添加到你的Laravel项目中了。

黑板Bug讲师

黑板Bug讲师

介绍

集成支付网关到web应用程序对于今天的企业来说至关重要。Stripe 是最强大和广泛使用的支付网关之一,为在线企业提供了各种付款处理解决方案。Laravel 是一个强大的且受欢迎的PHP框架,通过其内置功能和包,提供了一种简洁的方法来集成Stripe。在这篇教程中,我们将带您了解如何在Laravel应用中添加Stripe,从设置到成功进行付款处理的过程。

设置您的环境

在将Stripe集成到您的Laravel应用程序之前,您需要准备开发环境。确保系统上已安装Composer和Laravel。如果尚未创建新项目,请创建一个新项目,否则导航到现有项目的目录。接下来,您需要安装Stripe PHP SDK,可以通过Composer进行安装:

composer require stripe/stripe-php

在安装了Stripe PHP SDK后,设置您的Stripe密钥。您可以在Stripe仪表板的“开发者”API密钥部分找到这些密钥。将秘密密钥和发布密钥添加到.env文件中:

STRIPE_KEY=your_publishable_key STRIPE_SECRET=your_secret_key

添加Stripe服务提供商

Laravel 包含了一个Service Provider这有助于注册服务和依赖项。请将以下服务提供者放在您的代码中。config/app.php文件的提供者数组:

AppProvidersStripeServiceProvider::class,

你需要创建这个服务提供者。使用以下的Laravel Artisan命令:

php artisan make:provider StripeServiceProvider

在您创建的新StripeServiceProvider中,注册Stripe客户端:

use StripeStripeClient;

public function register()
{
    $this->app->singleton(StripeClient::class, function ($app) {
        return new StripeClient(config('services.stripe.secret'));
    });
}

请记得在您的系统中添加Stripe凭证。config/services.php

'stripe' => [
    'model' => AppUser::class,
    'key' => env('STRIPE_KEY'),
    'secret' => env('STRIPE_SECRET'),
],

准备前端开发工作。

下一步是准备您的应用程序前端以接受付款信息。Stripe 提供了一个名为 Stripe.js 和 Stripe Elements 的功能,允许您安全地收集支付详情。在 Blade 模板中包含 Stripe.js:

<script src="https://js.stripe.com/v3/"></script>

创建一个表单,用于接收使用Stripe Elements的信用卡信息:

<form id="payment-form">
    <div id="card-element">
        <!-- Stripe.js injects the Card Element -->
    </div>
    
    <!-- Add a button to submit the form -->
    <button id="submit">Pay</button>
</form>

按钮将在Stripe.js完全加载之前禁用。添加必要的JavaScript以挂载元素并处理表单提交:

<script>
    var stripe = Stripe('your_publishable_key');
    var elements = stripe.elements();

    var card = elements.create('card');
    card.mount('#card-element');

    var form = document.getElementById('payment-form');
    form.addEventListener('submit', function(event) {
        event.preventDefault();

        stripe.createToken(card).then(function(result) {
            if (result.error) {
                // Inform the user if there was an error.
            } else {
                // Send the token to your server.
            }
        });
    });
</script>

创建支付路由和控制器

在你的 web.php 文件中,为处理支付创建一个路由:

Route::post('/payment', 'PaymentController@store');

然后,生成一个 PaymentController:

php artisan make:controller PaymentController

在您的 PaymentController 中添加处理支付的函数:

use StripeStripeClient;
use IlluminateHttpRequest;

class PaymentController extends Controller
{
    protected $stripe;

    public function __construct(StripeClient $stripe)
    {
        $this->stripe = $stripe;
    }

    public function store(Request $request)
    {
        $token = $request->stripeToken;

        try {
            $charge = $this->stripe->charges->create([
                'amount' => 1000, // $10, in cents
                'currency' => 'usd',
                'description' => 'Example charge',
                'source' => $token,
            ]);
        } catch (Exception $e) {
            return back()->with('error', $e->getMessage());
        }

        return back()->with('success', 'Payment successful');
    }
}

使用此代码,您可以通过Stripe进行支付处理。务必妥善处理异常情况以避免暴露敏感信息。

正在测试集成。

在使您的应用上线之前,使用Stripe的测试模式和卡号进行支付流程测试。在您的Stripe仪表板中切换到“查看测试数据”,并使用Stripe提供的测试卡号进行模拟。

记得在您的支付表单中添加CSRF保护:

@csrf

请参阅:如何在Laravel中禁用/启用CSRF保护。

确保将Stripe令牌传递到你的路由,可以通过在表单中使用隐藏输入来实现:

<input type="hidden" name="stripeToken" id="stripeToken">

这种设置适用于一次性的付款。然而,Stripe 可以处理更复杂的场景,如订阅,这需要额外的步骤来管理。

结论。

集成Stripe到Laravel是一种简单的过程,极大地增强了您的应用程序的支付处理能力。通过遵循本教程中的方法,您可以为您的Laravel项目添加强大的支付功能,并根据业务需求进行定制。请务必小心处理敏感数据,并始终确保您的Stripe和Laravel包是最新的,以实现安全性和性能改进。

长工码奴1523

长工码奴1523

Stripe支付网关是用于处理在线支付的平台。要在 Laravel 应用程序中使用 Stripe,你需要遵循以下步骤:

  1. 安装 Stripe

首先,确保你的 Laravel 项目已经安装了 Composer。然后,打开终端(命令行工具)并运行以下命令来安装 Stripe:

composer require stripe/stripe-php
  1. 创建一个新的 Stripe 用户密钥和 API 密钥
  • 打开 config/app.php 文件,并找到 $stripe 配置项。
  • stripe.api_key 设置为你的 API 密钥。

例如,如果你的 API 密钥是 `sk_test_1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef