注册 登录
编程论坛 VFP论坛

关于短信平台的问题

fanjinyu9108 发布于 2025-05-24 10:26, 679 次点击
用vfp通过短信平台发送短信的问题:
短信平台的使用说明如下:https://www.
我的代码如下,但是没有成功,请帮我分析下:
程序代码:

   

PUBLIC ai,yy_fs_xinxi
ai=0
ON ERROR ai=1

cUrl="https://api./sms/trade/normal/send"
mytime=datetime()-datetime(1970,1,1,0,0,0)
mytime2=ALLTRIM(STR(mytime))  &&时间戳
test='AppId=10011649990910483&MchId=1002456&SignName=【枝江油库】&SignType=MD5&Timestamp='+mytime2+'&Type=1&Version=1.2.0&key=68d841cb24c011f0bd9200163e26'

LCFILE=SYS(1271,THISFORM)

Set Library To JUSTPATH(LCFILE)+"\ku\myFll"  
test2=MD5String(STRCONV(test,9))
Set Library To


TEXT TO cData TEXTMERGE NOSHOW PRETEXT 7
{
      "Type":"1",
      "PhoneNumberSet":["17307215713","17307219175"],
      "AppId":"10011649990910483",
      "ExtendCode":"",
      "Version":"1.2.0",
      "MchId":"1002456",
       "Signature":"<<test2>>",
       "SessionContext":"nihao",
      "SignType":"MD5",
      "Timestamp":"<<mytime2>>",
      "SignName":"【枝江油库】"
     
  }
ENDTEXT
yy_fs_xinxi=SendData(cUrl, cData)

RETURN ai
IF ai=1
   =MESSAGEBOX("发送失败,网络没有连接")
  RETURN
ELSE
   =MESSAGEBOX("短信已经成功发送")
endif  
thisform.refresh

RETURN   


15 回复
#2
sam_jiang2025-05-24 10:46
有没有错误提示?这个api提供商是怎么收费的?

有错误提示才好判断哪里出错,或者联系api供应商,寻求帮助
#3
fanjinyu91082025-05-24 11:07
帮我看下时间戳的生成正确吗?还有SendData这个函数论坛告诉我的,但是VFP好像没有这个函数



[此贴子已经被作者于2025-5-24 11:09编辑过]

#4
sam_jiang2025-05-24 11:26
回复 3楼 fanjinyu9108
这个程序只能你运行,我们应该运行不了的。

senddata和md5string应该是myfll.fll里的函数,你的那句Set Library To 是不是发出早了,应该在完成程序功能后发出。
#5
fanjinyu91082025-05-24 11:32
好,先解决时间戳的问题,但时间是2023-05-23 20:10:17的时候,短信平台计算出来的时间戳是1748002217000,但是我用先发的程序计算出来的结果是1748031017,是不是计算方法有问题,下面是我的代码:
time1=CTOT("2025-05-23 20:10:17")
mytime=time1-datetime(1970,1,1,0,0,0)
mytime2=ALLTRIM(STR(mytime))  &&时间戳
#6
sam_jiang2025-05-24 11:45
回复 5楼 fanjinyu9108
应该是时区不对,vfp环境选项里看看是不是美国的时区?
程序代码:

* utctime.prg
PARAMETERS lttime
IF PARAMETERS()=0
    lttime=DATETIME()
ENDIF
RETURN     lttime-{^1970-01-01 00:00:00 }-8*3600



[此贴子已经被作者于2025-5-24 12:04编辑过]

#7
fanjinyu91082025-05-24 13:40
实在抱歉,关于带参数的程序,我还不知道怎么调用,比如表单按钮的CLICK事件,怎么调用?utctime(datetime()),是这样吗?
#8
sam_jiang2025-05-24 13:53
回复 7楼 fanjinyu9108
这程序就是一个函数而已,返回一个指定时间的utc值。

用法:
para=datetime()
ntime=utctime(para)
?ntime &&返回值

ntime可以在同一段程序中任何你想用的地方
#9
fanjinyu91082025-05-24 15:41
sam_jiang师傅,您好,?ntime返回值是一个10位数字,但是短信平台返回的是13位数字,能不能就计算time1=CTOT("2025-05-23 20:10:17")的时间戳,看看是否和短信平台网站的计算结果一致,还有,您说的vfp环境选项在哪里设置啊?
#10
fanjinyu91082025-05-24 15:48
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#11
fanjinyu91082025-05-24 15:51
计算结果是对的,就是多了三个零
#12
fanjinyu91082025-05-24 16:14
如果时间戳是一个固定值,加密计算出来的Signature是不是也是一个固定值?
#13
sam_jiang2025-05-24 16:39
我提供的函数返回的是秒数,你的是毫秒,其实是一样的,你按api的要求转化成毫秒好了。

时区设置是系统的,我记错了,不是vfp的。
只有本站会员才能查看附件,请 登录
#14
sam_jiang2025-05-24 17:55
我查看了你的说明档,有个在线调试,https://www.,你可以把你数据填写进去,调试看看。
#15
hsfisher2025-05-26 10:00
学习
#16
fanjinyu91082025-05-26 20:39
非常感谢,这个问题目前不是蛮紧要的,我先弄别的
1