imtiaz / sslcommerz
您可以在Laravel中轻松集成sslcommerz
README
SSLCommerz Laravel集成包
sslcommerz-laravel-imtiaz是一个提供SSLCommerz支付网关无缝集成的Laravel包。此包简化了在您的Laravel应用程序中发起支付、处理回调和管理交易状态的过程。
功能与SSLCommerz轻松集成。通过环境变量进行配置。预定义的路由用于处理支付回调。示例控制器和方法用于支付发起和状态管理。
要求PHP 7.3或更高版本 Laravel 7.x或更高版本
安装 要安装此包,请按照以下步骤操作
通过Composer要求包
复制代码 composer require imtiaz/sslcommerz-laravel-imtiaz 发布包资产
此命令会发布包提供的配置文件、控制器和路由。
复制代码 php artisan vendor:publish --provider="Imtiaz\Sslcommerz\SslcommerzServiceProvider" 要发布特定资源,可以使用以下标签
控制器:--tag="controllers" 配置:--tag="config" 路由:--tag="routes" 示例
bash 复制代码 php artisan vendor:publish --provider="Imtiaz\Sslcommerz\SslcommerzServiceProvider" --tag="controllers" 配置 在发布配置文件后,您可以在config/sslcommerz.php中找到它。使用您的SSLCommerz凭据和URL更新文件。
将以下环境变量添加到您的.env文件中
.env 复制代码 SSLCOMMERZ_PAYMENT_URL=https://sandbox.sslcommerz.com/gwprocess/v4/api.php SSLCOMMERZ_STORE_ID=your_store_id SSLCOMMERZ_STORE_PASSWORD=your_store_password SSLCOMMERZ_IPN_URL=http://yourdomain.com/api/PaymentIPN SSLCOMMERZ_SUCCESS_URL=http://yourdomain.com/PaymentSuccess SSLCOMMERZ_CANCEL_URL=http://yourdomain.com/PaymentCancel SSLCOMMERZ_FAIL_URL=http://yourdomain.com/PaymentFail 用实际SSLCommerz凭据替换your_store_id和your_store_password。
用法 控制器 包提供默认控制器SslCommerzPaymentController,位于App\Http\Controllers中。此控制器处理支付发起和状态响应。您可以根据应用程序需求自定义此控制器。
路由 包注册用于处理支付响应的路由。您可以根据需要发布和自定义这些路由。它们在routes/mypackage-web.php文件中定义。默认情况下,这些路由是
php 复制代码 Route::get('/sslcommerz/initiate-payment', [SslCommerzPaymentController::class, 'initiatePaymentWithSSLCommerz']); Route::get('/sslcommerz/generate-token', [SslCommerzPaymentController::class, 'generateToken']); Route::get('/PaymentSuccess', [SslCommerzPaymentController::class, 'PaymentSuccess'])->name('ssl.success'); Route::get('/PaymentFail', [SslCommerzPaymentController::class, 'PaymentFail'])->name('ssl.fail'); Route::get('/PaymentCancel', [SslCommerzPaymentController::class, 'PaymentCancel'])->name('ssl.cancel'); 示例控制器方法 发起支付
php 复制代码 public function initiatePaymentWithSSLCommerz(Request $request) { DB::beginTransaction(); try { $tran_id = uniqid(); $payable = 100; // 要支付金额 $user_email = 'test@example.com'; $profile = 'Test Profile';
$paymentMethod = SSLCommerz::InitiatePayment($profile, $payable, $tran_id, $user_email);
DB::commit();
return response()->json([
'status' => 200,
'data' => $paymentMethod,
'message' => 'Payment initiated successfully',
]);
} catch (Exception $e) {
DB::rollBack();
return response()->json(['error' => $e->getMessage()], 500);
}
处理支付成功 php 复制代码 public function PaymentSuccess(Request $request) { try { SSLCommerz::PaymentSuccess($request->query('tran_id')); return response()->json([ 'status' => 200, 'message' => '支付状态更新成功。', ]); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } 处理支付失败 php 复制代码 public function PaymentFail(Request $request) { try { SSLCommerz::PaymentFail($request->query('tran_id')); return response()->json([ 'status' => 404, 'message' => '支付失败。', ]); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } 处理支付取消 php 复制代码 public function PaymentCancel(Request $request) { try { SSLCommerz::PaymentCancel($request->query('tran_id')); return response()->json([ 'status' => 404, 'message' => '支付已取消。', ]); } catch (Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } 处理即时支付通知 (IPN) php 复制代码 public function PaymentIPN(Request $request) { SSLCommerz::PaymentIPN($request->input('tran_id'), $request->input('status'), $request->input('val_id')); } 定制控制器:您可以定制或扩展提供的控制器以满足您的特定需求。 路由:根据需要修改路由以适应您的应用程序的路由结构。 配置:调整配置设置以匹配您的环境和 SSLCommerz 设置。 发布资产 您可以使用 artisan 命令将包的资产发布到您的应用程序
发布所有资源
bash 复制代码 php artisan vendor:publish --provider="Imtiaz\Sslcommerz\SslcommerzServiceProvider" 仅发布控制器
bash 复制代码 php artisan vendor:publish --provider="Imtiaz\Sslcommerz\SslcommerzServiceProvider" --tag="controllers" 发布配置文件
bash 复制代码 php artisan vendor:publish --provider="Imtiaz\Sslcommerz\SslcommerzServiceProvider" --tag="config" 发布路由文件
bash 复制代码 php artisan vendor:publish --provider="Imtiaz\Sslcommerz\SslcommerzServiceProvider" --tag="routes" 测试 为了确保一切正常工作,在设置环境后执行以下步骤
启动支付:访问启动支付的 URL 并验证支付网关是否正确调用。
http 复制代码 http://yourdomain.com/sslcommerz/initiate-payment 检查支付状态:模拟成功、失败和取消场景,并确保您的回调路由正确处理这些响应。
支持 对于任何问题或疑问,请在 GitHub 问题页面创建一个问题。
贡献 我们欢迎对这个包的贡献。有关如何贡献的详细信息,请参阅 CONTRIBUTING.md。
许可协议 此软件包是开源软件,根据 MIT 许可协议许可。
致谢 特别感谢 SSLCommerz 提供卓越的支付网关服务。
定制说明 更新 URL 和名称:用您实际值替换 like yourdomain.com、your_store_id、your_store_password 和 GitHub 链接等占位符。包含徽章:添加版本、下载和许可证徽章以获得更好的展示效果。扩展和修改:添加任何可能对用户相关的附加部分,如高级使用、常见问题解答或故障排除。此文档旨在放置在您的 GitHub 仓库的 README.md 文件中,为用户提供一个清晰且结构化的指南,以在 Laravel 应用程序中安装、配置和使用 sslcommerz-laravel-imtiaz 软件包。