<%@ Language=VBScript %>
<!--#include virtual="/inc-freehost-function/FreeHostFunctionMain.asp"-->
<%
If not ef Then
If Application("NP_Netcard_ShopID")="123" Or Application("NP_Netcard_ShopID")="" Then
		ef=True
		ec="商号尚未设置！"
End if
end If

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

'---获取云网支付网关向商户发送的支付通知信息(以下简称为通知信息)
	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 = Application("NP_Netcard_Key")
		
		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 Cstr(Application("NP_Netcard_ShopID"))<>Cstr(c_mid) THEN
			response.write "提交的商户编号有误:"&c_mid&"_"&Application("NP_Netcard_ShopID")
			response.end
		END IF

Set conn=Server.CreateObject("ADODB.Connection")
	conn.Open Application("FreeHostDBlink")
Set dsNP = Server.CreateObject("ADODB.Recordset")	
	Sql="Select * from FreeHost.FreeHost_Netpay where ORDERID='"&c_order&"' and SHOPID='"&Application("NP_Netcard_ShopID")&"' "

if RegExpTest("[^A-Za-z0-9]",c_order) then
	ef=True
	ec="ORDERID或SHOPID不正确！用户试图SQL注入被拦截,内容:"&c_order&SHOPID
FreeHost_oplog "error","信息","实时返回支付出错"&ec
response.write "fail"&ec
response.end
end If

'	Application("NPS_test")=sql&"   "&FD_NPSId
'	response.write sql
'	response.end
		dsNP.Open Sql,conn,1,3
if dsNP.eof then
response.write "未找到该订单信息"
			response.end
else
  if dsNP("SucceedFlag") <>0 then
            response.write "状态已更新过了，不能重复操作！"
			response.end
  end if
'  if dsNP("ORDERMONEY") <>ORDERMONEY then
'		ef=True
'		ec="金额不正确！"
'  end if
end if

'Response.Write "okkkkkkkkkkk0kkk"
	'	Response.End




	'---校验商户订单系统中记录的订单金额和云网支付网关通知信息中的金额是否一致
		Dim r_orderamount	'商户自己系统记录的订单金额
		r_orderamount=dsNP("ORDERMONEY")	'商户从自己订单系统获取该值
		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
			'根据商户自己商务规则，进行发货等系列操作
	'		dsNP("SucceedFlag")=100
	'		dsNP.update



			if not ef then
UserName=dsNP("UserName")
OrderMoney=dsNP("OrderMoney")
Set dsreg = Server.CreateObject("ADODB.Recordset")	
	Sql="Select * from FreeHost.FreeHost_AGENT where username='"&UserName&"' and agenttype<>'n'"
		dsreg.Open Sql,conn,1,3
If dsreg.Eof Then
Set dsreg = Server.CreateObject("ADODB.Recordset")	
	Sql="Select * from FreeHost.FreeHost_USER where username='"&UserName&"'"
		dsreg.Open Sql,conn,1,3
If dsreg.Eof Then
		ef=True
		ec="会员名不存在！"
end if
end if
end if


if not ef then

if not dsNP("SucceedFlag")=100 then

dsNP("SucceedFlag")=100
dsNP.update
olduser_money=dsreg("usermoney")
If Application("NetPaypercent")>0 Then OrderMoney=OrderMoney/(1+Application("NetPaypercent"))
OrderMoney=Round(OrderMoney,2)
moneych=OrderMoney
dsreg("usermoney")=dsreg("usermoney")+OrderMoney
newuser_money=dsreg("usermoney")
dsreg.update

if not isnull(dsreg("kefunow")) then
Set dskefu = Server.CreateObject("ADODB.Recordset")	
	Sql="Select finishmoney from FreeHost.FreeHost_KeFu where kefumd5='"&md5(trim(dsreg("kefunow")))&"'"
	dskefu.Open Sql,conn,1,3
if not dskefu.Eof then
dskefu("finishmoney")=dskefu("finishmoney")+OrderMoney
dim kefu
kefu=dsreg("kefunow")
dskefu.update
end if
dskefu.close
end if

FreeHost_moneyNewlog conn,"y","n","n","n","y",isAgnHostSer,moneych,UserName,UserName,UserName,olduser_money,newuser_money,agnusername,agnStmoney,agnEndmoney,supusername,"网上支付云网接口订单"&ORDERID&",网站："&Request.ServerVariables("SERVER_NAME"),"网上支付云网接口订单"&ORDERID&",网站："&Request.ServerVariables("SERVER_NAME"),whichProduct,pdid,pingzheng,type1,"在线支付",haveget,havecheck
end if
end if

		END IF

	'---输出支付结果通知反馈
		'<result>：值固定为1，表示商户已成功收到网关的支付成功的通知。
		'<reURL> ：商户显示给用户处理结果页面的URL(对应范例文件：GetPayHandle.asp)
		Response.Write "<result>1</result><reURL>http://"&Request.ServerVariables("SERVER_NAME")&"/netpay/cncard/GetPayHandle.asp</reURL>"
		Response.End
%>