📄 alipay_notify.asp
字号:
<!--#include file="./MD5.asp"-->
<!--#include file="./alipay_Config.asp"-->
<%
' sDate = Now()
' sDate = Year(sDate) & Right(("00" & Month(sDate)),2) & Right(("00" & Day(sDate)),2) & Right(("00" & Hour(sDate)),2) & Right(("00" & Minute(sDate)),2) & Right(("00" & Second(sDate)),2)
' Set fso = server.CreateObject("scripting.filesystemobject") '创建日志
' Set tf = fso.opentextfile(server.mappath("./log"&sDate&".html"),8,True) '创建日志
Set md5Obj = New MD5
md5Obj.MD5_Initialize()
Dim returnTxt '返回给支付宝通知接口的结果
Dim alipayNotifyURL '支付宝查询接口URL
Dim ResponseTxt '交易查询结果
returnTxt = "test"
'ATN 校验地址
'*******************************************************************
alipayNotifyURL = "https://www.alipay.com/cooperate/gateway.do?"
alipayNotifyURL = alipayNotifyURL & "service=notify_verify&partner=" & partner & "¬ify_id=" & request.Form("notify_id")
'获取ATN结果,如果你的服务器不支持https访问的话,需要用老的接口查询地址了
'如果你的服务器不支持https访问的话,可以使用http查询地址,具体如下:
'alipayNotifyURL = "http://notify.alipay.com/trade/notify_query.do?"
'alipayNotifyURL = alipayNotifyURL &"partner=" & partner & "notify_id=" & request.Form("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
sign = DelStr(Request("sign"))
total_fee = DelStr(Request("total_fee"))
seller_email = DelStr(Request("seller_email"))
trade_status = DelStr(Request("trade_status"))
''''以下是参数例表,如需用到可以获取来使用
'实物和虚拟都可以获取如下值
' price = DelStr(Request("price")) '商品单价
' gmt_payment = DelStr(Request("gmt_payment")) '买家付款时间
' trade_status = DelStr(Request("trade_status")) '交易状态
' seller_actions = DelStr(Request("seller_actions")) '卖家动作
' total_fee = DelStr(Request("total_fee")) '总价
' body = DelStr(Request("body")) '商品描述
' notify_id = DelStr(Request("notify_id")) '交易返回ID
' gmt_logistics_modify = DelStr(Request("gmt_logistics_modify")) '物流状态更新时间
' seller_id = DelStr(Request("seller_id")) '卖家PARTNER值
' sign = DelStr(Request("sign")) 'MD5加密串
' notify_time = DelStr(Request("notify_time")) '收到通知时间
' notify_type = DelStr(Request("notify_type")) '通知类型, trade_status_sync表示交易状态同步动知
' use_coupon = DelStr(Request("use_coupon")) '是否使用红包
' seller_email = DelStr(Request("seller_email")) '卖家帐号
' is_total_fee_adjust = DelStr(Request("is_total_fee_adjust")) '交易金额是否修改过
' quantity = DelStr(Request("quantity")) '购买数量
' buyer_email = DelStr(Request("buyer_email")) '买家帐号
' subject = DelStr(Request("subject")) '商品名称
' buyer_id = DelStr(Request("buyer_id")) '买家PARTNER值
' payment_type = DelStr(Request("payment_type")) '支付类型
' receive_address = DelStr(Request("receive_address")) '收货地址
' receive_name = DelStr(Request("receive_name")) '收货人姓名
' logistics_payment = DelStr(Request("logistics_payment")) '物流付款方式
' gmt_create = DelStr(Request("gmt_create")) '交易创建时间
' trade_no = DelStr(Request("trade_no")) '支付宝交易号
' logistics_fee = DelStr(Request("logistics_fee")) '物流费用
' receive_zip = DelStr(Request("receive_zip")) '收货人邮编
' logistics_type = DelStr(Request("logistics_type")) '物流类型
' sign_type = DelStr(Request("sign_type")) '签名类型
' out_trade_no = DelStr(Request("out_trade_no")) '外部交易号
' discount = DelStr(Request("discount")) '折扣
'即时到帐返回参数
' trade_status = DelStr(Request("trade_status")) '交易状态
' sign_type = DelStr(Request("sign_type")) '签名类型
' out_trade_no = DelStr(Request("out_trade_no")) '外部交易号
' body = DelStr(Request("body")) '商品描述
' total_fee = DelStr(Request("total_fee")) '总价
' logistics_fee = DelStr(Request("logistics_fee")) '运费
' trade_no = DelStr(Request("trade_no")) '支付宝内部交易号
' buyer_id = DelStr(Request("buyer_id")) '买号PARTNER
' payment_type = DelStr(Request("payment_type")) '物流方式
' notify_time = DelStr(Request("notify_time")) '收到通知时间
' sign = DelStr(Request("sign")) 'MD5加密串
' notify_type = DelStr(Request("notify_type")) '通知类型
' subject = DelStr(Request("subject")) '商品名称
' buyer_email = DelStr(Request("buyer_email")) '买家支付宝帐号
' seller_email = DelStr(Request("seller_email")) '卖家帐号
' seller_id = DelStr(Request("seller_id")) '卖家PARTNER
' notify_id = DelStr(Request("notify_id")) '交易返回ID
'*******************************************************************
'获取支付宝POST过来通知消息
For Each varItem in Request.Form
mystr=varItem&"="&Request.Form(varItem)&"^"&mystr
Next
'tf.writeline("交易返回:"& mystr )
If mystr<>"" Then
mystr=Left(mystr,Len(mystr)-1)
End If
'*******************************************************************
mystr = SPLIT(mystr, "^")
Count=ubound(mystr)
'对参数排序
For i = Count 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 Count Step 1
value = SPLIT(mystr( j ), "=")
If value(1)<>"" And value(0)<>"sign" And value(0)<>"sign_type" Then
If j=Count Then
md5str= md5str&mystr( j )
Else
md5str= md5str&mystr( j )&"&"
End If
End If
Next
md5str=md5str&key
'生成md5摘要
mysign=md5Obj.md5(md5str)
'*******************************************************************
'***********日志
' tf.writeline("mysign=" & mysign)
' tf.writeline(" sign=" & sign)
' tf.writeline("total_fee=" & total_fee)
' tf.writeline("seller_email=" & seller_email)
' tf.writeline("trade_status=" & trade_status)
' tf.close
'等待买家付款
If trade_status = "WAIT_BUYER_PAY" Then
'支付宝发货通知
If (ResponseTxt = "true") Then
returnTxt = "success"
Else
returnTxt = "fail"
End If
'买家付款成功,等待卖家发货
ElseIf trade_status = "WAIT_SELLER_SEND_GOODS" Then
'支付宝发货通知
If (ResponseTxt = "true") Then
returnTxt = "success"
Else
returnTxt = "fail"
End If
'等待买家确认收货
ElseIf trade_status = "WAIT_BUYER_CONFIRM_GOODS" Then
'支付宝发货通知
If (ResponseTxt = "true") Then
returnTxt = "success"
Else
returnTxt = "fail"
End If
'交易成功结束
ElseIf trade_status = "TRADE_FINISHED" Then
If (ResponseTxt = "true") Then
returnTxt = "success"
Else
returnTxt = "fail"
End If
'其他交易状态通知情况
Else
If (ResponseTxt = "true") Then
returnTxt = "success"
Else
returnTxt = "fail"
End If
End If
Response.Write returnTxt
'调用方法 DelStr(值),防止SQL注入攻击
Function DelStr(Str)
If IsNull(Str) Or IsEmpty(Str) Then
Str = ""
End If
DelStr = Replace(Str,";","")
DelStr = Replace(DelStr,"'","")
DelStr = Replace(DelStr,"&","")
DelStr = Replace(DelStr," ","")
DelStr = Replace(DelStr," ","")
DelStr = Replace(DelStr,"%20","")
DelStr = Replace(DelStr,"--","")
DelStr = Replace(DelStr,"==","")
DelStr = Replace(DelStr,"<","")
DelStr = Replace(DelStr,">","")
DelStr = Replace(DelStr,"%","")
End Function
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -