asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付

asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付 只是多了一个defalutbank的参数。具体看 

open.alipay.com



<%
' 类名:AlipaySubmit
' 功能:支付宝各接口请求提交类
' 详细:构造支付宝各接口表单HTML文本,获取远程HTTP数据
' 版本:3.3
' 修改日期:2012-07-13
' 说明:
' 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
' 该代码仅供学习和研究支付宝接口使用,只是提供一个参考
%>

<!--#include file="alipay_config.asp"-->
<!--#include file="alipay_core.asp"-->

<%

'支付宝网关地址(新)
GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?"

Class AlipaySubmit

	''
	' 生成签名结果
	' param sParaSort 待签名的数组
	' return 签名结果字符串
	Private Function BuildRequestMysign(sParaSort)
			
		'把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
		prestr = CreateLinkstring(sParaSort)
		
		'获得签名结果
		 Select Case sign_type
		 	Case "MD5" BuildRequestMysign = Md5Sign(prestr,key,input_charset)
			Case Else BuildRequestMysign = ""
		 End Select
	End Function

	''
	' 生成要请求给支付宝的参数数组
	' param sParaTemp 请求前的参数数组
	' return 要请求的参数数组
	Private Function BuildRequestPara(sParaTemp)
		Dim mysign
		'过滤签名参数数组
		sPara = FilterPara(sParaTemp)
		
		'对请求参数数组排序
		sParaSort = SortPara(sPara)
		
		'获得签名结果
		mysign = BuildRequestMysign(sParaSort)
		
		'签名结果与签名方式加入请求提交参数组中
		nCount = ubound(sParaSort)
		Redim Preserve sParaSort(nCount+1)
		sParaSort(nCount+1) = "sign="&mysign
		Redim Preserve sParaSort(nCount+2)
		sParaSort(nCount+2) = "sign_type="&sign_type

		BuildRequestPara = sParaSort
	End Function
	
	''
	' 生成要请求给支付宝的参数数组字符串
	' param sParaTemp 请求前的参数数组
	' return 要请求的参数数组字符串
	Private Function BuildRequestParaToString(sParaTemp)
		Dim sRequestData
		'待签名请求参数数组
		sPara = BuildRequestPara(sParaTemp)
		'把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并且对其做urlencode编码处理
		sRequestData = CreateLinkStringUrlEncode(sPara)
		
		BuildRequestParaToString = sRequestData
	End Function

	''
	' 建立请求,以表单HTML形式构造(默认)
	' param sParaTemp 请求前的参数数组
	' param sMethod 提交方式。两个值可选:post、get
	' param sButtonValue 确认按钮显示文字
	' return 提交表单HTML文本
	Public Function BuildRequestForm(sParaTemp, sMethod, sButtonValue)
		Dim sHtml, nCount
		'待请求参数数组
		sPara = BuildRequestPara(sParaTemp)
		
		sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='"& GATEWAY_NEW &"_input_charset="&input_charset&"' method='"&sMethod&"'>"
		
		nCount = ubound(sPara)
		For i = 0 To nCount
			'把sPara的数组里的元素格式:变量名=值,分割开来
			iPos = Instr(sPara(i),"=")			'获得=字符的位置
			nLen = Len(sPara(i))				'获得字符串长度
			sItemName = left(sPara(i),iPos-1)	'获得变量名
			sItemValue = right(sPara(i),nLen-iPos)'获得变量的值
		
			sHtml = sHtml & "<input type='hidden' name='"& sItemName &"' value='"& sItemValue &"'/>"
		next

		'submit按钮控件请不要含有name属性
		'submit按钮默认设置为不显示
		sHtml = sHtml & "<input type='submit' value='"&sButtonValue&"' style='display:none;'></form>"
		
		sHtml = sHtml & "<script>document.forms['alipaysubmit'].submit();</script>"
		
		BuildRequestForm = sHtml
	End Function


	Public Function BuildRequestFormbank( trade_no , subject , total_fee ,body ,show_url )
		Dim sHtml
		
		sHtml = "<form name=alipayment action=alipayapi.asp method=post>"
		
		sHtml = sHtml & "			<input size=""30"" name=""WIDout_trade_no"" type='hidden' value="""& trade_no &"""/>"
		sHtml = sHtml & "                        <input size=""30"" name=""WIDsubject""  type='hidden' value="""& subject &"""/>"
		sHtml = sHtml & "                        <input size=""30"" name=""WIDtotal_fee""  type='hidden' value="""& total_fee &"""/>"
		sHtml = sHtml & "                        <input size=""30"" name=""WIDbody""  type='hidden' value="""& body &"""/>"
		sHtml = sHtml & "                        <input size=""30"" name=""WIDshow_url""  type='hidden' value="""& show_url &"""/>"


		sHtml = sHtml & "    <style>"
		sHtml = sHtml & "    ul.bank { padding:0px;margin-left:30px;}"
		sHtml = sHtml & "    ul.bank li { list-style:none; float:left; padding:5px;}"
		sHtml = sHtml & "    </style>"
		sHtml = sHtml & ""
		sHtml = sHtml & "    <UL class=""bank fix"">"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""ICBCB2C"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""中国工商银行"" align=""middle"" src=""images/bank_gsyh2.gif"">"
		sHtml = sHtml & "        </LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""CMB"" type=""radio"">   <IMG alt=""招商银行"""
		sHtml = sHtml & "                                                                          align=""middle"""
		sHtml = sHtml & "                                                                          src=""images/bank_zsyh2.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""CCB"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""中国建设银行"" align=""middle"""
		sHtml = sHtml & "                 src=""images/bank_jsyh2.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""ABC"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""中国农业银行"" align=""middle"""
		sHtml = sHtml & "                 src=""images/bank_nyyh2.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""BOCB2C"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""中国银行"" align=""middle"""
		sHtml = sHtml & "                 src=""images/bank_zgyh2.gif""></LI>"

		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""COMM-DEBIT"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""交通银行"" align=""middle"" src=""images/bank_jtyh.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""CIB"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""兴业银行"" align=""middle"" src=""images/bank_xyyh.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""CMBC"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""中国民生银行"" align=""middle"" src=""images/bank_msyh2.gif"">"
		sHtml = sHtml & "        </LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""GDB"" type=""radio"">   <IMG alt=""广东发展银行"""
		sHtml = sHtml & "                                                                          align=""middle"""
		sHtml = sHtml & "                                                                          src=""images/bank_gdfz.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""SPABANK"" type=""radio"">   "
		sHtml = sHtml & "            平安银行"
		sHtml = sHtml & "        </LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""SPDB"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""上海浦东发展银行"" align=""middle"""
		sHtml = sHtml & "                 src=""images/bank_pfyh.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""CITIC"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""中信银行"" align=""middle"" src=""images/bank_zxyh.gif""></LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""DEBIT"" type=""radio"">   "
		sHtml = sHtml & "            <IMG alt=""光大银行"" align=""middle"" src=""images/bank_gdyh.gif""></LI>"
		sHtml = sHtml & "         <LI><INPUT name=""WIDdefaultbank"" value=""FDB"" type=""radio"">   富滇银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""HZCBB2C"" type=""radio"">   杭州银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""SHBANK"" type=""radio"">   上海银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""NBBANK"" type=""radio"">   宁波银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""POSTGC"" type=""radio"">   中国邮政储蓄银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""BJBANK"" type=""radio"">   北京银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""SHRCB"" type=""radio"">   上海农商银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""WZCBB2C-DEBIT	"" type=""radio"">   温州银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""BJRCB"" type=""radio"">   北京农村商业银行</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""abc1003"" type=""radio"">   visa</LI>"
		sHtml = sHtml & "        <LI><INPUT name=""WIDdefaultbank"" value=""abc1004"" type=""radio"">   master</LI>"
		sHtml = sHtml & "    </UL>"
		
		sHtml = sHtml & "    <br><UL class=""bank fix"" style=""clear:both""><button class=""new-btn-login"" type=""submit"" style=""text-align:center;background-color: #ff8c00;	color: #FFFFFF;    font-weight: bold;	"
		sHtml = sHtml &"border: medium none;	width:82px;height:28px;"">确 认</button></UL>"

		'submit按钮控件请不要含有name属性
		'submit按钮默认设置为不显示
		'sHtml = sHtml & "<input type='submit' value='"&sButtonValue&"' style='display:none;'></form>"
		sHtml = sHtml & "</form>"
		
		BuildRequestFormbank = sHtml
	End Function



	''
	' 建立请求,以HTML形式构造(默认)
	' param sParaTemp 请求前的参数数组
	' param sMethod 提交方式。两个值可选:post、get
	' param sButtonValue 确认按钮显示文字
	' return 提交表单HTML文本
	Public Function BuildRequestUrl(sParaTemp, sMethod, sButtonValue)
		Dim sHtml, nCount
		'待请求参数数组
		sPara = BuildRequestPara(sParaTemp)
		
		sHtml =  GATEWAY_NEW 
		
		nCount = ubound(sPara)
		For i = 0 To nCount
			'把sPara的数组里的元素格式:变量名=值,分割开来
			iPos = Instr(sPara(i),"=")			'获得=字符的位置
			nLen = Len(sPara(i))				'获得字符串长度
			sItemName = left(sPara(i),iPos-1)	'获得变量名
			sItemValue = right(sPara(i),nLen-iPos)'获得变量的值
		
			sHtml = sHtml & "&"& sItemName &"="& sItemValue
		next		
		BuildRequestUrl= sHtml
	End Function
	
	''
	' 建立请求,以模拟远程HTTP的GET请求方式构造并获取支付宝XML类型处理结果
	' param sParaTemp 请求前的参数数组
	' param sParaNode 要输出的XML节点名
	' return 支付宝返回XML指定节点内容
	Public Function BuildRequestHttpXml(sParaTemp, sParaNode)
		Dim sUrl, objHttp, objXml, nCount, sParaXml()
		nCount = ubound(sParaNode)
		
		'待请求参数数组字符串
		sRequestData = BuildRequestParaToString(sParaTemp)
		'构造请求地址
		sUrl = GATEWAY_NEW & sRequestData

		'获取远程数据
		Set objHttp=Server.CreateObject("Microsoft.XMLHTTP")
		'如果Microsoft.XMLHTTP不行,那么请替换下面的两行行代码尝试
		'Set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
		'objHttp.setOption 2, 13056
		objHttp.open "GET", sUrl, False, "", ""
		objHttp.send()
		Set objXml=Server.CreateObject("Microsoft.XMLDOM")
		objXml.Async=true
		objXml.ValidateOnParse=False
		objXml.Load(objHttp.ResponseXML)
		Set objHttp = Nothing
		
		set objXmlData = objXml.getElementsByTagName("alipay").item(0)
		If Isnull(objXmlData.selectSingleNode("alipay")) Then
			Redim Preserve sParaXml(1)
			sParaXml(0) = "错误:非法XML格式数据"
		Else
			If objXmlData.selectSingleNode("is_success").text = "T" Then
				For i = 0 To nCount
					Redim Preserve sParaXml(i+1)
					sParaXml(i) = objXmlData.selectSingleNode(sParaNode(i)).text
				Next
			Else
				Redim Preserve sParaXml(1)
				sParaXml(0) = "错误:"&objXmlData.selectSingleNode("error").text
			End If
		End If
		
		BuildRequestHttpXml = sParaXml
	End Function
	
	''
	' 建立请求,以模拟远程HTTP的GET请求方式构造并获取支付宝纯文字类型处理结果
	' param sParaTemp 请求前的参数数组
	' return 支付宝处理结果
	Public Function BuildRequestHttpWord(sParaTemp)
		Dim sUrl, objHttp, sResponseTxt
		
		'待请求参数数组字符串
		sRequestData = BuildRequestParaToString(sParaTemp)
		'构造请求地址
		sUrl = GATEWAY_NEW & sRequestData

		'获取远程数据
		Set objHttp=Server.CreateObject("Microsoft.XMLHTTP")
		'如果Microsoft.XMLHTTP不行,那么请替换下面的两行行代码尝试
		'Set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
		'objHttp.setOption 2, 13056
		objHttp.open "GET", sUrl, False, "", ""
		objHttp.send()
		sResponseTxt = objHttp.ResponseText
		Set objHttp = Nothing
		
		BuildRequestHttpWord = sResponseTxt
	End Function

	''
	' 用于防钓鱼,调用支付宝防钓鱼接口(query_timestamp)来获取时间戳的处理函数
	' 注意:远程解析XML出错,与IIS服务器配置有关
	' return 时间戳字符串
	Public Function Query_timestamp()
		Dim sUrl, encrypt_key
		sUrl = GATEWAY_NEW &"service=query_timestamp&partner="&partner&"&_input_charset="&input_charset
		encrypt_key = ""
		
		Dim objHttp, objXml
		Set objHttp=Server.CreateObject("Microsoft.XMLHTTP")
		'如果Microsoft.XMLHTTP不行,那么请替换下面的两行行代码尝试
		'Set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
		'objHttp.setOption 2, 13056
		objHttp.open "GET", sUrl, False, "", ""
		objHttp.send()
		Set objXml=Server.CreateObject("Microsoft.XMLDOM")
		objXml.Async=true
		objXml.ValidateOnParse=False
		objXml.Load(objHttp.ResponseXML)
		Set objHttp = Nothing
		
		Set objXmlData = objXml.getElementsByTagName("encrypt_key")  '节点的名称
		If Isnull(objXml.getElementsByTagName("encrypt_key")) Then
			encrypt_key = ""
		Else
			encrypt_key = objXmlData.item(0).childnodes(0).text
		End If

		Query_timestamp = encrypt_key
	End Function

End Class

%>

如有疑问请加QQ群 348615323 网店系统开发群
有一部分朋友对支付宝包装网银相当感兴趣,作为一个程序猿在这给大家解密它的工作逻辑原理 最近市面上很受欢迎的网银支付接口也比较稳定的网银接口就属,支付宝包装的网银接口了,目前市面上三方网银接口能够去用的不多几乎很少,也很难去寻找一条稳定的通道。 支持网银直连多家银行,原生在线网银支付接口。 商户管理、交易管理、通道管理、账号管理、自动轮询、PC端监控安全稳定,全自动回调,零延迟。 废话不多说下面就进入正题,既然能通过支付宝去调取网银接口,那么支付宝里面肯定是有通过支付宝去连接到网银的入口,那我们就先去找一下这个入口。 首先我们需要准备一个支付宝账号(最好是企业支付宝),登录到支付宝,在支付宝首页我们找到充值按钮点进去看一下。点进去之后我们就可以看到一个余额充值页面,这里显示需要通过网银支付去充值,那么我们就找到了,支付宝网银链接入口了,点击更多那里我们可以看到,支付宝支持的银行列表,支持的银行还是蛮多的,所以这个要是做成支付通道,那么肯定是相当不错了。 看看是否可以正常跳转到网银支付页面,这边用交通银行测试提交,可以看到能正常提交到交通银行网银付款页面,也就是和三方网银付款页面效果是一样的。 到这里我们就相当于完成了从支付宝请求到银行的过程了,也就是说我们需要把这个入口拿到之后,和我们的程序进行对接就可以完成网银支付通道的对接了,那么如何把请求发到支付宝支付宝去完成这个操作呢?(这个在这里就不详细讲解了,需要的朋友请‘滴’我) 下面我们去讲一下如何去做支付订单的回调,既然请求支付了肯定需要判断,是否支付成功,还是未支付。那么我们就需要找到我们充值的那笔是否在支付宝里面可以查到记录。 我们在充值页面那里可以看到有个充值记录,也就是我们充值余额之后的记录,在这里只要充值成功的都会有记录,没有支付的就不会在这里显示,也就是只显示支付的记录。 从这里就可以看到有显示时间、单号、渠道、银行单号、金额、状态等等,这样我们可以通过这些参数去做通知回调处理,当然这里肯定需要用到抓取订单记录,比如爬虫技术等等,在这里就不详细讲解了,有问题的朋友请联系我。 好了到这里支付宝包装网银支付宝网关原理就分享完了,如果需要程序的朋友可以直接‘滴’我,这边已有成品可以直接拿去使用。 支付宝网银网关软件是一款实现全天24小时无人值守、自动查询支付宝订单并通知网站接口实现即时到帐的支付宝辅助工具。它完全替代了第三方支付平台,能自动监控支付宝 账户的即时收款订单,及时自动完成交易。成功地解决了中、小企业及非企业站长因使用第三方支付平台而造成的网站资金周转困难,手续费昂贵,商品成本提高等 问题
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值