ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 建行网银接口开发注意事项

建行网银接口开发注意事项

原创 Linux操作系统 作者:iDotNetSpace 时间:2010-05-14 15:03:38 0 删除 编辑

建行网银开发过程并不复杂,但就是部署的时候经常出现一些异常的错误。实际就是实例化 CCBRSA.RSASig rsa = new CCBRSA.RSASigClass();的时候会有问题。

Retrieving the COM class factory for component with CLSID {A5C5C388-A972-4CCF-93E2-7F97E82C9EBA} failed due to the following error: 80040154.

有时候会提示以上的错误,有时候会有一些其它的错误,由于用到了CCBRSA.dll这个动态链接库文件,所以要先注册一下这个文件,

 

这里把简要步骤说明一下:

1、注册CCBRSA.dll文件。建议把这个文件复制到system32目录下然后注册 regsvr32  CCBRSA.dll (如果放在其它目录或者有中文目录名之类有时候也会出点问题,按道理是不会,但实际情况确实有发现,还没有搞太懂)

2、安装msjavx86.exe ,java虚拟机。可能是有部分需要调用到java的一些库吧,所以需要安装这个。需要注意的是安装的版本要确认一下,最好是5.0.3802版本的,刚开始我去下载了版本是5.0.3810所以一直用不了。不知道是不是只我才会这样子,其它人好像没有发现。后来找了上海建行的那家伙问了半天也没有搞明白,后来到省建行那台可以使用的机器拷了这个版本的虚拟机才总算搞定。(真是浪费时间呀)这里提供一下下载吧,感觉不太好找这个安装文件。(这个版本可能根据ccbrsa.dll的版本相关的,我把我用的ccbrsa.dll文件也放进去了)

/Files/liubiqu/msjavx86_3802.rar

 

3、在.net项目里引用 com  选择 ccbrsa这个注册好的Dll然后就可以正常使用了。

 

 注意:在win7下部署的时候需要管理员权限才有办法运行这个动态库,所以需要提升一下权限才OK.否则会报:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 ”的错误。

如果是64位的操作系统要拷到 \SysWOW64 这个目录下。因为ccbrsa.dll是32位系统编译的。

 

以下是支付成功后建行网银会返回到我们站点的关键代码(也没有去整理,关键是能用就行)

代码
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->            string sSIGN = this.Request["SIGN"];
            
string sURL = "";
            
string sORDERID = this.Request["ORDERID"];
            
string sPAYMENT = this.Request["PAYMENT"];
            
string sCURCODE = this.Request["CURCODE"];
            
string sSUCCESS = this.Request["SUCCESS"];
            
//取得用于加密的URL串

            
int iPos = sPara.LastIndexOf('&');
            
if (iPos > 0)
            {
                sURL 
= sPara.Substring(0, iPos);
            }
            
else
            {
                showPayMsg(
"非法的URL!");
                
return;
            }
            
string PublicKey = ConfigurationManager.AppSettings["PublicKey"].ToString();
            CCBRSA.RSASig rsa;
            
try
            {
                rsa 
= new CCBRSA.RSASigClass();
            }
            
catch (Exception ex)
            {
                showPayMsg(
"支付失败!网上银行控件失效" + ex.Message);
                
return;
            }
            
bool bRet;
            rsa.setPublicKey(PublicKey);
            bRet 
= rsa.verifySigature(sSIGN, sURL);
            
if (bRet)
            {
                
if (sSUCCESS == "Y") //如果执行成功,则验证数据是否正确
                {
                    
//验证金额是否正确

                    checkPayment(
"ccb", sORDERID, Convert.ToDouble(sPAYMENT), ref this.Exc, Global.Conn);
                    
if (this.Exc.ErrCode == 0)//
                    {
                        showPayMsg(
"支付成功!");
                    }
                    
else
                    {
                        showPayMsg(
"支付失败。" + this.Exc.ErrDesc);
                    }
                }
                
else
                {
                    showPayMsg(
"支付失败!");
                }
            }
            
else
                showPayMsg(
"非法的URL!");

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-662712/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5766116