www.gusucode.com > 中网景企业网站源码时尚版 2009.73码程序 > chinese/pay_receive_alipay.asp

    <!--#include file="../opendb.asp" -->
<!--#include file="../common/md5.asp"-->
<%
'Add by sunzhizhi 2006-5-10
Dim key,partner,alipayNotifyURL,Retrieval,ResponseTxt
Dim notify_id
'Partner 和 交易安全校验码
rs.open "select * from cnk_payway where payname='tenpay' and isopen=1",conn,1,1 
partner=rs("payid")   'partner合作伙伴id
key =  rs("paykey")  'partner账户的支付宝安全校验码
rs.close
'ATN 校验地址 
'*******************************************************************
alipayNotifyURL = "https://www.alipay.com/cooperate/gateway.do?"
'获取ATN结果,如果你的服务器不支持https访问的话,需要用老的接口查询地址了,论坛上会公布
notify_id=request.Form("notify_id")
alipayNotifyURL	= alipayNotifyURL & "service=notify_verify&partner=" & partner & "&notify_id=" & notify_id
	
	Set Retrieval = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
	Retrieval.setOption 2, 13056 
	Retrieval.open "GET", alipayNotifyURL, False, "", "" 
	Retrieval.send()
	ResponseTxt = Retrieval.ResponseText
	Set Retrieval = Nothing


'*******************************************************************

'获取支付宝POST过来通知消息
Dim varItem,mystr,mystr,i,j,aliCount,minmax,minmaxSlot,mark,temp,md5str,mysign

For Each varItem in Request.Form 
mystr=varItem&"="&Request.Form(varItem)&"^"&mystr
Next 
If mystr<>"" Then 
mystr=Left(mystr,Len(mystr)-1)
End If 
'response.write mystr
'*******************************************************************
mystr = SPLIT(mystr, "^")
aliCount=ubound(mystr)
'对参数排序
For i = aliCount TO 0 Step -1
minmax = mystr( 0 )
minmaxSlot = 0
For j = 1 To i
mark = (mystr( j ) > minmax)
If mark Then 
minmax = mystr( j )
minmaxSlot = j
End If 
Next
    
If minmaxSlot <> i Then 
temp = mystr( minmaxSlot )
mystr( minmaxSlot ) = mystr( i )
mystr( i ) = temp
End If
Next
'构造md5摘要字符串
 For j = 0 To aliCount Step 1
 value = SPLIT(mystr( j ), "=")

 If  value(1)<>"" And value(0)<>"sign" And value(0)<>"sign_type"  Then
 If j=aliCount Then
 md5str= md5str&mystr( j )
 Else 
 md5str= md5str&mystr( j )&"&"
 End If 
 End If 
 Next
md5str=md5str&key
 '生成md5摘要
 mysign=md5(md5str)

Dim pay_msg
'*******************************************************************
	'验证消息的可靠性,并且处理自己的业务动作,然后反回给支付宝成功消息  
If mysign=request.Form("sign") And ResponseTxt="true" Then 	

  '判断支付状态
	If  request.Form("trade_status")="TRADE_FINISHED" Then'支付宝收到买家付款,请卖家发货 ,修改订单状态,发货等TRADE_FINISHED
		conn.execute("update cnk_orderform set zhuangtai=1,payway='支付宝收到付款,请发货' where orderid='"&sqlchkchar(notify_id)&"'")	'处理订单状态
		pay_msg="支付成功"
	End If

Else
	pay_msg="支付失败"
End If 

Response.write "<script language=javascript>"
Response.write "window.location.href='pay_showResult.asp?msg=" & pay_msg & "';"  '替换成商户网站相应页面地址
Response.write "</script>"

''*******************************************************************
''写文本,方便测试(看网站需求,也可以改成存入数据库)
'TOEXCELLR=TOEXCELLR&md5str&"MD5结果:"&mysign&"="&request.Form("sign")&"--ResponseTxt:"&ResponseTxt
'set fs= createobject("scripting.filesystemobject") 
'set ts=fs.createtextfile(server.MapPath("Notify_DATA/"&replace(now(),":","")&".txt"),true)

' ts.writeline(TOEXCELLR)
' ts.close
' set ts=Nothing
' set fs=Nothing
%>