支付
在现代电子商务领域中,支付系统对于网站或应用程序的成功运营至关重要。许多应用程序框架包括具有内置支付处理能力的库或组件。为了简化这个过程,开发人员可以使用 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 应用程序中快速轻松地实现支付处理。希望这个简短的教程能够帮助您开始构建自己的电子商务应用程序。