?? getpayhandle.asp
字號:
<!-- #include file="MD5.asp" -->
<%
'*******************************************
'文件名:GetPayHandle.asp
'主要功能:該示范程序主要完成接收云網(wǎng)支付網(wǎng)關(guān)支付通知信息,驗(yàn)證信息有效性,給用戶顯示支付結(jié)果和相關(guān)訂單信息等。
'版本:v1.6(Build2005-05-24)
'說明:
' 1.本頁面請不要使用諸如response.redirect等頁面轉(zhuǎn)向的語句
' 2.商戶可根據(jù)支付結(jié)果和訂單號查詢出本次訂單信息或發(fā)貨信息顯示給用戶
' 3.本頁面如果含有圖片、樣式或鏈接,請將路徑或地址包括域名,比如<img src="http://www.yoursitename.com/imagers/aaa.gif">
'版權(quán)所有:北京云網(wǎng)無限網(wǎng)絡(luò)技術(shù)有限公司
'技術(shù)支持聯(lián)系方式:86-010-84853768/69 轉(zhuǎn)技術(shù)部
'*******************************************
'---獲取云網(wǎng)支付網(wǎng)關(guān)向商戶發(fā)送的支付通知信息(以下簡稱為通知信息)
c_mid = request("c_mid") '商戶編號,在申請商戶成功后即可獲得,可以在申請商戶成功的郵件中獲取該編號
c_order = request("c_order") '商戶提供的訂單號
c_orderamount = request("c_orderamount") '商戶提供的訂單總金額,以元為單位,小數(shù)點(diǎn)后保留兩位,如:13.05
c_ymd = request("c_ymd") '商戶傳輸過來的訂單產(chǎn)生日期,格式為"yyyymmdd",如20050102
c_transnum = request("c_transnum") '云網(wǎng)支付網(wǎng)關(guān)提供的該筆訂單的交易流水號,供日后查詢、核對使用;
c_succmark = request("c_succmark") '交易成功標(biāo)志,Y-成功 N-失敗
c_moneytype = request("c_moneytype") '支付幣種,0為人民幣
c_cause = request("c_cause") '如果訂單支付失敗,則該值代表失敗原因
c_memo1 = request("c_memo1") '商戶提供的需要在支付結(jié)果通知中轉(zhuǎn)發(fā)的商戶參數(shù)一
c_memo2 = request("c_memo2") '商戶提供的需要在支付結(jié)果通知中轉(zhuǎn)發(fā)的商戶參數(shù)二
c_signstr = request("c_signstr") '云網(wǎng)支付網(wǎng)關(guān)對已上信息進(jìn)行MD5加密后的字符串
'---校驗(yàn)信息完整性---
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
'---將獲得的通知信息拼成字符串,作為準(zhǔn)備進(jìn)行MD5加密的源串,需要注意的是,在拼串時(shí),先后順序不能改變
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
'---對支付通知信息進(jìn)行MD5加密
r_signstr = MD5(srcStr)
'---校驗(yàn)商戶網(wǎng)站對通知信息的MD5加密的結(jié)果和云網(wǎng)支付網(wǎng)關(guān)提供的MD5加密結(jié)果是否一致
IF r_signstr<>c_signstr THEN
response.write "簽名驗(yàn)證失敗"
response.end
END IF
'---校驗(yàn)商戶編號
Dim MerchantID '商戶自己的編號
IF MerchantID<>c_mid THEN
response.write "提交的商戶編號有誤"
response.end
END IF
'---校驗(yàn)商戶訂單系統(tǒng)中是否有通知信息返回的訂單信息
Dim conn '商戶系統(tǒng)的數(shù)據(jù)鏈接
sql="select top 1 數(shù)據(jù)列 from 商戶的訂單表 where 商戶訂單號="& c_order
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn
IF rs.eof THEN
response.write "未找到該訂單信息"
response.end
END IF
'---校驗(yàn)商戶訂單系統(tǒng)中記錄的訂單金額和云網(wǎng)支付網(wǎng)關(guān)通知信息中的金額是否一致
Dim r_orderamount '商戶自己系統(tǒng)記錄的訂單金額
r_orderamount=rs("訂單金額") '商戶從自己訂單系統(tǒng)獲取該值
IF ccur(r_orderamount)<>ccur(c_orderamount) THEN
response.write "支付金額有誤"
response.end
END IF
'---校驗(yàn)商戶訂單系統(tǒng)中記錄的訂單生成日期和云網(wǎng)支付網(wǎng)關(guān)通知信息中的訂單生成日期是否一致
Dim r_ymd '商戶自己系統(tǒng)記錄的訂單生成日期
r_ymd=rs("訂單生成日期") '商戶從自己訂單系統(tǒng)獲取該值
IF r_ymd<>c_ymd THEN
response.write "訂單時(shí)間有誤"
response.end
END IF
'---校驗(yàn)商戶系統(tǒng)中記錄的需要在支付結(jié)果通知中轉(zhuǎn)發(fā)的參數(shù)和云網(wǎng)支付網(wǎng)關(guān)通知信息中提供的參數(shù)是否一致
Dim r_memo1 '商戶自己系統(tǒng)記錄的需要在支付結(jié)果通知中轉(zhuǎn)發(fā)的參數(shù)一
r_memo1 = rs("轉(zhuǎn)發(fā)參數(shù)一")
Dim r_memo2 '商戶自己系統(tǒng)記錄的需要在支付結(jié)果通知中轉(zhuǎn)發(fā)的參二
r_memo2 = rs("轉(zhuǎn)發(fā)參數(shù)二")
IF r_memo1<>c_memo1 or r_memo2<>c_memo2 THEN
response.write "參數(shù)提交有誤"
response.end
END IF
'---校驗(yàn)返回的支付結(jié)果的格式是否正確
IF c_succmark<>"Y" and c_succmark<>"N" THEN
response.write "參數(shù)提交有誤"
response.end
END IF
'---根據(jù)返回的支付結(jié)果,商戶網(wǎng)站可自行給用戶顯示說明
IF c_succmark="Y" THEN
由于在GetPayNotify.asp中已進(jìn)行了實(shí)際發(fā)貨操作,所以在此處只要系統(tǒng)中查詢出本訂單的結(jié)果,然后給用戶顯示購買成功的提示信息即可。
ELSE IF c_succmark="N" THEN
END IF
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>云網(wǎng)@網(wǎng)-在線支付結(jié)果</title>
</head>
<body>
支付完成后,給用戶顯示此次在線支付的結(jié)果和訂單信息或提貨信息。
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -