⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receive.asp

📁 一套设计完善、高效的web商城解决方案
💻 ASP
字号:
<!--#include file="../Config/Conn.asp"-->
<!--#include file="MD5.asp"-->
<%
	'禁止网页缓存
	Response.Buffer = True 
	Response.Expires = -1
	Response.ExpiresAbsolute = Now() - 1 
	Response.Expires = 0 
	Response.CacheControl = "no-cache" 
     ' 提取表单参数
	 ' 
	 ' v_oid
	 '      商户发送的v_oid定单编号     
	 ' v_pmode
	 '      支付方式(字符串)     
	 ' v_pstatus 
	 '      支付状态
     '      20(支付成功)
     '      30(支付失败)
	 ' v_pstring
	 '      支付结果信息 
     '      支付完成(当v_pstatus=20时);
     '      失败原因(当v_pstatus=30时);
     ' v_md5str
     '      Md5校验串
	 ' v_amount
	 '      订单实际支付金额
	 ' v_moneytype 
	 '      订单实际支付币种
	 ' remark1 
	 '      备注字段1
	 ' remark2 
	 '      备注字段2
	 ' key
	 '      私钥值,商户可上chinabank后台自行设定
	 

v_oid=request("v_oid")
v_pmode=request("v_pmode")
v_pstatus=request("v_pstatus")
v_pstring=request("v_pstring")
v_amount=request("v_amount")
v_moneytype=request("v_moneytype")
remark1=request("remark1")
remark2=request("remark2")
v_md5str=request("v_md5str")

set rs = conn.execute("select * from PayMode where Sort=1")
key=rs("PayKey")
rs.close
set rs=nothing  

'md5检查
if request("v_md5str")="" then
	'response.Write("v_md5str:空值")
	Response.write "<script>alert(""支付失败,请与管理员联系!"");location.href=""../MyInfo.asp"";</script>"
	response.end
end if

'md5校验
text = v_oid&v_pstatus&v_amount&v_moneytype&key
md5text = Ucase(trim(md5(text)))


'按md5检验情况输出结果 Ucase转换为大写
if md5text<>v_md5str then
  'response.write("支付验证MD5 Error,请与管理员联系!")
  Response.write "<script>alert(""支付失败,请与管理员联系!"");location.href=""../MyInfo.asp"";</script>"
else
  '逻辑处理
  if v_pstatus=20 then'支付成功
	  dim BillNo,BillNo2
	  BillNo=split(v_oid,"-")(0)&"-"&split(v_oid,"-")(2)
	  '判断是否已经支付
	  set rs = conn.execute("select BillNo from PayLog where BillNo='"&BillNo&"'")
	  if not rs.eof then
		  BillNo2=rs("BillNo")
	  end if
	  rs.close
	  set rs=nothing
	  if BillNo=BillNo2 then
		 Response.write "<script>alert(""禁止刷新"");location.href=""../MyInfo.asp"";</script>"
		 Response.end
	  end if
	  '与入付款记录,防止用户恶意刷新
	  conn.execute("Insert into PayLog(BillNo,[Money],Member)values('"&BillNo&"',"&v_amount&",'"&session("Member")&"')")
	  set rs = conn.execute("select Money,DeliveryOutlay from OrderForm where BillNo='"&BillNo&"'")
	  Money=rs("DeliveryOutlay")+rs("Money")
	  rs.close
	  set rs=nothing
	  if Money<1 and Money>0 then:Money="0"&Money
	  if Money < v_amount then
		  conn.execute("Update Member set [Money]=Money-"&v_amount&",MoneySum=MoneySum+"&v_amount&" where Member='"&session("Member")&"'")
		  Response.write "<script>alert(""支付成功,但支付金额与订单金额不符,不能为您发货!\n\n请与管理员联系!"");location.href=""../MyInfo.asp"";</script>"
		  response.end
	  else
		  conn.execute("Update Member set [Money]=Money-"&v_amount&",MoneySum=MoneySum+"&v_amount&" where Member='"&session("Member")&"'")
		  conn.execute("Update OrderForm set State=2 where BillNo='"&BillNo&"'")
		  Response.write "<script>alert(""支付成功,请等待发货!\n\n请经常登陆会员中心查看订单处理情况!"");location.href=""../MyInfo.asp"";</script>"
	  end if
  else'支付失败
  	Response.write "<script>alert(""支付失败,请与管理员联系!"");location.href=""../MyInfo.asp"";</script>"
  end if
end if  
'提示:仅是对校验码校验通过不表示该支付结果是成功只意味着该信息是由网银传回
'校验成功需对传回的v_pstatus参数做判断,其中20都意味着支付成功,30表示支付失败
'如果商户涉及实时售卡,请对返回的金额与数据库中原始金额做大小判断,以防恶意行为

'----------------------以下是所有接收数据的结果,供编程人员参考------------
'此次交易编号: v_oid
'if v_pstatus=20 then
	'zhuangtai = "在线支付已经支付成功"
'elseif v_pstatus=30 then
	'zhuangtai = "在线支付失败!"
'end if
'支付代码号:v_pstatus
'在线支付结果:v_pstring
 '您所使用的卡为:v_pmode
'传输来的校验码:v_md5str
'加密后的值:md5text
'v_amount:v_amount
'v_moneytype:v_moneytype
%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -