注册 登录
编程论坛 ASP技术论坛

(已解决by-lele2007)大题一:利用飞信API接口实现新订单免费提醒

jiazehua 发布于 2010-08-15 23:07, 2647 次点击
[local]1[/local]
酒店预订网站,ASP语言的
飞信的接口是:http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容
只要触发这个链接就能发送短信通知到我
如图所示,想让点击预订按钮的时候,自动触动这个链接,并且不影响正常的页面跳转
不知道代码该加在哪里,该怎么写
希望各位高手能帮帮忙
预订页面的部分代码如下:

程序代码:
<%
Dim Action
    Action
=Request("action")
If Request.ServerVariables("REQUEST_METHOD") = "POST" and Action="add" Then
    HotelID
=Request("HotelID")
    RoomID
=Request("RoomID")
    RoomName
=Request("RoomName")
    Price
=Request("Price")
   
   
if Session("UserName")<>"" then
        UserName
=Session("UserName")
   
else
        UserName
="未注册用户"
   
end if
   
    Session(
"OrderNo")=""
    OrderNo
=replace(now(),"-","")
    OrderNo
=replace(OrderNo,":","")
    OrderNo
=replace(OrderNo," ","")
    Session(
"OrderNo")=OrderNo
   
    PersonNum
=Request("sel1")
    RoomNum
=Request("sel2")
    ConfirmType
=Request("sel3")
    RoomSave
=Request("sel4")
    Start_Time
=Request("Start_Time")
    End_Time
=Request("End_Time")
    GuestName
=left(Trim(Request("GuestName")),100)
    ContactName
=left(Trim(Request("ContactName")),50)
    Mobile
=left(Trim(Request("Mobile")),50)
    Telephone
=left(Trim(Request("Telephone")),50)
    Fax
=left(Trim(Request("Fax")),50)
    Email
=left(Trim(Request("Email")),150)
    City
=left(Trim(Request("City")),50)
    OtherContent
=left(Trim(Request("OtherContent")),120)

   
set rs=server.CreateObject("adodb.recordset")
        sql
="select * from DB_Order"
        rs.open sql,conn,
1,3
        rs.addnew()
        rs(
"OrderNo")=OrderNo
        rs(
"UserName")=UserName
        rs(
"Hotel_ID")=HotelID
        rs(
"Room_ID")=RoomID
        rs(
"RoomName")=RoomName
        rs(
"RoomPrice")=Price
        rs(
"PersonNum")=PersonNum
        rs(
"RoomNum")=RoomNum
        rs(
"ConfirmType")=ConfirmType
        rs(
"RoomSave")=RoomSave
        rs(
"Start_time")=Start_time
        rs(
"End_time")=End_time
        rs(
"GuestName")=GuestName
        rs(
"ContactName")=ContactName
        rs(
"Mobile")=Mobile
        rs(
"Telephone")=Telephone
        rs(
"Fax")=Fax
        rs(
"Email")=Email
        rs(
"City")=City
        rs(
"OtherContent")=OtherContent
        rs(
"Score")=int((Price/10))+10
        rs.update()
        rs.close
        
set rs=nothing
        response.Write(
"<script>alert('恭喜您,预订酒店成功,请记录您的订单号\n订单号:"&OrderNo&"\n请确保您预订时的联系人和联系电话准确\n以确保顺利进行订单查询.');location.href='javascript:copyToClipBoard()';</script>")
        response.End()

end if

conn.close
set conn=nothing
%>
-----------------------------
-----------------------------
-----------------------------
-----------------------------
-----------------------------
问题已经解决!是lele2007帮我解决的!
最终的短信发送部分代码是:
程序代码:
response.Write("<script>alert('恭喜您,预订酒店成功,请记录您的订单号\n订单号:"&OrderNo&"\n请确保您预订时的联系人和联系电话准确\n以确保顺利进行订单查询.');location.href='javascript:copyToClipBoard()';</script>")
        '开始发送飞信短信
'
-----------------------------------------我是谁?我是分割线----------------------------------------
concent=""&OrderNo
concent=concent&"hotelname:"&HotelID
concent=concent&"roomname:"&RoomName
concent=concent&"price:"&Price
concent=concent&"contactname:"&ContactName
concent=concent&"mobile:"&Mobile
dim xmlhttp,url
url="http://sms.api.bz/fetion.php?username=15XXXXXXX&password=XXXX&sendto=150XXXXXX&message="&concent&""
set xmlhttp = server.CreateObject("MSxml2.XMLHTTP")
xmlhttp.open "get",url,false
xmlhttp.send()
set xmlhttp = nothing

        response.End()
end if
conn.close
set conn=nothing
%>




[ 本帖最后由 jiazehua 于 2010-8-17 16:01 编辑 ]
30 回复
#2
hams2010-08-16 08:31
很不安全吧
#3
gupiao1752010-08-16 09:35
请问这个是怎么通知你的?
http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容
既然这个可以触发,那么你可以试着把这个加到FORM里的ACTION里
<form action="http://sms.api.bz/fetion.php" method="get">
号码:<input type="text" name="username">
...
内容: <input type="text" name="message">
</form>
不知道这样是否可以!不管是否可行,继续关注!
#4
jiazehua2010-08-16 21:48
回复 2楼 hams
那有什么好办法解决么……
#5
jiazehua2010-08-16 21:50
回复 3楼 gupiao175
http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容
这个是飞信公开的API,我略懂,所以我只知道可以当成一个链接就可以用
把号码换成手机号码,密码换成飞信密码,第三个号码换成要发到的手机上,必须开通飞信服务的,然后内容就是发过去的内容。
你说的我得研究一下,因为我确实很小白,发了好多贴,就您帮我忙了,不管好用不好用,我都要非常感谢您!!!
我测试后会给您结果的,不懂得地方还是要继续跟您请教
#6
wangjy5002010-08-16 21:54
提交后在
 response.Write("<script>alert('恭喜您,预订酒店成功,请记录您的订单号\n订单号:"&OrderNo&"\n请确保您预订时的联系人和联系电话准确\n以确保顺利进行订单查询.');location.href='javascript:copyToClipBoard()';</script>")
下面加上一行:response.redirect "http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容"
不就搞定了。
#7
jiazehua2010-08-16 21:59
回复 3楼 gupiao175
应该是您想的复杂了~号码等内容都是固定的!~就是我的手机号和密码,我只是在这里不方便透露出我的个人信息就用的汉字代替的~呵呵
我就是不知道该把这个添加到什么位置
才可以在点击预订的时候触发这个链接~
并且要添加的代码也不知道怎么写……
麻烦您再帮我看一下吧~
#8
jiazehua2010-08-16 22:01
回复 6楼 wangjy500
啊~~~我就是这个意思~
我是小白,所以这个代码不会写~
非常感谢你!!我马上测试!!!太帅了,兴奋测试中
#9
jiazehua2010-08-16 22:05
回复 6楼 wangjy500
测试好用!首先再次表示我的激动和感谢!
第二,问题出现了。
原有的成功预订后出现的页面不出现了
代替出现的是短信发送成功的页面
这个怎么解决呢
做个跳转还是……?
---------------------------------
之前单纯的只是测试用链接发短信的时候
也有这个问题,发短信倒是可以正常接收,但是每次发完都会出现一个发送成功的页面
不知道怎么让它不出现
#10
jiazehua2010-08-16 22:07
回复 6楼 wangjy500
或者可不可以让它新页面弹出?或者窗口提示弹出?最好是禁止它自动提示……
但是我这个就没什么思路了……您看,您能不能帮我想想办法
#11
wangjy5002010-08-16 22:25
Response.Write   " <script language=javascript> "
Response.Write   "window.open('http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容', '_blank '); "
Response.Write   " </script> "

那段代码改成这样试试!


[ 本帖最后由 wangjy500 于 2010-8-16 23:05 编辑 ]
#12
jiazehua2010-08-16 22:48
回复 11楼 wangjy500
测试没好用……
可能是因为空格什么的在这里就变样子了
您能发附件么?如果可以的话就麻烦了……
#13
jiazehua2010-08-16 22:51
回复 11楼 wangjy500
或者是不是少括号什么的问题……
#14
wangjy5002010-08-16 22:56
不好意思打错字了!
Response.Write   " <script> "
Response.Write   "window.open('http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容', '_blank '); "
Response.Write   " </script> "
#15
jiazehua2010-08-16 23:03
回复 14楼 wangjy500
额……测试还是没有好用
不过真的非常非常感谢您了
已经让我看到了很大的希望了!
我身体不舒服先休息了
祝您节日愉快
明天一定要摆平这个问题!~
再次感谢
#16
wangjy5002010-08-16 23:13
Response.Write   " <script> "
Response.Write   "window.open('http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容'); "
Response.Write   " </script> "
这样吧。不行也没辙了!
#17
gupiao1752010-08-16 23:37
以下是引用jiazehua在2010-8-16 22:07:38的发言:

或者可不可以让它新页面弹出?或者窗口提示弹出?最好是禁止它自动提示……
但是我这个就没什么思路了……您看,您能不能帮我想想办法


如果用弹新窗口的方法也一样会让用户导向这个页面http://sms.api.bz/fetion.php,感觉地址栏都得改变·

要让用户豪无感觉!必须借住无刷新的AJAX,在后台进行提交,前台却无任何反映,数据提交出去后返回一个状态,显示提交成功,用户根本无法察觉是哪个页面提交的!
#18
gupiao1752010-08-16 23:42
response.transfer "http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容"
不然用这个试试!发完了还会返回原页面,而不是跳转!
#19
lele20072010-08-16 23:47
'飞信短信发送函数
'--------------------------------------------------------
sub Fetion(Mobile,MobilePassword,MobileMessage)
 dim xmlhttp,url
 url="http://sms.api.bz/fetion.php?username="&Mobile&"&password="&MobilePassword&"&sendto="&Mobile&"&message="&MobileMessage
 set xmlhttp = server.CreateObject("MSxml2.XMLHTTP")
 xmlhttp.open "get",url,false
 xmlhttp.send()
 set xmlhttp = nothing
end sub



'飞信API接口,短信免费发送参数配置
'---------------------------------------------
dim Mobile,MobilePassword,YesOrNo
YesOrNo = 1                               '是否启用短信功能,1为启用,0为禁用!
Mobile = "手机号码"                    '手机号码
MobilePassword = "飞信密码"         '飞信登录密码,明文的,没有加密处理的哟...
dim sendContent

sendContent = "提示信息"
if YesOrNo = 1 then call Fetion(Mobile,MobilePassword,sendContent)    '调用飞信发送短信  
#20
lele20072010-08-16 23:49
发一个我正在使用的。。

sendContent = "提示信息"
if YesOrNo = 1 then call Fetion(Mobile,MobilePassword,sendContent)    '调用飞信发送短信   

在需要的地方调用。。无需跳转。

不过这个接口最近好像不能用了。。飞信的加密码方式改变了。。好像会登录失败。。
要是接口没问题了,借助ajax实现。。在提示成功的同时远程执行了发送短信。。不会有弹出新窗口,执行完再关闭的麻烦。。提高体验。。

[ 本帖最后由 lele2007 于 2010-8-16 23:59 编辑 ]
#21
lele20072010-08-17 00:06
方法好像挺多喔。。
执行成功前。或后。
response.write "<iframe src='http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容' style='display:none;'></iframe>"
response.write "你的订单提交成功"

这样做估计也是可行的。。不过还是建议你用上面的方法。。比较方便
#22
jiazehua2010-08-17 08:15
回复 20楼 lele2007
调用就是把代码放在
response.Write("<script>alert('恭喜您,预订酒店成功,请记录您的订单号\n订单号:"&OrderNo&"\n请确保您预订时的联系人和联系电话准确\n以确保顺利进行订单查询.');location.href='javascript:copyToClipBoard()';</script>")

这段的后面是吧?

那您第一段说的那些函数要放在哪里呢?

