网银在线chinabank

web相关

2009-05-11 09:55

1.ChinaBank.html 填写订单信息。【也就是下订单的页面】

以下4个文件在chinabank文件夹中

2.MD5.asp      MD5加密函数包含文件。
3.Send.asp     接收ChinaBank.html传递过来的参数,对敏感信息加密,然后将订单发送至网银支付网关4.Receive.asp 支付结果返回处理页面,商户需要将key值修改成自己的md5私钥值。
5.AutoReceive.asp 自动对帐,解决掉单问题,商户需要将key值修改成自己的md5私钥值,在本页面商户可以根据自己的业务需要做相应的逻辑处理。【需要联系客服】

商户需将该文件夹下所有文件上传到服务器同一目录下

Send.asp

<!--#include file="MD5.asp"-->
<%
v_mid = "1001"                     ' 商户号,这里为测试商户号1001,替换为自己的商户号(老版商户号为4位或5位,新版为8位)即可
v_url = "http://localhost/chinabank/Receive.asp" ' 商户自定义返回接收支付结果的页面 Receive.asp 为接收页面
key = "test"          ' 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
              ' 登陆后在上面的导航栏里可能找到“B2C”,在二级导航栏里有“MD5密钥设置”
              ' 建议您设置一个16位以上的密钥或更高,密钥最多64位,但设置16位已经足够了
%>
<%
   if request("v_oid")<>"" then         '判断是否有传递订单号
  
    v_oid = request("v_oid")
  
   else

    curdate = now()           ' 根据系统时间产生订单,格式:YYYYMMDD-v_mid-HMMSS
    ymd = year(curdate)&month(curdate)&day(curdate) ' 年月日
    hms = hour(curdate)&minute(curdate)&second(curdate) ' 分秒时

    v_oid = ymd&"-"&v_mid&"-"&hms       ' 推荐订单号构成格式为 年月日-商户号-小时分钟秒

end if
v_amount = request("v_amount") ' 订单金额
    v_amount = replace(v_amount,",","")
v_moneytype = "CNY"      ' 币种

text = v_amount&v_moneytype&v_oid&v_mid&v_url&key ' 拼凑加密串

v_md5info=Ucase(trim(md5(text)))      ' 网银支付平台对MD5值只认大写字符串,所以小写的MD5值得转换为大写

以下几项为可选信息,如果发送网银在线会保存此信息,使用和不使用都不影响支付!

    v_rcvname = request("v_rcvname")   ' 收货人
    v_rcvaddr = request("v_rcvaddr")   ' 收货地址
   v_rcvtel = request("v_rcvtel")   ' 收货人电话
    v_rcvpost = request("v_rcvpost")   ' 收货人邮编
   v_rcvemail = request("v_rcvemail")  ' 收货人邮件
v_rcvmobile = request("v_rcvmobile") ' 收货人手机号

v_ordername = request("v_ordername")  ' 订货人姓名
v_orderaddr = request("v_orderaddr")  ' 订货人地址
   v_ordertel = request("v_ordertel")  ' 订货人电话
v_orderpost = request("v_orderpost")  ' 订货人邮编
v_orderemail = request("v_orderemail")  ' 订货人邮件
v_ordermobile = request("v_ordermobile") ' 订货人手机号

   remark1 = request("remark1")   ' 备注字段1
   remark2 = request("remark2")   ' 备注字段2

%>

<!--以下信息为标准的 HTML 格式 + ASP 语言 拼凑而成的 网银在线 支付接口标准演示页面 无需修改-->

<html>

<body onLoad="javascript:document.E_FORM.submit()">
<form action="https://pay3.chinabank.com.cn/PayGate" method="POST" name="E_FORM">


   
<input type="hidden" name="v_md5info"    value="<%=v_md5info%>" size="100">
<input type="hidden" name="v_mid"        value="<%=v_mid%>">
<input type="hidden" name="v_oid"        value="<%=v_oid%>">
<input type="hidden" name="v_amount"     value="<%=v_amount%>">
<input type="hidden" name="v_moneytype" value="<%=v_moneytype%>">
<input type="hidden" name="v_url"        value="<%=v_url%>">
  
<!--以下几项项为网上支付完成后,随支付反馈信息一同传给信息接收页 -->
   
<input type="hidden" name="remark1" value="<%=remark1%>">
<input type="hidden" name="remark2" value="<%=remark2%>">
   
<!--以下几项只是用来记录客户信息,可以不用,不影响支付 -->

