ASP写的微信支付退款接口,提交后显示错误800a01a8

ASP写的微信支付退款接口,API操作证书apiclient_cert.p12已经安装了,提交后显示错误800a01a8

,求助各路大神,如何解决?

---------------------------------------------------------------------------------------

Microsoft VBScript ����ʱ���� ���� '800a01a8'

ȱ�ٶ���: 'xml_dom.getelementsbytagname(...).item(...)'

/refund/lib/wx_class.asp���� 30

附wx_class.asp文件代码:

<%
dim apiurl,create_ip,nonce_str,timeStamp,xmlhttp,preCookies
preCookies      = "LEMAIKU"
create_ip       = GetIP()
nonce_str       = GetRnd(10)
timeStamp       = ToUnixTime(now())
xmlhttp         = "Msxml2.ServerXMLHTTP.6.0"
'xmlhttp         = "Msxml2.ServerXMLHTTP.3.0" '候选
json_str        = "2" '1 or 2

'微信申请退款
Function Refund()
	dim postData,signValue,post_url,sign,returnXml,xml_dom,return_code,result_code,get_prepay_id,attach
	post_url= "https://api.mch.weixin.qq.com/secapi/pay/refund"
	sign="appid="&getAppId&"&mch_id="&getMCHID&"&nonce_str="&nonce_str&"&out_trade_no="&out_trade_no&"&out_refund_no="&out_refund_no&"&total_fee="&total_fee&"&refund_fee="&refund_fee
	signValue=UCase(MD5(sign,"UTF-8"))
	postData="<xml>"&_
		"<appid><![CDATA["&getAppId&"]]></appid>"&_
		"<mch_id><![CDATA["&getMCHID&"]]></mch_id>"&_
		"<nonce_str><![CDATA["&nonce_str&"]]></nonce_str>"&_
		"<out_trade_no><![CDATA["&out_trade_no&"]]></out_trade_no>"&_
		"<out_refund_no><![CDATA["&out_refund_no&"]]></out_refund_no>"&_
		"<total_fee><![CDATA["&total_fee&"]]></total_fee>"&_
		"<refund_fee><![CDATA["&refund_fee&"]]></refund_fee>"&_
		"<sign><![CDATA["&signValue&"]]></sign>"&_
		"</xml>"
	returnXml = HttpSendSSL(post_url,postData)
	set xml_dom=Server.CreateObject("MSXML2.DOMDocument")
	xml_dom.loadXml(returnXml)
	return_code=xml_dom.getelementsbytagname("return_code").item(0).text
	if return_code="FAIL" then
		'协议级错误
		get_prepay_id=xml_dom.getelementsbytagname("return_msg").item(0).text
		response.Write("协议级接口调用错误:"&get_prepay_id)
		response.End()
	else
		result_code=xml_dom.getelementsbytagname("result_code").item(0).text
		if result_code="FAIL" then
		'业务级错误
			get_prepay_id=xml_dom.getelementsbytagname("err_code_des").item(0).text
			response.Write("业务级支付错误:"&get_prepay_id)
			response.End()
		else
			if return_code="SUCCESS" and result_code="SUCCESS" then
				'数据正常
				Refund=xml_dom.getelementsbytagname("code_url").item(0).text
			end if
		end if
	end if
End Function

'引用通用过程文件
%>
<!--#include file="wx_function.asp"-->

 

returnXml = HttpSendSSL(post_url,postData)
Response.Write returnXml '打印返回的内容看看返回了什么内容。感觉返回数据有问题,不存在return_code,得到空节点在调用item(0).text就出错了

还有HttpSendSSL方法是不是使用了on error resume next 容错了,HttpSendSSL方法有问题导致返回空字符串

asp用utf-8编码,默认错误是ansi格式的,会导致乱码,按照这个文章配置下错误,将错误信息显示出来,方便调试

http://www.w3dev.cn/article/20150108/asp-error-display-Garbled.aspx

 

文章太老了。。500-100.asp在win2008以上路径应该是C:\inetpub\custerr\zh-CN这个,操作方法一样,就是500错误提示文件位置不一样

xml_dom.getelementsbytagname("return_code")  这一行返回的是个set,获取里面的只是不是应该直接xml_dom.getelementsbytagname("return_code")(0);

java开发,不是很了解ASP

看一下微信退款官方api

望采纳,谢谢