利用阿里大于接口发短信(Delphi版)

阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信、语音、流量直充、私密专线、店铺手机号等个性化服务。每条四毛五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到。官方文档提供了以下语言的 Demo

  • JAVA
  • .NET
  • PHP
  • Python
  • CURL
  • C/C++
  • NodeJS

唯独没有 Dephi,这不能怪马云,毕竟 Delphi 实在太小众了。

最近用 Delphi 写个 App,注册用户需要用到手机短信验证,于是找到的阿里大于,使用 Delphi 10.1 berlin 写了个简单的 Demo 并测试通过,现在交出代码:

 1 /// <author>全能地图(QQ:64445322)</author>
 2 /// <summary>
 3 /// 利用阿里大于接口发短信
 4 /// 阿里大于网址:http://www.alidayu.com
 5 /// 阿里大于短信接口文档:https://api.alidayu.com/doc2/apiDetail.htm?apiId=25450
 6 /// </summary>
 7 /// <param name="AppKey">TOP分配给应用的AppKey</param>
 8 /// <param name="AppSecret">AppSecret</param>
 9 /// <param name="ReceiveNumber">接收手机号码</param>
10 /// <param name="FreeSignName">短信签名,传入的短信签名必须是在阿里大于“管理中心-短信签名管理”中的可用签名</param>
11 /// <param name="TemplateCode">短信模板ID</param>
12 /// <param name="TemplateContent">短信模板变量,例如:{"code":"1234","product":"alidayu"}</param>
13 /// <param name="ResultMsg">下发结果消息</param>
14 /// <returns>是否成功,True = 成功 ,false = 失败</returns>
15 function SendSMS(const AppKey, AppSecret, ReceiveNumber, FreeSignName, TemplateCode, TemplateContent: string; var ResultMsg: string): Boolean;
16
17   // 签名算法:http://open.taobao.com/doc2/detail.htm?articleId=101617&docType=1&treeId=1
18   function MakeSign(const AParams: TStringList; const AppSecret: string): string;
19   var
20     I: Integer;
21     Data: string;
22   begin
23     // 参数排序
24     AParams.Sort;
25
26     // 参数拼接
27     Data := ‘‘;
28     for I := 0 to AParams.Count - 1 do
29       Data := Data + AParams[I].Replace(‘=‘, ‘‘);
30
31     // HMAC 算法
32     Result := THashMD5.GetHMAC(Data, AppSecret).ToUpper;
33   end;
34
35 var
36   HTTP: TNetHTTPClient;
37   JO: TJSONObject;
38   Params: TStringList;
39   Response: string;
40 begin
41   Result := False;
42
43   HTTP := TNetHTTPClient.Create(nil);
44   Params := TStringList.Create();
45   try
46     Params.Values[‘app_key‘] := AppKey;
47     Params.Values[‘format‘] := ‘json‘;
48     Params.Values[‘method‘] := ‘alibaba.aliqin.fc.sms.num.send‘;
49     Params.Values[‘sign_method‘] := ‘hmac‘;
50     Params.Values[‘timestamp‘] := FormatDateTime(‘yyyy-MM-dd HH:mm:ss‘, Now);
51     Params.Values[‘v‘] := ‘2.0‘;
52     Params.Values[‘sms_type‘] := ‘normal‘;
53     Params.Values[‘sms_free_sign_name‘] := FreeSignName;
54     Params.Values[‘rec_num‘] := ReceiveNumber;
55     Params.Values[‘sms_template_code‘] := TemplateCode;
56     Params.Values[‘sms_param‘] := TemplateContent;
57     Params.Values[‘sign‘] := MakeSign(Params, AppSecret);
58
59     HTTP.ContentType := ‘application/x-www-form-urlencoded‘;
60     try
61       Response := HTTP.Post(‘https://eco.taobao.com/router/rest‘, Params).ContentAsString(TEncoding.UTF8);
62     except
63       on E: Exception do
64       begin
65         ResultMsg := E.Message;
66         Exit;
67       end;
68     end;
69
70     JO := TJSONObject.ParseJSONValue(Response) as TJSONObject;
71     try
72       if JO <> nil then
73       begin
74         if JO.TryGetValue<string>(‘alibaba_aliqin_fc_sms_num_send_response.result.success‘, ResultMsg) then
75           Result := ResultMsg.ToUpper = ‘TRUE‘
76         else if JO.TryGetValue<string>(‘error_response.msg‘, ResultMsg) then
77           Result := False;
78       end;
79
80     finally
81       JO.Free;
82     end;
83
84   finally
85     HTTP.Free;
86     Params.Free;
87   end;
88
89 end;
时间: 2024-10-15 04:21:16

利用阿里大于接口发短信(Delphi版)的相关文章

python 调用接口发短信

调用接口发送短信 此处接口是移动云nas """ Create_of_date:2020-03-08 Author:nod description: 调用移动云mas接口 exchange_date author exchange """ from flask import request, Flask, jsonify import hashlib import base64 import json import requests url='h

android 中调用接口发送短信

android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: Java代码   //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessage(content); for (String text : divideContents) { smsManager.sendTextMessage(&

发短信接口

发短信接口 1 import java.io.IOException; 2 import java.io.InputStream; 3 import java.io.OutputStream; 4 import java.net.HttpURLConnection; 5 import java.net.MalformedURLException; 6 import java.net.URL; 7 import java.security.MessageDigest; 8 import java.

ios打电话发短信接口

电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10010"]];//打电话 使用openURL这个API打电话结束后,返回的是系统的拨打电话界面,如何才能返回自己的应用呢?有两种方法与大家分享. 第一种是用UIWebView加载电话,这种是合法的,可以上A

利用手机中存储的电话号码给联系人打电话与发短信

1.将存储在数据库中的数据布局到手机界面上,其操作请见http://blog.csdn.net/xia09222826/article/details/28660653 2.三种效果显示出的效果分别是: 1)自定义的效果 2)单选的效果 3)多选的效果 3.点击某一个联系人进行拨打电话或者发送短信(以自定义的效果为例) 1)效果视图(比如点击了序号1的联系人):从手机电话备份界面跳转到PhoneandemailActitvity界面 2)程序实现 ①注册点击事件         lv_users

iOS开发之调用系统打电话发短信接口以及程序内发短信

在本篇博客开头呢,先说一下写本篇的博客的原因吧.目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是就百度了一下,发现也有关于这方面的博客,点进去看了看,个人感到有点小失望,写的太不详细,只是简单的代码罗列,而且代码也没注释,大概是因为太简单了吧.今天在做完项目的发短信功能后感觉有必要把这部分内容整理一下,做个纪念也是好的不是吗.废话少说,切入今天的正题.下面的发短信,打电话当然需要真机测试了. 一.调用系统功能 在iOS中打开系统本身的打

linux下利用GPRS模块发短信、打电话

一.开发环境 内核版本:linux-3.0    开发板:FL2440(nandflash:K9F1G08 128M)    GPRS模块:SIM900 二.与发短信和拨号相关的 AT 指令 AT+CMGC   Send an SMS command(发出一条短消息命令) AT+CMGD   Delete SMS message(删除 SIM 卡内存的短消息) AT+CMGF   Select SMS message formate (选择短消息信息收发格式: 0-PDU;1-文本) AT+CM

Java通过SMS短信平台实现发短信功能

在项目中使用过发短信的功能,但那个由于公司内部的限制很麻烦,今天在网上找到一个简单的,闲来无事就把它记录如下: 本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信,3条免费彩信,这足够用于我们测试用了.在使用前需要注册,注册地址为http://sms.webchinese.cn/reg.shtml),下面是程序源码: /** * @Author dengsilinming * @Date 2012-9-18 * */ package com.dengsili

阿里云批量发送短信功能测试

package com.yongjie.ZhiJianSbpt.sms; import java.text.SimpleDateFormat; import java.util.Date; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest; import com.aliy