├── .gitmodules ├── LICENSE ├── include ├── dvim_brix_crypto-js-develop_VB.asp ├── dvim_brix_crypto-js-master_VB.asp ├── dvim_json_douglascrockford_JSON-js_JS.asp ├── dvim_apiRedsysWs_VB.asp └── dvim_apiRedsys_VB.asp ├── InotificacionSIS.wsdl ├── ejemploRecepcionaPet.asp ├── ejemploGeneraPet.asp ├── .gitignore ├── ejemploSOAP.asp └── README.md /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "include/douglascrockford_JSON-js"] 2 | path = include/douglascrockford_JSON-js 3 | url = https://github.com/douglascrockford/JSON-js 4 | [submodule "include/brix_crypto-js-master-3.1.6"] 5 | path = include/brix_crypto-js-master-3.1.6 6 | url = https://github.com/brix/crypto-js 7 | [submodule "include/brix_crypto-js-develop-3.1.6"] 8 | path = include/brix_crypto-js-develop-3.1.6 9 | url = https://github.com/brix/crypto-js 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, DE VEGA ICT MANAGEMENT 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of redsysHMAC256_API_ASP nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /include/dvim_brix_crypto-js-develop_VB.asp: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 26 | -------------------------------------------------------------------------------- /include/dvim_brix_crypto-js-master_VB.asp: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 29 | -------------------------------------------------------------------------------- /include/dvim_json_douglascrockford_JSON-js_JS.asp: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 48 | -------------------------------------------------------------------------------- /InotificacionSIS.wsdl: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /ejemploRecepcionaPet.asp: -------------------------------------------------------------------------------- 1 | <%@ language="vbscript" codepage="65001"%> 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Ejemplo de Recepción de Respuesta a Petición (URL OK, KO) 14 | 15 | 16 | <% 17 | Response.CharSet = "utf-8" 18 | 19 | ' Se crea Objeto 20 | Dim miObj 21 | Set miObj = new RedsysAPI 22 | 23 | If (Request.Form.Count>0 or Request.QueryString.Count>0) Then'//URL DE RESP. ONLINE 24 | Dim version, datos, signatureRecibida 25 | version = Request("Ds_SignatureVersion") 26 | datos = Request("Ds_MerchantParameters") 27 | signatureRecibida = Request("Ds_Signature") 28 | 29 | Dim kc, firma 30 | kc = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev" 'Clave recuperada de CANALES 31 | firma = miObj.createMerchantSignatureNotif(kc,datos) 32 | 33 | If (firma = signatureRecibida) Then 34 | Response.Write "FIRMA OK
" 35 | Else 36 | Response.Write "FIRMA KO
" 37 | End If 38 | Response.Write "Ds_Date=" & miObj.getParameter("Ds_Date") & "
" 39 | Response.Write "Ds_Hour=" & miObj.getParameter("Ds_Hour") & "
" 40 | Response.Write "Ds_Order=" & miObj.getParameter("Ds_Order") & "
" 41 | Response.Write "Ds_SecurePayment=" & miObj.getParameter("Ds_SecurePayment") & "
" 42 | Response.Write "Ds_Amount=" & miObj.getParameter("Ds_Amount") & "
" 43 | Response.Write "Ds_Currency=" & miObj.getParameter("Ds_Currency") & "
" 44 | Response.Write "Ds_MerchantCode=" & miObj.getParameter("Ds_MerchantCode") & "
" 45 | Response.Write "Ds_Terminal=" & miObj.getParameter("Ds_Terminal") & "
" 46 | Response.Write "Ds_Response=" & miObj.getParameter("Ds_Response") & "
" 47 | Response.Write "Ds_TransactionType=" & miObj.getParameter("Ds_TransactionType") & "
" 48 | Response.Write "Ds_MerchantData=" & miObj.getParameter("Ds_MerchantData") & "
" 49 | Response.Write "Ds_AuthorisationCode=" & miObj.getParameter("Ds_AuthorisationCode") & "
" 50 | Response.Write "Ds_ConsumerLanguage=" & miObj.getParameter("Ds_ConsumerLanguage") & "
" 51 | 52 | End If 53 | 54 | %> 55 | 56 | -------------------------------------------------------------------------------- /ejemploGeneraPet.asp: -------------------------------------------------------------------------------- 1 | <%@ language="vbscript" codepage="65001"%> 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Ejemplo de Generación de Petición 14 | 15 | 16 | <% 17 | Response.CharSet = "utf-8" 18 | 19 | ' Se crea Objeto 20 | Dim miObj 21 | Set miObj = new RedsysAPI 22 | 23 | ' Valores de entrada 24 | Dim fuc,terminal,moneda,trans,url,urlOKKO,id,amount 25 | fuc="999008881" 26 | terminal="871" 27 | moneda="978" 28 | trans="0" 29 | amount="145" 30 | id="ped" & time() 'no acepta +,&,€," 31 | url="" 'Colocar la URL completa de ejemploSOAP.asp (debe ser accesible desde RedSys, por tanto no puede ser localhost) 32 | urlOKKO="" 'Colocar la URL completa de ejemploRecepcionaPet.asp (puede ser localhost para pruebas) 33 | 34 | ' Se Rellenan los campos 35 | call miObj.setParameter("DS_MERCHANT_AMOUNT",amount) 36 | call miObj.setParameter("DS_MERCHANT_ORDER",CStr(id)) 37 | call miObj.setParameter("DS_MERCHANT_MERCHANTCODE",fuc) 38 | call miObj.setParameter("DS_MERCHANT_CURRENCY",moneda) 39 | call miObj.setParameter("DS_MERCHANT_TRANSACTIONTYPE",trans) 40 | call miObj.setParameter("DS_MERCHANT_TERMINAL",terminal) 41 | call miObj.setParameter("DS_MERCHANT_MERCHANTURL",url) 42 | call miObj.setParameter("DS_MERCHANT_URLOK",urlOKKO) 43 | call miObj.setParameter("DS_MERCHANT_URLKO",urlOKKO) 44 | 45 | ' Datos de configuración 46 | Dim version 47 | version="HMAC_SHA256_V1" 48 | kc = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev" 'Clave recuperada de CANALES 49 | ' Se generan los parámetros de la petición 50 | Dim params,signature 51 | params = miObj.createMerchantParameters() 52 | signature = miObj.createMerchantSignature(kc) 53 | 54 | Dim postURL 55 | postURL = "https://sis-d.redsys.es/sis/realizarPago" 'URL DE DESARROLLO CON HTTPS 56 | 'postURL = "http://sis-d.redsys.es/sis/realizarPago" 'URL DE DESARROLLO 57 | 'postURL = "https://sis-t.redsys.es:25443/sis/realizarPago" 'URL DE PRUEBAS, USAR CON LOS DATOS DE VUESTRO COMERCIO 58 | 'postURL = "https://sis.redsys.es/sis/realizarPago" 'URL DE PRODUCCION, USAR CON LOS DATOS DE VUESTRO COMERCIO 59 | 60 | 61 | %> 62 |
63 | Ds_Merchant_SignatureVersion
64 | Ds_Merchant_MerchantParameters
65 | Ds_Merchant_Signature
66 | 67 |
68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | 24 | # Visual Studio 2015 cache/options directory 25 | .vs/ 26 | # Uncomment if you have tasks that create the project's static files in wwwroot 27 | #wwwroot/ 28 | 29 | # MSTest test Results 30 | [Tt]est[Rr]esult*/ 31 | [Bb]uild[Ll]og.* 32 | 33 | # NUNIT 34 | *.VisualState.xml 35 | TestResult.xml 36 | 37 | # Build Results of an ATL Project 38 | [Dd]ebugPS/ 39 | [Rr]eleasePS/ 40 | dlldata.c 41 | 42 | # DNX 43 | project.lock.json 44 | artifacts/ 45 | 46 | *_i.c 47 | *_p.c 48 | *_i.h 49 | *.ilk 50 | *.meta 51 | *.obj 52 | *.pch 53 | *.pdb 54 | *.pgc 55 | *.pgd 56 | *.rsp 57 | *.sbr 58 | *.tlb 59 | *.tli 60 | *.tlh 61 | *.tmp 62 | *.tmp_proj 63 | *.log 64 | *.vspscc 65 | *.vssscc 66 | .builds 67 | *.pidb 68 | *.svclog 69 | *.scc 70 | 71 | # Chutzpah Test files 72 | _Chutzpah* 73 | 74 | # Visual C++ cache files 75 | ipch/ 76 | *.aps 77 | *.ncb 78 | *.opendb 79 | *.opensdf 80 | *.sdf 81 | *.cachefile 82 | 83 | # Visual Studio profiler 84 | *.psess 85 | *.vsp 86 | *.vspx 87 | *.sap 88 | 89 | # TFS 2012 Local Workspace 90 | $tf/ 91 | 92 | # Guidance Automation Toolkit 93 | *.gpState 94 | 95 | # ReSharper is a .NET coding add-in 96 | _ReSharper*/ 97 | *.[Rr]e[Ss]harper 98 | *.DotSettings.user 99 | 100 | # JustCode is a .NET coding add-in 101 | .JustCode 102 | 103 | # TeamCity is a build add-in 104 | _TeamCity* 105 | 106 | # DotCover is a Code Coverage Tool 107 | *.dotCover 108 | 109 | # NCrunch 110 | _NCrunch_* 111 | .*crunch*.local.xml 112 | nCrunchTemp_* 113 | 114 | # MightyMoose 115 | *.mm.* 116 | AutoTest.Net/ 117 | 118 | # Web workbench (sass) 119 | .sass-cache/ 120 | 121 | # Installshield output folder 122 | [Ee]xpress/ 123 | 124 | # DocProject is a documentation generator add-in 125 | DocProject/buildhelp/ 126 | DocProject/Help/*.HxT 127 | DocProject/Help/*.HxC 128 | DocProject/Help/*.hhc 129 | DocProject/Help/*.hhk 130 | DocProject/Help/*.hhp 131 | DocProject/Help/Html2 132 | DocProject/Help/html 133 | 134 | # Click-Once directory 135 | publish/ 136 | 137 | # Publish Web Output 138 | *.[Pp]ublish.xml 139 | *.azurePubxml 140 | # TODO: Comment the next line if you want to checkin your web deploy settings 141 | # but database connection strings (with potential passwords) will be unencrypted 142 | *.pubxml 143 | *.publishproj 144 | 145 | # NuGet Packages 146 | *.nupkg 147 | # The packages folder can be ignored because of Package Restore 148 | **/packages/* 149 | # except build/, which is used as an MSBuild target. 150 | !**/packages/build/ 151 | # Uncomment if necessary however generally it will be regenerated when needed 152 | #!**/packages/repositories.config 153 | # NuGet v3's project.json files produces more ignoreable files 154 | *.nuget.props 155 | *.nuget.targets 156 | 157 | # Microsoft Azure Build Output 158 | csx/ 159 | *.build.csdef 160 | 161 | # Microsoft Azure Emulator 162 | ecf/ 163 | rcf/ 164 | 165 | # Microsoft Azure ApplicationInsights config file 166 | ApplicationInsights.config 167 | 168 | # Windows Store app package directory 169 | AppPackages/ 170 | BundleArtifacts/ 171 | 172 | # Visual Studio cache files 173 | # files ending in .cache can be ignored 174 | *.[Cc]ache 175 | # but keep track of directories ending in .cache 176 | !*.[Cc]ache/ 177 | 178 | # Others 179 | ClientBin/ 180 | ~$* 181 | *~ 182 | *.dbmdl 183 | *.dbproj.schemaview 184 | *.pfx 185 | *.publishsettings 186 | node_modules/ 187 | orleans.codegen.cs 188 | 189 | # RIA/Silverlight projects 190 | Generated_Code/ 191 | 192 | # Backup & report files from converting an old project file 193 | # to a newer Visual Studio version. Backup files are not needed, 194 | # because we have git ;-) 195 | _UpgradeReport_Files/ 196 | Backup*/ 197 | UpgradeLog*.XML 198 | UpgradeLog*.htm 199 | 200 | # SQL Server files 201 | *.mdf 202 | *.ldf 203 | 204 | # Business Intelligence projects 205 | *.rdl.data 206 | *.bim.layout 207 | *.bim_*.settings 208 | 209 | # Microsoft Fakes 210 | FakesAssemblies/ 211 | 212 | # GhostDoc plugin setting file 213 | *.GhostDoc.xml 214 | 215 | # Node.js Tools for Visual Studio 216 | .ntvs_analysis.dat 217 | 218 | # Visual Studio 6 build log 219 | *.plg 220 | 221 | # Visual Studio 6 workspace options file 222 | *.opt 223 | 224 | # Visual Studio LightSwitch build output 225 | **/*.HTMLClient/GeneratedArtifacts 226 | **/*.DesktopClient/GeneratedArtifacts 227 | **/*.DesktopClient/ModelManifest.xml 228 | **/*.Server/GeneratedArtifacts 229 | **/*.Server/ModelManifest.xml 230 | _Pvt_Extensions 231 | 232 | # Paket dependency manager 233 | .paket/paket.exe 234 | 235 | # FAKE - F# Make 236 | .fake/ 237 | /.project 238 | -------------------------------------------------------------------------------- /ejemploSOAP.asp: -------------------------------------------------------------------------------- 1 | <%@ language="vbscript" codepage="65001"%> 2 | 7 | 8 | 9 | 10 | 11 | <% 12 | Response.CharSet = "utf-8" 13 | Response.ContentType = "text/xml" 14 | 15 | If (Request("wsdl").Count>0) Then 16 | Server.Transfer "InotificacionSIS.wsdl" 17 | Response.End 18 | End If 19 | 20 | Dim reqSize, content 21 | reqSize=Request.TotalBytes 22 | content = Request.BinaryRead(reqSize) 23 | 24 | Dim sSOAPOut 25 | sSOAPOut = procesaNotificacionSIS(content) 26 | Response.Write sSOAPOut 27 | 28 | ' notificacionSIS_request es Byte() con el NotificacionSIS SOAP Request 29 | ' devuelve strNotificacionSIS_response (utf8)String' 30 | Function procesaNotificacionSIS(ByVal notificacionSIS) 31 | ' Se crea Objeto 32 | Dim miObj 33 | Set miObj = new RedsysAPI 34 | ' Obtenemos el String UTF8 del notificacionSIS 35 | Dim strInput 36 | strInput = miObj.ConvertToUtf8String(notificacionSIS) 37 | If (Len(strInput)>0) Then 38 | ' Extraemos el SOAP envelope 39 | Dim xmlMessage 40 | xmlMessage = extractSOAPEnvelope(strInput) 41 | Dim signatureRecibida 42 | signatureRecibida = miObj.getSignatureNotifSOAP(xmlMessage) 43 | Dim kc, firma 44 | kc = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev" 'Clave recuperada de CANALES 45 | firma = miObj.createMerchantSignatureNotifSOAPRequest(kc,xmlMessage) 'TODO: encodedMessage o de xmlMessage ?' 46 | Dim res 47 | res = "KO" 48 | If (firma = signatureRecibida) Then 49 | 'Aquí deberíais verificar los parámetros recibidos, pe 50 | 'Ds_Card_Country -> miObj.getParameter("Card_Country"), 51 | 'Ds_Response -> miObj.getParameter("Response"), 52 | 'Ds_AuthorisationCode -> miObj.getParameter("AuthorisationCode"), etc. 53 | res = "OK" 54 | End If 55 | Dim numPedido 56 | numPedido = miObj.getParameter("Order") 'Ds_Order 57 | Dim xmlResp 58 | xmlResp = "" & res & "" 59 | Dim xmlSign 60 | xmlSign = "" & miObj.createMerchantSignatureNotifSOAPResponse(kc,xmlResp,numPedido) & "" 61 | Dim xmlMessageResponse 62 | xmlMessageResponse = "" & xmlResp & xmlSign & "" 63 | procesaNotificacionSIS=generateSOAPEnvelope(xmlMessageResponse) 64 | Else 65 | 'TODO: generar el SOAP error correspondiente 66 | procesaNotificacionSIS=generateSOAPEnvelope("") 67 | End If 68 | End Function 69 | 70 | 'Función básica para generar el envoltorio SOAP al mensaje de respuesta 71 | Function generateSOAPEnvelope(xmlMessageResponse) 72 | Dim encodedMessage 73 | encodedMessage = XML1_encode (xmlMessageResponse) 74 | generateSOAPEnvelope = "" & _ 75 | "" & _ 76 | "" & _ 77 | "" & _ 78 | "" & _ 79 | "" & encodedMessage & "" & _ 80 | "" & _ 81 | "" & _ 82 | "" 83 | End Function 84 | 85 | 'Función básica para eliminar el envoltorio SOAP al mensaje de solicitud 86 | Function extractSOAPEnvelope(strSOAPRequest) 87 | Dim posXMLIni, posXMLFin, posXMLIniEnd, encodedXMLContent 88 | posXMLIni = InStr(strSOAPRequest, "") 90 | encodedXMLContent = Mid(strSOAPRequest,posXMLIni,posXMLFin-posXMLIni) 91 | posXMLIniEnd = InStr(encodedXMLContent, ">") 92 | encodedXMLContent = Mid(encodedXMLContent, posXMLIniEnd+1) 93 | extractSOAPEnvelope = XML1_decode(encodedXMLContent) 94 | End Function 95 | 96 | Function XML1_decode(encodedXML) 97 | Dim decodedXML 98 | decodedXML=encodedXML 99 | 'Tabla corresponsdiente a PHP get_html_translation_table(HTML_ENTITIES, ENT_QUOTES | ENT_XML1) 100 | decodedXML=Replace(decodedXML,""","""") 101 | decodedXML=Replace(decodedXML,"'","'") 102 | decodedXML=Replace(decodedXML,"<","<") 103 | decodedXML=Replace(decodedXML,">",">") 104 | decodedXML=Replace(decodedXML,"&","&") 105 | XML1_decode = decodedXML 106 | End Function 107 | Function XML1_encode(decodedXML) 108 | Dim encodedXML 109 | encodedXML=decodedXML 110 | 'Tabla corresponsdiente a PHP get_html_translation_table(HTML_ENTITIES, ENT_QUOTES | ENT_XML1) 111 | encodedXML=Replace(encodedXML,"&","&") 112 | encodedXML=Replace(encodedXML,"""",""") 113 | encodedXML=Replace(encodedXML,"'","'") 114 | encodedXML=Replace(encodedXML,"<","<") 115 | encodedXML=Replace(encodedXML,">",">") 116 | XML1_encode = encodedXML 117 | End Function 118 | 119 | %> 120 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # redsysHMAC256_API_ASP ![Analytics](https://ga-beacon.appspot.com/UA-47703369-4/redsysHMAC256_API_ASP?pixel&useReferrer) 2 | 3 | Librerías de Ayuda (APIs) para integrar la pasarela de pago (TPV Virtual) Redsys en tiendas web virtuales que hayan sido desarrolladas bajo ASP Clásico, teniendo en cuenta el cambio del uso del algoritmo SHA1 por 3DES y HMAC-SHA256, que son más robustos (Ver https://canales.redsys.es/canales/ayuda/migracionSHA256.html) 4 | 5 | 6 | Este API es un portado de las clases `RedSys` y `RedSysWs` implementadas en las API PHP que proporciona RedSys en su página http://www.redsys.es/wps/portal/redsys/publica/areadeserviciosweb/descargaDeDocumentacionYEjecutables. Por favor leer detenidamente las condiciones de uso de RedSys que podéis encontar en el enlace anterior, clicando en "Ver condiciones de uso" (no hay enlace directo). 7 | 8 | ## Dependencias 9 | 10 | Para la implementación de las funciones HMAC-SHA256, 3DES y el manejo de los encoding Utf8, Base64 y Hex hemos utilizado la librería javascript https://github.com/brix/crypto-js de Evan Vosberg y Jeff Mott (@brix), para la que hemos creado librerías ASP que facilitan el acceso desde ASP Clásico en lenguaje VBScript ([dvim_brix_crypto-js-master_VB.asp](dvim_brix_crypto-js-master_VB.asp) o [dvim_brix_crypto-js-develop_VB.asp](dvim_brix_crypto-js-develop_VB.asp) según se utilize el branch [master](https://github.com/brix/crypto-js/tree/master) o [develop](https://github.com/brix/crypto-js/tree/develop) de https://github.com/brix/crypto-js. Esta librería está bajo licencia [MIT](http://opensource.org/licenses/MIT). 11 | 12 | Para la implementación de JSON hemos utilizado la librería javascript https://github.com/douglascrockford/JSON-js de Douglas Crockford (@douglascrockford), en particular los ficheros [json2.js](https://github.com/douglascrockford/JSON-js/blob/master/json2.js) y [json_parse.js](https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js), éste ultimo para usar una implementación de `parse` que no utilice `eval`. Hemos creado una librería ASP que facilita el acceso desde ASP Clásico en lenguaje VBScript, que además fuerza el uso de la implementación de `parse` de [json_parse.js](https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js), y que implementa los métodos `replacer` y `reviver` (para gestionar el caso en que el `value` es un Dictionary). Esta librería es de Dominio Público, como se puede observar en el encabezado de cada fichero. 13 | 14 | ## Documentación 15 | Para la utilización de estas APIs podéis seguir las indicaciones dadas por ResSys en su página https://canales.redsys.es/canales/ayuda/migracionSHA256.html, y en particular para el caso de PHP. 16 | ###Conexion Redirección 17 | Para la migración de comercios existentes, descargar la [Guia de migración a HMAC SHA256 - conexion por redirección](https://canales.redsys.es/canales/ayuda/documentacion/Guia%20migracion%20a%20HMAC%20SHA256%20-%20conexion%20por%20redireccion.pdf). 18 | Para el caso de nuevos comercios, descargar el [Manual integración para conexión por Redirección](https://canales.redsys.es/canales/ayuda/documentacion/Manual%20integracion%20para%20conexion%20por%20Redireccion.pdf) 19 | ###Conexion WebService 20 | Para la migración de comercios existentes, descargar la [Guia de migración a HMAC SHA256 - conexión por Web Service](https://canales.redsys.es/canales/ayuda/documentacion/Guia%20migracion%20a%20HMAC%20SHA256%20-%20conexion%20por%20Web%20Service.pdf). 21 | Para el caso de nuevos comercios, descargar el [Manual de integración para conexión por Web Service](https://canales.redsys.es/canales/ayuda/documentacion/Manual%20integracion%20para%20conexion%20por%20Web%20Service.pdf) 22 | 23 | ## Ficheros incluídos 24 | * [include/dvim_apiRedsys_VB.asp](include/dvim_apiRedsys_VB.asp): Portado de `apiRedsys.php`, más algunas funciones de ayuda. 25 | * [include/dvim_apiRedsysWs_VB.asp](include/dvim_apiRedsysWs_VB.asp): Portado de `apiRedsysWs.php`. 26 | * [include/dvim_brix_crypto-js-develop_VB.asp](include/dvim_brix_crypto-js-develop_VB.asp): Para facilitar el acceso desde ASP Clásico en lenguaje VBScript a la librería https://github.com/brix/crypto-js en caso de utilizar el branch [develop](https://github.com/brix/crypto-js/tree/develop). 27 | * [include/dvim_brix_crypto-js-master_VB.asp](include/dvim_brix_crypto-js-master_VB.asp): Para facilitar el acceso desde ASP Clásico en lenguaje VBScript a la librería https://github.com/brix/crypto-js en caso de utilizar el branch [master](https://github.com/brix/crypto-js/tree/master). 28 | * [include/dvim_json_douglascrockford_JSON-js_JS.asp](include/dvim_json_douglascrockford_JSON-js_JS.asp): Para facilitar el acceso desde ASP Clásico en lenguaje VBScript a la librería https://github.com/douglascrockford/JSON-js. 29 | * [include/brix_crypto-js-develop-3.1.6/](include/brix_crypto-js-develop-3.1.6): Carpeta donde colocar el branch [develop](https://github.com/brix/crypto-js/tree/develop), del que sólo son necesarios el fichero [LICENSE](https://github.com/brix/crypto-js/blob/develop/LICENSE) y la carpeta [src](https://github.com/brix/crypto-js/tree/develop/src). 30 | * [include/brix_crypto-js-master-3.1.6/](include/brix_crypto-js-master-3.1.6): Carpeta donde colocar el branch [develop](https://github.com/brix/crypto-js/tree/develop), del que sólo son necesarios los ficheros [LICENSE](https://github.com/brix/crypto-js/blob/master/LICENSE) y los ficheros `.js` de la raíz. 31 | * [include/douglascrockford_JSON-js/](include/douglascrockford_JSON-js): Carpeta donde colocar los ficheros [json2.js](https://github.com/douglascrockford/JSON-js/blob/master/json2.js) y [json_parse.js](https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js). 32 | * [ejemploGeneraPet.asp](ejemploGeneraPet.asp): Ejemplo de generación de petición con redirección a RedSys. 33 | * [ejemploRecepcionaPet.asp](ejemploRecepcionaPet.asp): Ejemplo de recepción de notificación desde RedSys. 34 | * [ejemploSOAP.asp](ejemploSOAP.asp): Ejemplo básico de recepción de notificación SOAP desde RedSys. Para la implementación de SOAP se sugiere el uso de librerías que implementen la validación WSDL y que generen y validen los encabezados SOAP. 35 | 36 | ## Licencia de uso 37 | `New BSD` también llamada `BSD 3-clause`, ver [LICENSE](LICENSE). 38 | 39 | ## Soporte y contacto 40 | Si necesitáis soporte en la migración de vuestra tienda en ASP Clásico, no dudad en contactarnos en el +34931767617 o enviando un email a migracionSHA256@ictmanagement.es. 41 | 42 | -------------------------------------------------------------------------------- /include/dvim_apiRedsysWs_VB.asp: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /include/dvim_apiRedsys_VB.asp: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | --------------------------------------------------------------------------------