jinseokoh / bootpay
非官方的 BootPay 包用于 Laravel
Requires
- php: >=7.2.5
- ext-json: *
- guzzlehttp/guzzle: ^6.0 || ^7.0
- illuminate/support: ~5.6 || ~6.0 || ~7.0 || ~8.0 || ~9.0
Requires (Dev)
- orchestra/testbench: ^4.0 || ^5.0 || ^6.0 || ^7.0
- phpunit/phpunit: ^8.0 || ^9.0
This package is auto-updated.
Last update: 2024-09-29 04:43:35 UTC
README
这是一个用于 Laravel 项目的 PHP Laravel 包,可用于使用 BootPay。
虽然 BootPay 官方提供了用于 PHP 的 GitHub 仓库 GitHub,但遗憾的是,无法通过 Composer 这样的 PHP 依赖管理器轻松添加代码,因此为了方便现代 PHP 开发者使用 BootPay,我将其打包。
BootPay 支付是通过 JS 客户端 SDK 实现的,而验证和取消操作则通过此包进行。由于此包中提供的代码与 BootPay 官方代码相同,因此可能存在无法正常执行的所有调用,但除了验证和取消之外的定期订阅等附加功能尚未使用,因此如果发现任何问题,请通过问题报告。
安装
要安装此包,请在终端中运行以下命令。
composer require jinseokoh/bootpay
使用方法
从 Laravel 5.5 开始提供的 Package Auto-Discovery 功能,安装此包时将自动注册 ServiceProvider 和 Facade 等。从 1.2.0 版本开始支持 Laravel 8/9 新版本。
配置
必须在 Laravel 项目的 .env 文件中添加与 BootPay 相关的以下 3 个 Key/Value 值。可以访问 BootPay 管理页面以获取用于 REST API 的 Application Id 和 Private Key。
BOOTPAY_URI=https://api.bootpay.co.kr
BOOTPAY_REST_APP_ID=000000000000000000000000
BOOTPAY_PRIVATE_KEY=0000000000000000000000000000000000000000000=
示例
BootPay 文档中提到,API 调用的 AccessToken 仅有效 30 分钟。此包的处理器内部有逻辑将 AccessToken 存储在缓存层 25 分钟,然后使用超过该时间的新 AccessToken。因此,使用此包的用户不需要添加 AccessToken 管理的任何逻辑,只需执行 verify() 或 cancel() 等所需的 API 调用即可。
通常的 WebApp 流程是使用 BootPay JS 代码执行支付操作后,使用 OrderId 和 ReceiptId 作为参数调用 Laravel API 以验证实际金额,并通过使用 API verify() 以及在 Controller 中通过 DI 注入 JinseokOh\BootPay\BootPayHanlder 类或使用 BootPay facade 来实现,如下所示。
verify() 调用示例代码
public function verify( OrderVerifyRequest $request, BootPayHandler $bootPayHandler, OrderHandler $orderHandler ): JsonResponse { $orderId = $request->getOrderId(); $receiptId = $request->getReceiptId(); $order = $orderHandler->findById($orderId); try { $response = $bootPayHandler->verify($receiptId); } catch (\Throwable $e) { \Log::critical("[LOG] {$e->getMessage()}"); throw $e; } : // 추가로직 : }
对于需要取消的特定支付,调用以下 cancel() API 规则。
cancel() 调用示例代码
public function cancel( OrderCancelRequest $request, BootPayHandler $bootPayHandler, OrderHandler $orderHandler ): JsonResponse { $orderId = $request->getOrderId(); $receiptId = $request->getReceiptId(); $order = $orderHandler->findById($orderId); try { $response = $bootPayHandler->cancel($receiptId); } catch (\Throwable $e) { \Log::critical("[LOG] {$e->getMessage()}"); throw $e; } : // 추가로직 : }
许可
MIT 许可证 (MIT)。