首页 > 文章列表 > 付款 Laravel开发中使用Laravel Cashier和PayPal的指南

付款 Laravel开发中使用Laravel Cashier和PayPal的指南

laravel Cashier PayPal
315 2024-01-21

支付

在现代电子商务领域中,支付系统对于网站或应用程序的成功运营至关重要。许多应用程序框架包括具有内置支付处理能力的库或组件。为了简化这个过程,开发人员可以使用 Laravel Cashier 和 PayPal。

Laravel Cashier 是一个 Laravel 的扩展包,用于处理与 Stripe(一个基于互联网的支付处理系统)相关的付款,取款和订阅。PayPal 是一个广泛使用的在线支付处理系统,用于向用户付款和收款。在这篇文章中,我们将涵盖如何使用 Laravel Cashier 和 PayPal 处理支付。

首先,我们需要通过 Laravel 的 Composer 包管理器安装 Laravel Cashier。在您的终端中,切换到您的应用程序目录并运行以下命令:

composer require laravel/cashier

Laravel Cashier 需要一个商户 ID 和秘钥来与 Stripe 通信。如果您尚未注册 Stripe 帐户,请注册一个新帐户并获取商户 ID 和秘钥。在您的 Laravel 应用程序中,打开 config/services.php 文件,添加以下内容:

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

在这里,model 属性是您使用的用户模型的名称。key 和 secret 属性是您从 Stripe 中获得的商户 ID 和秘钥。接下来,我们需要在 User 模型中使用 CashierTraits trait:

use LaravelCashierCashier;

class User extends Authenticatable
{
    use HasFactory, Notifiable, Cashier;
    ...
}

现在,您可以在 Laravel 应用程序中使用 Laravel Cashier 处理 Stripe 支付。让我们看一个简单的代码样例:

$user = Auth::user();
$payment = $user->charge(100);

这个例子从当前用户的帐户中扣除了 $100 的费用。现在让我们把这个例子转换为使用 PayPal 处理付款。

首先,我们需要创建一个新的 PayPal 商户帐户。注册和设置该帐户后,我们需要获得一些凭据以与 PayPal API 进行通信。打开 config/services.php 文件,添加以下代码:

'paypal' => [
    'client_id' => env('PAYPAL_CLIENT_ID'),
    'secret' => env('PAYPAL_SECRET'),
    'sandbox' => env('PAYPAL_SANDBOX', true),
],

在此处,client_id 和 secret 属性是您从 PayPal 获得的 API 凭据。sandbox 属性用于指示我们是否在 PayPal 沙盒环境中进行测试。

接下来,我们需要使用 OAuth 认证模型来连接到 PayPal。在您的应用程序中,运行以下命令:

composer require dusterio/laravel-omnipay

这将安装 Laravel-Omnipay 扩展包,它是与 Omnipay(一个支付处理库)的 Laravel 集成。接下来,在 config/app.php 文件中,添加以下内容:

AppProvidersOmnipayServiceProvider::class,

OmnipayServiceProvider 自动注册 Laravel-Omnipay 的组件和服务。我们还需要将以下内容添加到 routes/web.php 文件中:

use OmnipayOmnipay;

Route::get('/paypal/redirect', function () {
    $gateway = Omnipay::create('PayPal_Express');
    $gateway->setUsername(config('services.paypal.username'));
    $gateway->setPassword(config('services.paypal.password'));
    $gateway->setSignature(config('services.paypal.signature'));
    $gateway->setTestMode(config('services.paypal.sandbox'));

    $response = $gateway->purchase([
        'amount' => '10.00',
        'currency' => 'USD',
        'description' => 'Test PayPal payment',
        'returnUrl' => url('/paypal/success'),
        'cancelUrl' => url('/paypal/cancel'),
    ])->send();

    if ($response->isRedirect()) {
        return $response->redirect();
    } else {
        dd($response);
    }
});

在这里,我们使用 Omnipay 的 PayPal_Express 驱动程序,并设置了必要的支付凭证和测试标志。purchase() 方法创建一个新的付款并返回一个响应对象。如果响应是重定向,则将客户端重定向到 PayPal。否则,我们显示响应对象并调试该请求。

现在,在您的站点上访问 /paypal/redirect URL 将启动 PayPal 支付流程。在 PayPal 页面上,您将能够输入付款详细信息并选择付款方式。完成付款后,用户将被重定向回您的应用程序的成功 URL。

此外,Laravel-Omnipay 还提供了更多的功能,可以帮助您管理 PayPal 帐户,撤销付款,订阅计划等。

总结:Laravel Cashier 和 PayPal 提供了极大的灵活性和便利性,使您可以在 Laravel 应用程序中快速轻松地实现支付处理。希望这个简短的教程能够帮助您开始构建自己的电子商务应用程序。