Nada es vital, Nada es importante.
API REDSYS WebService
| Función | Código | Descripción |
|---|---|---|
| Función | Código | Descripción |
| Array de DatosEntrada | var $vars_pay = array(); |
Contiene todos los parametros que guardas con los GET/SET de parámetros. |
| Cargar parámetros. | function setParameter($key,$value){ $this->vars_pay[$key]=$value; } |
Guarda los parametros que le introduzcas en $vars_pay, para su uso en el resto de
funciones de la clase. Ejemplo: setParameter("DS_MERCHANT_CURRENCY","978"): |
| Obtener parámetros. | function getParameter($key){ return $this->vars_pay[$key]; } |
Devuelve el valor del parámetro indicado obteniendo la información de los datos
almacennados en $vars_pay. Ejemplo: $valor = getParameter("DS_MERCHANT_CURRENCY"); //$valor === "978" |
| FUNCIONES AUXILIARES: 3DES Function. | function encrypt_3DES($message, $key){ // Se cifra $l = ceil(strlen($message) / 8) * 8; return substr(openssl_encrypt($message . str_repeat("\0", $l - strlen($message)), 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, "\0\0\0\0\0\0\0\0"), 0, $l); } |
|
| FUNCIONES AUXILIARES: Cifrar URL en Base64. | function base64_url_encode($input){ return strtr(base64_encode($input), '+/', '-_'); } |
Encripta en Base64 la dirección URL que se pasa por parámetro de la función- |
| FUNCIONES AUXILIARES: Cifrar datos en Base64. | function encodeBase64($data){ $data = base64_encode($data); return $data; } |
Encripta en Base64 el dato que se pasa por parámetro de la función- |
| FUNCIONES AUXILIARES: Decodificar URL en Base64. | function base64_url_decode($input){ return base64_decode(strtr($input, '-_', '+/')); } |
Desencripta de Base64 la dirección URL que se pasa por parámetro de la función- |
| FUNCIONES AUXILIARES: Decodificar datos en Base64. | function decodeBase64($data){ $data = base64_decode($data); return $data; } |
Desencripta de Base64 el dato que se pasa por parámetro de la función- |
| FUNCIONES AUXILIARES: MAC Función. | function mac256($ent,$key){ $res = hash_hmac('sha256', $ent, $key, true);//(PHP 5 >= 5.1.2) return $res; } |
|
| FUNCIONES PARA LA GENERACIÓN DE LA PETICIÓN DE PAGO: Obtener Número de pedido. | function getOrder($datos){ $posPedidoIni = strrpos($datos, "<DS_MERCHANT_ORDER>"); $tamPedidoIni = strlen("<DS_MERCHANT_ORDER>"); $posPedidoFin = strrpos($datos, "</DS_MERCHANT_ORDER>"); return substr($datos,$posPedidoIni + $tamPedidoIni,$posPedidoFin - ($posPedidoIni + $tamPedidoIni)); } |
|
| FUNCIONES PARA LA GENERACIÓN DE LA PETICIÓN DE PAGO: Obtener contenido de un Tag. | function getTagContent($datos,$tag){ $posPedidoIni = strrpos($datos, "<".$tag.">"); $tamPedidoIni = strlen("<".$tag.">"); $posPedidoFin = strrpos($datos, "</".$tag.">"); return substr($datos,$posPedidoIni + $tamPedidoIni,$posPedidoFin - ($posPedidoIni + $tamPedidoIni)); } |
|
| FUNCIONES PARA LA RECEPCIÓN DE LA PETICIÓN DE PAGO: | function createMerchantSignatureHostToHost($key, $ent){ // Se decodifica la clave Base64 $key = $this->decodeBase64($key); // Se diversifica la clave con el Número de Pedido $key = $this->encrypt_3DES($this->getOrder($ent), $key); // MAC256 del parámetro Ds_MerchantParameters $res = $this->mac256($ent, $key); // Se codifican los datos Base64 return $this->encodeBase64($res); } |
|
| FUNCIONES PARA LA GENERACIÓN DE DATOS DE PAGO (Respuesta HOST to HOST) | function createMerchantSignatureResponseHostToHost($key, $datos, $numPedido){ // Se decodifica la clave Base64 $key = $this->decodeBase64($key); // Se diversifica la clave con el Número de Pedido $key = $this->encrypt_3DES($numPedido, $key); // MAC256 del parámetro Ds_Parameters que envía Redsys $res = $this->mac256($datos, $key); // Se codifican los datos Base64 return $this->encodeBase64($res); } |
Genera la clave de firma necesaria para realizar la conexión SOAP que envía la
operación a la pasarela de pagos. Datos requeridos:
Ejemplo: $Firma = $miObj->createMerchantSignatureHostToHost($kc,$datosEnt,$id); $nuevaEntrada = "<REQUEST>".$datosEnt."<DS_SIGNATUREVERSION> HMAC_SHA256_V1</DS_SIGNATUREVERSION><DS_SIGNATURE>".$Firma. "</DS_SIGNATURE></REQUEST>"; |