原創:asp調用阿里大魚API發送短信


<%@ CODEPAGE=65001 %>
<% Response.CodePage=65001 %>
<% Response.Charset="UTF-8" %>
<!--#include virtual="/inc/MD5-2.asp"-->

<%
'Response.write md5("erere")

'固定參數
app_key="233****" '阿里大魚后台獲取appkey
app_secret="c579429de37*******" 'appkey對應的密碼
format="json"
time_now =now()
dim params_arr_sign,params_arr_url

'response.write server.urlencode(now())
'response.write timestamp(now())
'te ="http://gw.api.taobao.com/router/rest?sign=36FA16DF40669106B2742F87274FA648&timestamp=2016-01-28+11%3A43%3A53&v=2.0&app_key=12129701&method=alibaba.aliqin.fc.sms.num.send&partner_id=top-apitools&format=json&sms_type=normal&extend=529&rec_num=13452080657&sms_free_sign_name=%E6%B4%BB%E5%8A%A8%E9%AA%8C%E8%AF%81&sms_template_code=SMS_5000241&sms_param=%7B%22code%22%3A%221234%22%2C%22product%22%3A%22ptl%22%7D"

'params_sms_free_sign_name 阿里大魚中的短信簽名
'extend 返回參數
'rec_num 手機號
'sms_template_code 阿里大魚中的短信模板編號'
'sms_param 短信模板中需要傳的變量 json
'程序調用只需這一行
call sms("U8記賬網","529","15310289823","SMS_5000238","{""code"":""802123"",""product"":""U8記賬網""}")
function sms(sms_free_sign_name,extend,rec_num,sms_template_code,sms_param)
'sms_free_sign_name ="活動驗證3"
'extend ="529"
'rec_num="1510281234"
'sms_template_code="SMS_5000241"
'sms_param="{""code"":""1234"",""product"":""ptl""}"


params_arr = createParamsArr(sms_free_sign_name,extend,rec_num,sms_template_code,sms_param)
params_arr_sign = Sortarray(params_arr) '簽名用'
params_arr_url = FilterPara(params_arr_sign) '傳參用

response.write RequestUrl(createParamsUrl())

end function
'數組 按字母排序'
Function Sortarray(ary)
Dim KeepChecking,I,FirstValue,SecondValue
KeepChecking=TRUE
Do Until KeepChecking=FALSE
KeepChecking=FALSE
For I=0 to UBound(ary)
If I=UBound(ary) Then Exit For
If ary(I)>ary(I+1) Then
FirstValue=ary(I)
SecondValue=ary(I+1)
ary(I)=SecondValue
ary(I+1)=FirstValue
KeepChecking=TRUE
End If
Next
Loop
Sortarray=ary
End Function

 

'Get方法請求url,獲取請求內容
Function RequestUrl(url)
Set XmlObj = Server.CreateObject("Microsoft.XMLHTTP")
XmlObj.open "GET",url, false
XmlObj.send
RequestUrl = XmlObj.responseText
Set XmlObj = nothing
End Function

'Post方法請求url,獲取請求內容
Function RequestUrl_post(url,data)
Set XmlObj = Server.CreateObject("Microsoft.XMLHTTP")
XmlObj.open "POST", url, false
'XmlObj.setrequestheader "POST","/t/add_t HTTP/1.1"
'XmlObj.setrequestheader "Host"," graph.qq.com "
XmlObj.setrequestheader "content-length ",len(data) 
XmlObj.setrequestheader "content-type", "application/json"
XmlObj.setrequestheader "Connection"," Keep-Alive"
XmlObj.setrequestheader "Cache-Control"," no-cache"
XmlObj.send(data)
RequestUrl_post = XmlObj.responseText
Set XmlObj = nothing
End Function
'生成sign簽名 md5 拼接參數 '
function createSign()

for i = 0 to ubound(params_arr_sign)
'response.write params_arr(i) &"<br>"

temp = params_arr_sign(i)
temp =replace(temp,"=","") '去掉=號'
if i=0 Then
params_str = temp
else
params_str = params_str &temp
end if
'response.write params_str &"<br>"
next
params_str = app_secret &params_str &app_secret
'response.write params_str &"<br>"
createSign = ucase(md5(params_str))
end function

'params_str = server.urlencode(params_str)
'response.write createSign()
'response.write ucase(md5(createSign()))

'根據短信所需參數 參數數組'
function createParamsArr(sms_free_sign_name,extend,rec_num,sms_template_code,sms_param)	
'params_sign = "sign=" &sign
params_timestamp = "timestamp=" & timestamp(time_now)
params_app_key = "app_key=" &app_key
params_method = "method=alibaba.aliqin.fc.sms.num.send"
params_format ="format=json"
params_v ="v=2.0"
params_sign_method="sign_method=md5"
params_sms_type = "sms_type=normal"
params_sms_free_sign_name = "sms_free_sign_name="&sms_free_sign_name
params_extend = "extend="&extend
params_rec_num ="rec_num="&rec_num
params_sms_template_code = "sms_template_code="&sms_template_code
params_sms_param = "sms_param="&sms_param
createParamsArr =array(params_timestamp,params_app_key,params_method,params_format,params_v,params_sign_method,params_sms_type,params_sms_free_sign_name,params_extend,params_rec_num,params_sms_template_code,params_sms_param)
end function

 

'通過參數數組 生成API URL'
function createParamsUrl()

params_url ="http://gw.api.taobao.com/router/rest?sign="& createSign()

for i = 0 to ubound(params_arr_url)
'response.write params_arr(i) &"<br>"	

params_url = params_url &"&"&params_arr_url(i)
'response.write params_url &"<br>"	
next

createParamsUrl = params_url

end function

'response.write createParamsUrl()
'response.write ubound(params_arr_url)

 

'生成時間綴 '
function timestamp(temp_date)
timestamp=year(temp_date)&"-"&right(100+month(temp_date),2)&"-"&right(100+day(temp_date),2) & " " &right(100+hour(temp_date),2)&":"&right(100+minute(temp_date),2)&":"&right(100+second(temp_date),2) 
end function

'生成urlencode的時間綴'
function timestamp2(temp_date)
timestamp2=year(temp_date)&"-"&right(100+month(temp_date),2)&"-"&right(100+day(temp_date),2) & server.urlencode(" " &right(100+hour(temp_date),2)&":"&right(100+minute(temp_date),2)&":"&right(100+second(temp_date),2) )
end function

''
' 除去數組中的空值和簽名參數
' param sPara 簽名參數組
' return 去掉空值與簽名參數后的新簽名參數組
Function FilterPara(sPara)
Dim sParaFilter(),nCount,j
nCount = ubound(sPara)
j = 0
For i = 0 To nCount
'把sPara的數組里的元素格式:變量名=值,分割開來
'response.write sPara(i)
pos = Instr(sPara(i),"=")	'獲得=字符的位置
nLen = Len(sPara(i))	'獲得字符串長度
itemName = left(sPara(i),pos-1)	'獲得變量名
itemValue = right(sPara(i),nLen-pos)'獲得變量的值

If itemValue <> "" and isnull(itemValue) = false Then
Redim Preserve sParaFilter(j)
if itemName="sms_free_sign_name" or itemName="sms_param" or itemName ="timestamp" then
sParaFilter(j) = itemName &"=" & server.urlencode(itemValue)
'elseif itemName ="timestamp" then
'sParaFilter(j) = itemName &"=" &timestamp2(time_now)
else
sParaFilter(j) =sPara(i)
end if
j = j + 1
End If
Next

FilterPara = sParaFilter
End Function

%>

 

參考文章:https://api.alidayu.com/doc2/apiDetail.htm?spm=a3142.8063008.3.3.PEnD7Q&apiId=25450

http://open.taobao.com/docs/doc.htm?spm=a3142.7395905.4.16.Sv33ag&articleId=101617&docType=1&treeId=1

經測試可以發送,適合還在用asp的同學,官方沒有asp的sdk,終於搞搗出來分享給大家。主要參考官方api文檔,部分功能函數參考微博、QQ第三方oauth登陸asp源碼,如要轉載請注明出處。

附引用的md5文件下載 http://files.cnblogs.com/files/henshui/md5-2.zip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM