微信公眾號支付源碼asp分享
微信公眾號支付程序類文件:class.asp
--------------------------------------------
dim apiurl,create_ip,nonce_str,timeStamp,xmlhttp,preCookies,json_str
preCookies = "aqefd"
create_ip = GetIP()
nonce_str = GetRnd(10)
timeStamp = ToUnixTime(now())
xmlhttp = "Msxml2.ServerXMLHTTP.6.0" '候選:Msxml2.ServerXMLHTTP.3.0
json_str = "2" '1 or 2
'微信支付V3獲取Prepay_Id
Function get_prepay_id()
dim postData,signValue,post_url,sign,returnXml,xml_dom,return_code,result_code
post_url= "https://api.mch.weixin.qq.com/pay/unifiedorder"
sign="appid="&getAppId&"&attach="&attach_my&"&body="&body&"&mch_id="&getMCHID&"&nonce_str="&nonce_str&"¬ify_url="¬ify_url&"&openid="&openid&"&out_trade_no="&out_trade_no&"&spbill_create_ip="&create_ip&"&total_fee="&total_fee&"&trade_type=JSAPI&key="&getPartnerKey
signValue=UCase(MD5(sign,"UTF-8"))
postData="<xml>"&_
"<appid><![CDATA["&getAppId&"]]></appid>"&_
"<attach><![CDATA["&attach_my&"]]></attach>"&_
"<body><![CDATA["&body&"]]></body>"&_
"<mch_id><![CDATA["&getMCHID&"]]></mch_id>"&_
"<nonce_str><![CDATA["&nonce_str&"]]></nonce_str>"&_
"<notify_url><![CDATA["¬ify_url&"]]></notify_url>"&_
"<openid><![CDATA["&openid&"]]></openid>"&_
"<out_trade_no><![CDATA["&out_trade_no&"]]></out_trade_no>"&_
"<spbill_create_ip><![CDATA["&create_ip&"]]></spbill_create_ip>"&_
"<total_fee><![CDATA["&total_fee&"]]></total_fee>"&_
"<trade_type><![CDATA[JSAPI]]></trade_type>"&_
"<sign><![CDATA["&signValue&"]]></sign>"&_
"</xml>"
returnXml=Get_code_url(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
'數據正常
get_prepay_id=xml_dom.getelementsbytagname("prepay_id").item(0).text
end if
end if
end if
End Function
'微信支付V3,返回最后提交的paySign
Function get_paySign()
dim sign
sign="appId="&getAppId&"&nonceStr="&nonce_str&"&package=prepay_id="&prepay_id&"&signType=MD5&timeStamp="&timeStamp&"&key="&getPartnerKey
get_paySign=UCase(MD5(sign,"UTF-8"))
End Function
'獲取用戶OpenID
Function GetOpenId()
if request.Cookies(preCookies&"openid")="" then
dim code,s_url,url,strJson,access_token,openids
code=request("code")
if code="" then
s_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="&getAppId&"&redirect_uri="&Server.URLEncode(redirect_url)&"&response_type=code&scope=snsapi_base&state=Sky#wechat_redirect"
response.Redirect(s_url)
response.End()
else
url="https://api.weixin.qq.com/sns/oauth2/access_token?appid="&getAppId&"&secret="&getSecret&"&code="&code&"&grant_type=authorization_code"
strJson=GetURL(url)
dim objTest
if json_str="1" then
Call InitScriptControl:Set objTest = getJSONObject(strJson)
elseif json_str="2" then
Set objTest = getjson(strJson)
end if
if InStr(strJson,"errcode")>0 then
response.Write "獲取Openid出錯:"&strJson
response.End()
else
openids=objTest.openid '獲取openid
Response.Cookies(preCookies&"openid")=openids
Response.Cookies(preCookies&"openid").Expires=DateAdd("m",60,now())
GetOpenId=openids
end if
end if
else
GetOpenId=request.Cookies(preCookies&"openid")
end if
End Function