还有,您是说飞信这招儿不好用了?失效了?
#23
jiazehua2010-08-17 08:24
回复 21楼 lele2007
执行成功前。或后。
response.write "<iframe src='http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容' style='display:none;'></iframe>"
这个方法测试通过了!~绝了~
请问安全性或者实用性上会有什么负面的效果么?

非常感谢!!!
#24
jiazehua2010-08-17 08:24
回复 14楼 wangjy500
谢谢了!问题已经解决了!
执行成功前
response.write "<iframe src='http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容' style='display:none;'></iframe>"
response.write "你的订单提交成功"

#25
jiazehua2010-08-17 08:25
回复 17楼 gupiao175
谢谢了!问题已经解决了!
执行成功前

response.write "<iframe src='http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容' style='display:none;'></iframe>"
response.write "你的订单提交成功"
#26
jiazehua2010-08-17 10:23
回复 21楼 lele2007
还有个问题啊……发到另一个帖子了
麻烦再帮我看看吧~
飞信API问题续-扩充发送的短信内容-类似于:订单号"&OrderNo&"

https://bbs.bccn.net/thread-315926-1-1.html

#27
lele20072010-08-17 10:52
以下是引用jiazehua在2010-8-17 08:24:19的发言:

执行成功前。或后。
response.write ""这个方法测试通过了!~绝了~
请问安全性或者实用性上会有什么负面的效果么?

非常感谢!!!
这个只是实现你需要的功能。。通过框架加载飞信API地址发短信。。

response.write  会输出信息到客户端浏览器。。意味着。。别人执行你的程序成功后。。如果当时别人查看源代码。。你的飞信手机号及密码就会被泄露。。

这个也是我建议你使用上面的方法的理由了。。呵呵
使用 ajax  远程执行。。就不多存在安全问题了。。

函数直接调用就可以了。。


或者你直接用下面的方法:


执行成功后

response.write "成功"

'开始发送飞信短信
'-----------------------------------------我是谁?我是分割线----------------------------------------
dim xmlhttp,url
url="http://sms.api.bz/fetion.php?username=号码&password=密码&sendto=号码&message=内容"
set xmlhttp = server.CreateObject("MSxml2.XMLHTTP")
xmlhttp.open "get",url,false
xmlhttp.send()
set xmlhttp = nothing

这个应该没有客户端的负作用。
#28
jiazehua2010-08-17 11:51
回复 27楼 lele2007
啊……我已经高兴了一上午了
哈哈
那我重新研究一下您说的
谢谢谢谢!
#29
jiazehua2010-08-17 11:57
回复 27楼 lele2007
你才20岁,就这么牛了啊
又好用了!非常感谢!并且不提示那个链接了!
#30
lele20072010-08-17 13:42
以下是引用jiazehua在2010-8-17 11:57:37的发言:

你才20岁,就这么牛了啊
又好用了!非常感谢!并且不提示那个链接了!
不是。。个人网站挺久没 Update 了喔。。
现在运行了。。21岁有余22岁不足。。

不牛的,那是经验吧。。

论坛里的版主和偶尔有空会来看看解决问题的才是真的牛
#31
jiazehua2010-08-17 14:53
回复 30楼 lele2007
啊……那你真是好几年没更新了
哈哈
那也比我小啊
我24
我又带问题来了
刚才用了个调用发送短信内容的语法
程序代码:
concent=concent&"酒店:"&HotelName
concent=concent&"|房型:"&RoomName
concent=concent&"×"&RoomNum
concent=concent&"|价格:"&Price
concent=concent&"|客人:"&ContactName
concent=concent&"|手机:"&Mobile
concent=concent&"|到:"&Start_time
concent=concent&"|离:"&End_time


但是测试都通过,就是酒店名称HotelName不读取
是不是跟这段代码有关?
要怎么修改能不影响使用的情况下,读取HotelName
程序代码:
set rs=conn.execute("select HotelName,EnHotelName,FileName,[Position],Star from DB_Hotel where Is_Show=True and ID="&HotelID&"")
    if rs.bof and rs.eof then
        HotelName=""
        EnHotelName=""
        FileName=""
        Position=""


1