ssheduardo / sermepa

Clase para utilizar la pasarela de pagos redsys, sermepa.
MIT License
194 stars 59 forks source link

add support to chain methods #59

Closed rogercbe closed 6 years ago

rogercbe commented 6 years ago

Añadido soporte para poder encadenar los métodos para setear los atributos. Ahora es posible usar esta api:

try{
    //Key de ejemplo
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = (new Sermepa\Tpv\Tpv())
    ->setAmount(rand(10,600))
    ->setOrder(time())
    ->setMerchantcode('999008881') 
    ->setCurrency('978')
    ->setTransactiontype('0')
    ->setTerminal('1')
    ->setMethod('C') 
    ->setNotification('http://localhost/noti.php')
    ->setUrlOk('http://localhost/ok.php')
    ->setUrlKo('http://localhost/ko.php')
    ->setVersion('HMAC_SHA256_V1')
    ->setTradeName('Tienda S.L')
    ->setTitular('Pedro Risco')
    ->setProductDescription('Compras varias')
    ->setEnvironment('test'); 

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $form = $redsys->createForm();
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}
echo $form;
ssheduardo commented 6 years ago

Hola, Muchas gracias por tu aportación, en breve lo revisare y si todo va bien realizo el merge.

ssheduardo commented 6 years ago

Hola @rogercbe, he descargado tus cambios y tras realizar una prueba, esta no va, no muestra el botón de comprar. ¿Te ha funcionado correctamente?


Edito Veo que era por esto:

$redsys = new Sermepa\Tpv\Tpv();
$redsys->setAmount(rand(10,600))
    ->setOrder(time())
    ->setMerchantcode('999008881') 
    ->setCurrency('978')
    ->setTransactiontype('0')

Primero hay que instanciar y luego ya hacer los chain.

rogercbe commented 6 years ago

Sí, hay que instanciar primero. Ahora mismo no tengo un entorno donde poder reproducirlo pero mirandolo de nuevo en el ejemplo debería ser:

$redsys = (new Sermepa\Tpv\Tpv())
    ->setAmount(rand(10,600))

Notese los parentesis, ya que como dices, hay que instanciarlo primero. Modifico el mensaje original.

Gracias!