📄 getpayhandle.asp
字号:
<!-- #include file="MD5.asp" -->
<%
'*******************************************
'文件名:GetPayHandle.asp
'主要功能:该示范程序主要完成接收云网支付网关支付通知信息,验证信息有效性,给用户显示支付结果和相关订单信息等。
'版本:v1.6(Build2005-05-24)
'说明:
' 1.本页面请不要使用诸如response.redirect等页面转向的语句
' 2.商户可根据支付结果和订单号查询出本次订单信息或发货信息显示给用户
' 3.本页面如果含有图片、样式或链接,请将路径或地址包括域名,比如<img src="http://www.yoursitename.com/imagers/aaa.gif">
'版权所有:北京云网无限网络技术有限公司
'技术支持联系方式:86-010-84853768/69 转技术部
'*******************************************
'---获取云网支付网关向商户发送的支付通知信息(以下简称为通知信息)
c_mid = request("c_mid") '商户编号,在申请商户成功后即可获得,可以在申请商户成功的邮件中获取该编号
c_order = request("c_order") '商户提供的订单号
c_orderamount = request("c_orderamount") '商户提供的订单总金额,以元为单位,小数点后保留两位,如:13.05
c_ymd = request("c_ymd") '商户传输过来的订单产生日期,格式为"yyyymmdd",如20050102
c_transnum = request("c_transnum") '云网支付网关提供的该笔订单的交易流水号,供日后查询、核对使用;
c_succmark = request("c_succmark") '交易成功标志,Y-成功 N-失败
c_moneytype = request("c_moneytype") '支付币种,0为人民币
c_cause = request("c_cause") '如果订单支付失败,则该值代表失败原因
c_memo1 = request("c_memo1") '商户提供的需要在支付结果通知中转发的商户参数一
c_memo2 = request("c_memo2") '商户提供的需要在支付结果通知中转发的商户参数二
c_signstr = request("c_signstr") '云网支付网关对已上信息进行MD5加密后的字符串
'---校验信息完整性---
IF c_mid="" or c_order="" or c_orderamount="" or c_ymd="" or c_moneytype="" or c_transnum="" or c_succmark="" or c_signstr="" THEN
response.write "支付信息有误"
response.end
END IF
'---将获得的通知信息拼成字符串,作为准备进行MD5加密的源串,需要注意的是,在拼串时,先后顺序不能改变
Dim c_pass '商户的支付密钥,登录商户管理后台(https://www.cncard.net/admin/),在管理首页可找到该值
c_pass = "Test"
srcStr = c_mid & c_order & c_orderamount & c_ymd & c_transnum & c_succmark & c_moneytype & c_memo1 & c_memo2 & c_pass
'---对支付通知信息进行MD5加密
r_signstr = MD5(srcStr)
'---校验商户网站对通知信息的MD5加密的结果和云网支付网关提供的MD5加密结果是否一致
IF r_signstr<>c_signstr THEN
response.write "签名验证失败"
response.end
END IF
'---校验商户编号
Dim MerchantID '商户自己的编号
IF MerchantID<>c_mid THEN
response.write "提交的商户编号有误"
response.end
END IF
'---校验商户订单系统中是否有通知信息返回的订单信息
Dim conn '商户系统的数据链接
sql="select top 1 数据列 from 商户的订单表 where 商户订单号="& c_order
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn
IF rs.eof THEN
response.write "未找到该订单信息"
response.end
END IF
'---校验商户订单系统中记录的订单金额和云网支付网关通知信息中的金额是否一致
Dim r_orderamount '商户自己系统记录的订单金额
r_orderamount=rs("订单金额") '商户从自己订单系统获取该值
IF ccur(r_orderamount)<>ccur(c_orderamount) THEN
response.write "支付金额有误"
response.end
END IF
'---校验商户订单系统中记录的订单生成日期和云网支付网关通知信息中的订单生成日期是否一致
Dim r_ymd '商户自己系统记录的订单生成日期
r_ymd=rs("订单生成日期") '商户从自己订单系统获取该值
IF r_ymd<>c_ymd THEN
response.write "订单时间有误"
response.end
END IF
'---校验商户系统中记录的需要在支付结果通知中转发的参数和云网支付网关通知信息中提供的参数是否一致
Dim r_memo1 '商户自己系统记录的需要在支付结果通知中转发的参数一
r_memo1 = rs("转发参数一")
Dim r_memo2 '商户自己系统记录的需要在支付结果通知中转发的参二
r_memo2 = rs("转发参数二")
IF r_memo1<>c_memo1 or r_memo2<>c_memo2 THEN
response.write "参数提交有误"
response.end
END IF
'---校验返回的支付结果的格式是否正确
IF c_succmark<>"Y" and c_succmark<>"N" THEN
response.write "参数提交有误"
response.end
END IF
'---根据返回的支付结果,商户网站可自行给用户显示说明
IF c_succmark="Y" THEN
由于在GetPayNotify.asp中已进行了实际发货操作,所以在此处只要系统中查询出本订单的结果,然后给用户显示购买成功的提示信息即可。
ELSE IF c_succmark="N" THEN
END IF
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>云网@网-在线支付结果</title>
</head>
<body>
支付完成后,给用户显示此次在线支付的结果和订单信息或提货信息。
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -