sextanet / laravel-webpay
Laravel Webpay
1.0.0
2024-09-21 04:56 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
- transbank/transbank-sdk: ^4.0
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
README
Laravel、Transbank、Webpay 和 SextaNet 的产品和标志是其各自公司的财产。
在项目中使用 Webpay 的最简单方法
安装
您可以通过 composer 安装此包
composer require sextanet/laravel-webpay
发布并运行迁移
php artisan vendor:publish --tag="webpay-migrations"
php artisan migrate
将这些密钥复制到您的 .env
文件中
WEBPAY_IN_PRODUCTION=false WEBPAY_COMMERCE_CODE= WEBPAY_SECRET_KEY= WEBPAY_DEBUG=true
使用方法
使用附加模型(推荐)
// app/Models/YourModel.php use SextaNet\LaravelWebpay\Traits\PayWithWebpay; // 👈 Import it class YourModel { // ... use HasFactory; use PayWithWebpay; // 👈 Use it! }
默认情况下,它使用以下 3 个字段,这些字段由 Transbank 需要
如果您为您的字段使用其他名称,没问题:您可以使用以下魔法方法非常容易地使每个模型识别它们
// app/Models/YourModel.php public function getBuyOrderAttribute(): string { return $this->id; // Give it your custom logic } public function getAmountAttribute(): string { return $this->price; // Give it your custom logic: Don't need to use decimals } public function getSessionIdAttribute(): string { return md5($this->id); // Give it your custom logic }
// In your controller or equivalent $order = YourOrder::where('id', 1)->first(); return $order->payWithWebpay(); // 👈 Done!
简单易行!
设置自定义 URL
为了方便,您可以在调用 payWithOrder() 方法
之前为每个状态设置自定义页面
已取消
LaravelWebpay::setCancelledUrl('/cancelled-page');
被拒绝
LaravelWebpay::setRejectedUrl('/rejected-page');
测试卡
- 有效期:(任何有效日期)
- RUT: 11111111-1
- 密码: 123
生产模式
当您准备好进入生产环境时,您需要将 WEBPAY_IN_PRODUCTION
设置为 true
,并指定 WEBPAY_COMMERCE_CODE
和 WEBPAY_SECRET_KEY
。
替代使用方法
如果您不想导入Trait,您可以创建或实例化一个订单,然后,例如,调用 LaravelWebpay::create($order)
方法
// In your controller or equivalent $order = YourOrder::where('id', 1)->first(); // ❗️ Your order model needs to have: buy_order, session_id and amount fields return LaravelWebpay::create($order);
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。