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

中国银行主动通知的问题
为避免银行支付界面反馈支付结果失效,中行支付网关按此数据规格将B2C订单支付结果主动通过HTTP或HTTPS方式POST发往商户系统。参数的编码方式使用UTF-8编码后,再用application/x-www-form-urlencoded方式转译后发出。
B2C订单支付成功的银行主动通知示例:
序号 名称 字段 最大长度 说明
01 商户号 merchantNo X(20) BOC商户ID
 02 商户订单号 orderNo X(30) 商户系统产生的订单号
03 银行订单流水号 orderSeq 9(20) 银行的订单流水号(银行产生的订单唯一标识)
04 银行卡类别 cardTyp X(2) 银行卡类别:
05 支付时间 payTime 9(14) 支付交易的日期时间 格式:YYYYMMDD24HHMMSS
 06 订单状态 orderStatus X(2) 订单状态:
07 支付金额 payAmount X(13) 支付金额
08 客户支付IP地址 orderIP X(40) 客户通过网银支付时的IP地址信息
09 客户浏览器Refer信息 orderRefer X(200) 客户浏览器跳转至网银支付登录界面前
10 银行交易流水号 bankTranSeq X(22) 银行交易流水号
11 返回操作类型 returnActFlag X(1) 银行返回的操作类型
12 网关签名数据 signData X(4000) 必填
 网关签名数据串格式,各项数据用管道符分隔:
 商户号|商户订单号|银行订单流水号|银行卡类别|支付时间|订单状态|支付金额 merchantNo|orderNo|orderSeq|cardTyp|payTime|orderStatus|payAmount


接口示例:

B2C订单支付成功的银行主动通知示例:
We receive a post method request !
 ----------header info--------------
user-agent=Java/1.5.0
 host=22.11.99.80:8080
 accept=text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
 connection=keep-alive
 content-type=application/x-www-form-urlencoded
 content-length=1969

 -------------para info--------------
orderSeq=69916502
 signData=MIIEZgYJKoZu3ukpfzDOJ8onjJl+gUxoP1FcWqQqlhzoQHzH6z4J2nEy
 GqDI+jfgdnMpqp59wgkLZ5ibUV8QgiqWqLTVYWVssIJbPDmpJ1L2BpXgVheJvqhr
 VnbrVgy+Vg2/vEJ00cABUcegcJm28VHdpbM=
 orderStatus=1
 payAmount=0.01
 orderRefer=http%3A%2F%2Flocalhost%2FB2C.html
 payTime=20100627000000
 merchantNo=104330183980005
 orderIp=22.11.99.80
 returnActFlag=1
 cardTyp=12
 bankTranSeq=2010062733011575000001
 phoneNum=
 orderNo=zsc1

在asp.net里,怎么接收这些数据?

------解决方案--------------------
我觉得你是缺乏基础知识,你好像只知道用浏览器打开这个地址,而不知道这地址可以用程序请求?你好像只知道,支付以后,可以点击“返回商户”,然后到了你所谓的“页面通知”页面一样,事实上服务器主动通知是一样的,设想一下:用户支付完以后,并没有点击那个“返回商户”,你的程序怎么知道支付成功了?当然是银行的服务器告诉你支付成功了!所以,所谓服务器通知页面,跟你所谓的“页面通知”一样,你只管写一个页面,然后等待银行服务器调用就行了。。。