<input type="hidden" name="v_rcvname"      value="<%=v_rcvname%>">
<input type="hidden" name="v_rcvaddr"      value="<%=v_rcvaddr%>">
<input type="hidden" name="v_rcvtel"       value="<%=v_rcvtel%>">
<input type="hidden" name="v_rcvpost"      value="<%=v_rcvpost%>">
<input type="hidden" name="v_rcvemail"     value="<%=v_rcvemail%>">
<input type="hidden" name="v_rcvmobile"    value="<%=v_rcvmobile%>">

<input type="hidden" name="v_ordername"    value="<%=v_ordername%>">
<input type="hidden" name="v_orderaddr"    value="<%=v_orderaddr%>">
<input type="hidden" name="v_ordertel"     value="<%=v_ordertel%>">
<input type="hidden" name="v_orderpost"    value="<%=v_orderpost%>">
<input type="hidden" name="v_orderemail"   value="<%=v_orderemail%>">
<input type="hidden" name="v_ordermobile" value="<%=v_ordermobile%>">

</form>

</body>
</html>

Receive.asp

<!--#include file="MD5.asp"-->
<%  
' MD5密钥要跟订单提交页相同,如Send.asp里的 key = "test" ,修改""号内 test 为您的密钥
' 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
key = "test"
' 登陆后在上面的导航栏里可能找到“B2C”,在二级导航栏里有“MD5密钥设置”
' 建议您设置一个16位以上的密钥或更高,密钥最多64位,但设置16位已经足够了

' 取得返回参数值
v_oid=request("v_oid")                               ' 商户发送的v_oid定单编号
v_pmode=request("v_pmode")                           ' 支付方式(字符串)
v_pstatus=request("v_pstatus")                      ' 支付状态 20(支付成功);30(支付失败)
v_pstring=request("v_pstring")                       ' 支付结果信息 支付完成(当v_pstatus=20时);失败原因(当v_pstatus=30时);
v_amount=request("v_amount")                         ' 订单实际支付金额
v_moneytype=request("v_moneytype")                   ' 订单实际支付币种
remark1=request("remark1")                           ' 备注字段1
remark2=request("remark2")                           ' 备注字段2
v_md5str=request("v_md5str")                         ' 网银在线拼凑的Md5校验串


if request("v_md5str")="" then
response.Write("v_md5str:空值")
response.end
end if


'md5校验

text = v_oid&v_pstatus&v_amount&v_moneytype&key

md5text =Ucase(trim(md5(text)))    '商户拼凑的Md5校验串

    if md5text<>v_md5str then  ' 网银在线拼凑的Md5校验串 与 商户拼凑的Md5校验串 进行对比
'对比失败表示信息非网银在线返回的信息

   response.write("校验失败,数据可疑")
    response.end
else
'对比成功表示信息是网银在线返回的信息

   if v_pstatus=20 then

'支付成功
   '此处加入商户系统的逻辑处理(例如判断金额,判断支付状态,更新订单状态等等)......

end if

end if
%>

AutoReceive.asp

<!--#include file="MD5.asp"-->

<%
' MD5密钥要跟订单提交页相同,如Send.asp里的 key = "test" ,修改""号内 test 为您的密钥
' 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
key = "test"    
   ' 登陆后在上面的导航栏里可能找到“B2C”,在二级导航栏里有“MD5密钥设置”
   ' 建议您设置一个16位以上的密钥或更高,密钥最多64位,但设置16位已经足够了
v_oid=request("v_oid")                                       '订单号
v_pmode=request("v_pmode")                              ' 银行名称 如:招商银行
v_pstatus=request("v_pstatus")                           '支付状态 如:20 支付成功,30 支付失败
v_pstring=request("v_pstring")                            '支付状态说明 如:支付成功
v_amount=request("v_amount")                            '支付金额
v_moneytype=request("v_moneytype")                 '币种 如:CNY

v_md5str=request("v_md5str")                               'MD5效验码

remark1=request("remark1")                                  '备注1
remark2=request("remark2")                                  '备注2


if v_md5str = "" then

response.write("error")

response.end                                                            '中断程序

end if

text = v_oid&v_pstatus&v_amount&v_moneytype&key      '拼凑加密串

md5text = Ucase(trim(md5(text)))                                      '生成MD5效验码

if md5text<>v_md5str then '与网银在线发送过来的MD5效验码对比,确保是网银在线发送的信息

response.write("error")                                            '告诉服务器验证失败,要求重发

response.end                                                             '中断程序

else

response.write("ok") '告诉服务器已经正确接收以及验证参数正确,要求停止发送

if v_pstatus = "20" then


   '此处加入商户系统的逻辑处理(例如判断金额,判断支付状态(20成功,30失败),更新订单状态等等)......
'支付已经成功

end if

end if
%>