无比郁闷的一次维护经历,银联在线的ASP功能模块竟然不支持64系统!如果使用该功能模块的支付页面在64位系统上运行,页面会报出错误:Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象!
先说下这次头痛的经历,原本服务器是使用32位windows server 2003系统,银联在线的支付功能是很多年前用ASP+VB语言开发的,由于业务需要,系统升级到了64位的win2012,结果每当提交支付订单就会引发错误码为'800a01ad'的错误。引发错误的代码为:
set npc = Server.CreateObject("CPNPC.NPC")
因为如果要发送支付请求,就必须要生成签名,而签名又是通过创建netpayclient组件对象来获取的,由于组件不支持64位系统就会引发错误。
为了解决这个问题,我将ChinaPay的整个支付功能进行重写,最好先仔细查阅官方的开发文档,我是使用ASP.NET MVC将所有支付功能集合成一个支付模块项目。网上也有其他解决方法是使用Web Service重写了签名模块,只需在要获取签名的时候调用Web Service即可,也可以试试WEB API的方式。
PS:我在网上也有看到其它'800a01ad''错误的解决方法,就是设置IIS的应用程序池的32位应用程序为False或者True,可以尝试下。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98890.html