ssheduardo / redsys-laravel
为 Laravel 提供的 redsys 包
Requires
- php: ^7.2|^8.0
- laravel/framework: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- sermepa/sermepa: ^1.4
README
介绍
在完成对 Redsys 类的 sha256 工作更新后,我利用这个机会创建了这个 Laravel 包,从而使我们在使用这个框架时的工作更加愉快。
安装
通过 Composer
Laravel 5.1
$ composer require "ssheduardo/redsys-laravel=1.0.*"
Laravel 5.2, 5.3, 5.4
$ composer require "ssheduardo/redsys-laravel=~1.1.0"
Laravel 5.5, 5.6, 5.7, 5.8
$ composer require "ssheduardo/redsys-laravel=~1.3.0"
Laravel 6.0, 7.x, 8.x, 9.x, 10.x
$ composer require "ssheduardo/redsys-laravel=~1.4.0"
或者,如果你喜欢,可以在你的 composer.json 的 require 部分
Laravel 5.1
"ssheduardo/redsys-laravel": "1.0.*"
Laravel 5.2, 5.3, 5.4
"ssheduardo/redsys-laravel": "~1.1.0"
Laravel 5.5, 5.6, 5.7, 5.8
"ssheduardo/redsys-laravel": "~1.3.0"
Laravel 6.0, 7.x, 8.x, 9.x, 10.x
"ssheduardo/redsys-laravel": "~1.4.0"
现在我们需要在我们的 Services Provider 数组 'providers' 中加载我们的 Services Provider(config/app.php)
如果你使用 Laravel 5.5 或更高版本,则不需要加载 services provider
Ssheduardo\Redsys\RedsysServiceProvider::class
在数组 'aliases' 中创建一个别名(config/app.php)
如果你使用 Laravel 5.5 或更高版本,则不需要创建别名
'Redsys' => Ssheduardo\Redsys\Facades\Redsys::class,
最后,我们发布我们的配置文件
php artisan vendor:publish --tag="redsys-config"
这将创建一个位于 config 目录下的名为 redsys.php 的文件,在这个文件中,我们需要配置我们的 key,url ok 和 ko。
使用方法
假设我们有一个这个路由 http://ubublog.com/redsys,它链接到 RedsysController@index
Route::controller(RedsysController::class)->prefix('redsys') ->group(function () { Route::get('/', 'index'); });
控制器 RedsysController 的内容如下
<?php namespace App\Http\Controllers; use Exception; use Illuminate\Http\Request; use Ssheduardo\Redsys\Facades\Redsys; class RedsysController extends Controller { public function index() { try { $key = config('redsys.key'); $code = config('redsys.merchantcode'); Redsys::setAmount(rand(10, 600)); Redsys::setOrder(time()); Redsys::setMerchantcode($code); //Reemplazar por el código que proporciona el banco Redsys::setCurrency('978'); Redsys::setTransactiontype('0'); Redsys::setTerminal('1'); Redsys::setMethod('T'); //Solo pago con tarjeta, no mostramos iupay Redsys::setNotification(config('redsys.url_notification')); //Url de notificacion Redsys::setUrlOk(config('redsys.url_ok')); //Url OK Redsys::setUrlKo(config('redsys.url_ko')); //Url KO Redsys::setVersion('HMAC_SHA256_V1'); Redsys::setTradeName('Tienda S.L'); Redsys::setTitular('Pedro Risco'); Redsys::setProductDescription('Compras varias'); Redsys::setEnviroment('test'); //Entorno test $signature = Redsys::generateMerchantSignature($key); Redsys::setMerchantSignature($signature); $form = Redsys::createForm(); } catch (Exception $e) { echo $e->getMessage(); } return view('redsys', compact('form')); } }
我们可以通过一个 blade 模板进行一些简单的布局,结果如下
这个类继承自我的主类 https://github.com/ssheduardo/sermepa,在这里你可以找到更多关于类 Tvp.php 的方法示例
附加说明
在 /config/redsys.php 文件中,需要配置 FUC(商户代码)和我们的 key。以下是一些配置要点,如果你之前没有使用过 redsys-laravel
-
如果我们想使用生产环境,必须使用字符串 'live' 作为环境
-
测试环境中的 FUC 必须是真实的,否则将获得金额为 0 的错误(https://github.com/ssheduardo/redsys-laravel#20)
-
URL OK('url_ok')用于支付成功后的重定向(不包含支付信息),URL KO('url_ko')也是如此。包含已支付信息的是通知 URL('url_notification'),它需要以以下方式检查信息的签名
$key = config('redsys.key'); $parameters = Redsys::getMerchantParameters($request->input('Ds_MerchantParameters')); $DsResponse = $parameters["Ds_Response"]; $DsResponse += 0; if (Redsys::check($key, $request->input()) && $DsResponse <= 99) { // lo que quieras que haya si es positiva la confirmación de redsys } else { //lo que quieras que haga si no es positivo }
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG
安全
如果你发现任何安全相关的问题,请通过发送电子邮件到:author_email 而不是使用问题跟踪器。
致谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件
捐赠
你愿意支持我吗?你欣赏我的工作吗?你在商业项目中使用它吗?
请随意进行一个小小的 捐赠!😉