ssheduardo/redsys-laravel

为 Laravel 提供的 redsys 包

1.4.6 2024-05-02 00:19 UTC

This package is auto-updated.

Last update: 2024-09-02 01:12:49 UTC


README

Latest Version on Packagist Software License Total Downloads

介绍

在完成对 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 模板进行一些简单的布局,结果如下

image

这个类继承自我的主类 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)。有关更多信息,请参阅 许可文件

捐赠

你愿意支持我吗?你欣赏我的工作吗?你在商业项目中使用它吗?

请随意进行一个小小的 捐赠!😉

paypal