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
%>