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 & "¬ify_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 %>