- Notifications
You must be signed in to change notification settings - Fork1
Librería para integrar (o no) en un módulo "custom" de Drupal. Permite realizar cobros (tanto normales como recurrentes) a través de RedSys-Semerpa (España).
License
oscarnovasf/RedSys
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Librería para integrar en un módulo personalizado deDrupal y poder ejecutarcobros a través de la pasarela RedSys.
También puede ser utilizada fuera de un entornoDrupal adaptando loscorrespondientesnamespaces yuses.
Esta clase funciona con PHP >= 5.5.0 pero se recomienda usar la últimaversión estable.
Para poder usar la funcionalidad de envío (desde el comercio) de los datosde la tarjeta debemos solicitar a nuestro banco que activen dicha opción.
Copiamos la carpetasrc dentro de nuestro módulo Drupal y cambiamos losnamespaces en los archivos:
- RedSys.php
- Exception\RedSysException.php
- Messages\RedSysMessages.php
- Utils\Utils.php
- Utils\Validators.php
Sustituímos el valormodule_name por el nombre de nuestro módulo.
Por otro lado, en el archivoRedSys.php tendremos que modificar tambiénlas sentenciasuses para adaptarlas al cambio anterior así como loscomentarios que poseen cláusulas@throws.
/** * @file * payment.php */useDrupal\module_name\lib\redsys\RedSys\RedSys;useDrupal\module_name\lib\redsys\RedSys\Exception\RedSysException;/* Creamos una instancia en entorno de pruebas * (omitimos el último parámetro para un entorno de producción). */$redsys =newRedsys('test');try {/* Parámetros obligatorios */$redsys->setOrder('0001aa');$redsys->setMerchantCode('999008881');$redsys->setAmount(99.99);$redsys->setTradeName('Mi tienda, s.l.');$redsys->setTitular('Perico de los Palotes');$redsys->setProductDescription('Compra de producto 1');/* Estos parámetros sólo son necesarios si son distintos de los * indicados por defecto. */$redsys->setTerminal(1);$redsys->setCurrency(978);$redsys->setTransactionType('0');$redsys->setMethod('C');$redsys->setVersion('HMAC_SHA256_V1');$redsys->setLanguage('001');/* URL de notificación y redirección */$redsys->setNotification('https://localhost/notification.php');$redsys->setUrlOk('https://localhost/payment_ok.php');$redsys->setUrlKo('https://localhost/payment_ko.php');/* Establezco cambios en el formulario del TPV. * Estos parámetros son opcionales. */$redsys->setNameForm('redsys_form');$redsys->setIdForm('redsys_form');$redsys->setAttributesSubmit('btn_submit','btn_submit','Realizar pago','','btn btn-primary');/* Muestro el formulario sin redirección automática */$redsys->generateMerchantSignature('sq7HjrUOBfKmC576ILgskD5srU870gJ7');$form =$redsys->createForm(FALSE);}catch (RedSysException$e) {echo$e->getMessage(); die;}echo$form;
/** * @file * payment.php */useDrupal\module_name\lib\redsys\RedSys\RedSys;useDrupal\module_name\lib\redsys\RedSys\Exception\RedSysException;/* Creamos una instancia en entorno de pruebas * (omitimos el último parámetro para un entorno de producción). */$redsys =newRedsys('test');try {/* Parámetros obligatorios */$redsys->setOrder('0001aa');$redsys->setMerchantCode('999008881');$redsys->setAmount(99.99);$redsys->setTradeName('Mi tienda, s.l.');$redsys->setTitular('Perico de los Palotes');$redsys->setProductDescription('Compra de producto 1');/* Estos parámetros sólo son necesarios si son distintos de los * indicados por defecto. */$redsys->setTerminal(1);$redsys->setCurrency(978);$redsys->setTransactionType('0');$redsys->setMethod('C');$redsys->setVersion('HMAC_SHA256_V1');$redsys->setLanguage('001');/* Datos de la tarjeta del cliente. * (El comercio debe estar autorizado para poder capturar estos datos) */$redsys->setPan('4548812049400004');$redsys->setExpiryDate('2012');$redsys->setCVV('123');/* URL de notificación y redirección */$redsys->setNotification('https://localhost/notification.php');$redsys->setUrlOk('https://localhost/payment_ok.php');$redsys->setUrlKo('https://localhost/payment_ko.php');/* Establezco cambios en el formulario del TPV. * Estos parámetros son opcionales. */$redsys->setNameForm('redsys_form');$redsys->setIdForm('redsys_form');$redsys->setAttributesSubmit('btn_submit','btn_submit','Realizar pago','','btn btn-primary');/* Muestro el formulario sin redirección automática */$redsys->generateMerchantSignature('sq7HjrUOBfKmC576ILgskD5srU870gJ7');$form =$redsys->createForm(FALSE);}catch (RedSysException$e) {echo$e->getMessage(); die;}echo$form;
/** * @file * notification.php */useDrupal\module_name\lib\redsys\RedSys\RedSys;useDrupal\module_name\lib\redsys\RedSys\Exception\RedSysException;$redsys =newRedsys('test');try {$result =$redsys->checkPaymentResponse($_POST,'sq7HjrUOBfKmC576ILgskD5srU870gJ7');}catch (RedSysException$e) {echo$e->getMessage(); die;}var_dump($result);
$resultado = ['error' =>true,'code' =>"SIS0051",'error_info' => ['code' =>'SIS0051','response' =>9051,'message' =>'Error número de pedido repetido','msg' =>'MSG0001','detail' =>'', ],'error_info' =>'','Ds_Date' =>'06/10/2020','Ds_Hour' =>'19:00','Ds_SecurePayment' =>'0','Ds_ExpiryDate' =>'2012','Ds_Merchant_Identifier' =>'3208c536f53db9c01106e87f6a867ce832ee9358','Ds_Card_Country' =>'724','Ds_Amount' =>'9999','Ds_Currency' =>'978','Ds_Order' =>'6666c','Ds_MerchantCode' =>'351570213','Ds_Terminal' =>'001','Ds_Response' =>'0000','Ds_MerchantData' =>'','Ds_TransactionType' =>'0','Ds_ConsumerLanguage' =>'1','Ds_AuthorisationCode' =>'173839','Ds_Card_Brand' =>'1','Ds_ProcessedPayMethod' =>'14',];
$resultado = ['error' =>false,'code' =>'0','error_info' =>'','Ds_Date' =>'06/10/2020','Ds_Hour' =>'19:00','Ds_SecurePayment' =>'0','Ds_ExpiryDate' =>'2012','Ds_Merchant_Identifier' =>'3208c536f53db9c01106e87f6a867ce832ee9358','Ds_Card_Country' =>'724','Ds_Amount' =>'9999','Ds_Currency' =>'978','Ds_Order' =>'6666c','Ds_MerchantCode' =>'351570213','Ds_Terminal' =>'001','Ds_Response' =>'0000','Ds_MerchantData' =>'','Ds_TransactionType' =>'0','Ds_ConsumerLanguage' =>'1','Ds_AuthorisationCode' =>'173839','Ds_Card_Brand' =>'1','Ds_ProcessedPayMethod' =>'14',];
/** * @file * payment.php */useDrupal\module_name\lib\redsys\RedSys\RedSys;useDrupal\module_name\lib\redsys\RedSys\Exception\RedSysException;/* Creamos una instancia en entorno de pruebas * (omitimos el último parámetro para un entorno de producción). */$redsys =newRedsys('test');try {/* Parámetros obligatorios */$redsys->setMerchantcode('999008881');$redsys->setAmount(99.99);$redsys->setOrder('9999K');/* Establecemos el tipo y método de la transacción */$redsys->setTransactiontype('A');$redsys->setMethod('T');/* Estos parámetros sólo son necesarios si son distintos de los * indicados por defecto. */$redsys->setTerminal(1);$redsys->setCurrency(978);$redsys->setVersion('HMAC_SHA256_V1');$redsys->setLanguage('001');$redsys->setIdentifier('REQUIRED');/* Indicamos los datos de la tarjeta del cliente */$redsys->setPan('4548812049400004');$redsys->setExpiryDate('2012');$redsys->setCVV('123');/* Genero la firma y ejecuto el cobro */$result =$redsys->firePayment('sq7HjrUOBfKmC576ILgskD5srU870gJ7'); }catch (RedSysException$e) {echo$e->getMessage(); die; }var_dump($result);
/** * @file * payment.php */useDrupal\module_name\lib\redsys\RedSys\RedSys;useDrupal\module_name\lib\redsys\RedSys\Exception\RedSysException;/* Creamos una instancia en entorno de pruebas * (omitimos el último parámetro para un entorno de producción). */$redsys =newRedsys('test');try {/* Parámetros obligatorios */$redsys->setMerchantcode('999008881');$redsys->setAmount(99.99);$redsys->setOrder('9999K');/* Establecemos el tipo y método de la transacción */$redsys->setTransactiontype('A');$redsys->setMethod('T');/* Estos parámetros sólo son necesarios si son distintos de los * indicados por defecto. */$redsys->setTerminal(1);$redsys->setCurrency(978);$redsys->setVersion('HMAC_SHA256_V1');$redsys->setLanguage('001');/* Indicamos el identificador del pago anterior */$redsys->setIdentifier('d202286b28232a55160890eedac145a70d1b8cd3');/* Genero la firma y ejecuto el cobro */$result =$redsys->firePayment('sq7HjrUOBfKmC576ILgskD5srU870gJ7'); }catch (RedSysException$e) {echo$e->getMessage(); die; }var_dump($result);
$resultado = ["error" =>true,"code" =>"SIS0051","error_info" => ["code" =>"SIS0051","response" =>9051,"message" =>"Error número de pedido repetido","msg" =>"MSG0001","detail" =>"", ],"DS_MERCHANT_DIRECTPAYMENT" => [],"DS_MERCHANT_CURRENCY" =>"978","DS_MERCHANT_TRANSACTIONTYPE" =>"A","DS_MERCHANT_TERMINAL" =>"001","DS_MERCHANT_CONSUMERLANGUAGE" =>"001","DS_MERCHANT_PAYMETHODS" =>"T","DS_MERCHANT_IDENTIFIER" =>"REQUIRED","DS_MERCHANT_MERCHANTCODE" =>"999008881","DS_MERCHANT_AMOUNT" =>"9999","DS_MERCHANT_ORDER" =>"9999J","DS_MERCHANT_PAN" =>"4548812049400004","DS_MERCHANT_EXPIRYDATE" =>"2012","DS_MERCHANT_CVV2" =>"123",];
$resultado =["error" =>false,"code" =>"0","error_info" =>NULL,"Ds_Amount" =>"9999","Ds_Currency" =>"978","Ds_Order" =>"9999J","Ds_Signature" =>"vAf4mdomXrabre/f9xOkbTOtQN4KaqRi6Sj8Hq5dvzQ=","Ds_MerchantCode" =>"999008881","Ds_Terminal" =>"1","Ds_Response" =>"0000","Ds_AuthorisationCode" =>"462168","Ds_TransactionType" =>"A","Ds_SecurePayment" =>"0","Ds_Language" =>"1","Ds_CardNumber" =>"454881******0004","Ds_ExpiryDate" =>"2012","Ds_Merchant_Identifier" =>"d202286b28232a55160890eedac145a70d1b8cd3","Ds_MerchantData" => [],"Ds_Card_Country" =>"724","Ds_Card_Brand" =>"1","Ds_ProcessedPayMethod" =>"3",];
- Óscar Novás -OscarNovas.com
Esta librería nace a partir del código de otras tres:
Aquí puedes comprobar la lista decontribuyentesa este repositorio.
Aquí puedes comprobar la lista decambios efectuados hasta elmomento.
⌨️ con ❤️ porÓscar Novás 😊
About
Librería para integrar (o no) en un módulo "custom" de Drupal. Permite realizar cobros (tanto normales como recurrentes) a través de RedSys-Semerpa (España).