日期:2014-05-17  浏览次数:20430 次

请做过工商银行B2C开发的人来帮帮忙
做工行的B2C系统,已经可以正常支付,但是返回的数据无法验证成功

  Dim merVAR, signMsg, notifyData As String

  '接收到银行返回的数据
  merVAR = Request.Form("merVAR")
  notifyData = Request.Form("notifyData")
  signMsg = Request.Form("signMsg")

  '为了安全起见(防止别人伪造一个工行发过来的支付成功URL),还要做一下验证:

  Try
  Dim rc As Integer
  Dim bb As New ICBCEBANKUTILLib.B2CUtil

  rc = bb.init("d:\user.crt", "d:\user.crt","d:\user.key", "123456")
  If rc <> 0 Then
  Response.Write("证书初始化错误!")
  Exit Sub
  End If

  Dim cert As String

  cert = bb.getCert(1)
  If cert = "" Then
  Response.Write("获取商户证书失败,错误原因:<br>" & bb.getRC)
  Exit Sub
  End If
  Dim sscr As String

  Dim aaa As String
  'aaa为解码base64后的数据,decodebase64是解码base64的方法
  aaa = decodebase64(notifyData)

  sscr = bb.verifySignC(aaa, aaa.Length, signMsg, signMsg.Length)
  If sscr = -1 Then
  Response.Write("验证失败")
  Exit Sub
  ElseIf sscr = -2 Then
  Response.Write("解码失败")
  Exit Sub
  ElseIf sscr = -100 Then
  Response.Write("明文字符串传递有误")
  Exit Sub
  ElseIf sscr = -101 Then
  Response.Write("签名字符串传递有误")
  Exit Sub
  End If

此处验证签名总是验证失败,不知道什么原因 sscr 总是等于-1,不知道已经开发过工行的高人是怎么解决的

是不是我标注红色字体的地方一定要用银行证书,但是银行给我的测试证书只有2个文件,一个crt一个key文件



------解决方案--------------------
http://topic.csdn.net/u/20081023/14/cbbf2290-5e59-440d-a71f-7155c28e10cc.html

http://www.google.cn/search?sourceid=navclient&hl=zh-CN&ie=UTF-8&rlz=1T4SKPB_zh-CNAU272AU272&q=%e5%b7%a5%e8%a1%8c%e5%9c%a8%e7%ba%bf%e6%94%af%e4%bb%98%e6%8e%a5%e5%8f%a3
------解决方案--------------------
会不会银行给你的测试证书有问题
------解决方案--------------------
路过看看
------解决方案--------------------
帮顶下。问问工行的人
------解决方案--------------------
友情帮顶
------解决方案--------------------
不懂。接分……
------解决方案--------------------
jf
------解决方案--------------------
顶,问题难!! 占楼接分,私下解决。