API 文档

国际短信API

PaaSoo国际云通讯平台的REST API可以通过HTTPS及HTTP方式请求。为了保证数据的隐私安全,我们强烈建议您使用HTTPS方式请求

调用方式

HTTP GET 请求

请求地址
https://api.paasoo.cn/json

请求示例
https://api.paasoo.cn/json?key=API_KEY&secret=API_SECRET&from=PaaSoo&to=8615884401340&text=Hello+world

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管。 Abcdefgh
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管。 Abc123EFG123
from string 部分国家支持自定义发件人,也称之为Sender id.字母或数字的字符串,最多11个字符。 PAASOOSMS
to string 发送目标号码,格式为国家区号和手机号码 如中国号码为18812345678,国家区号为86,发送的格式则为:8618812345678
text string 发送内容,需通过URLEncode方式进行UTF-8编码转换。如需简单测试可通过 http://www.url-encode-decode.com/ 进行文本编码转换。 This is test sms from PaaSoo。

响应参数说明

响应示例

成功 : {"status":"0","messageid":"015bd4-d6dfa7-58w"}
失败 : {"status_code":"Missing params.","status":"2"}

参数 描述 示例
messageid 消息ID,每条短信记录的唯一标识。 015bd4-d6dfa7-58w
status 响应状态。提交至PaaSoo云通讯平台的响应状态码。 0 - success:成功
2 - Missing params:缺少必要参数
4 - Invalid credentials:Key或Secret错误
5 - Unauthorized IP:IP限制
6 - Invalid phone number:号码格式错误
7 - Invalid sender id:from参数格式错误
8 - Message bombing detected: 3秒内重复请求
9 - Quota exceeded:欠费或信用额度不足
10 - Throttling error:超过限速
11 - System error
status_code 失败原因描述 Missing params

国际彩信API

现在我们可以支持MMS的地区包括:香港、澳门,台湾、韩国。
如果您需要开通MMS功能或者有其它地区MMS的需求,请及时联系联系您的客户经理或将您的需求发送至support@paasoo.com。
彩信内容API

调用方式

POST

请求地址
https://api.paasoo.cn/mms

HTTP 头部信息
Content-Type: application/x-www-form-urlencoded

请求示例

curl -X POST "https://api.paasoo.cn/mms" \

-H "Content-Type: application/x-www-form-urlencoded" \

-d "key=xxxx&secret=xxxx&from=xxxxx&to=xxxxx&subject=text&attachment=https://s3.paasoo.com/images/mms/20200528024521693_e82ec2f717c448b794e52f3603249abe_68508.jpg&text=This is test from PaaSoo"

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管。 Abcdefg
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管。 Adfaafada
from string 部分国家支持自定义发件人,也称之为Sender id.字母或数字的字符串,最多11个字符。 TEST
to string 发送目标号码,格式为国家区号和手机号码。 8618251111111
text string 彩信内容。 This is test mms from PaaSoo.
subject string 彩信主题,20个字符以内(具体根据通道限制) 彩信主题
attachment string 图片地址(需要使用上传到我们自己服务器的图片地址),大小限制300KB。 https://files.paasoo.com/images/mms/20200528024521693_e82ec2f717c448b794e52f3603249abe_68508.jpg

响应参数说明

响应示例

成功 : {"status":"0","messageid":"015bd4-d6dfa7-58w"}
失败 : {"status_code":"Missing params.","status":"2"}

参数 描述 示例
messageid 消息ID,每条短信记录的唯一标识。 015bd4-d6dfa7-58w
status 响应状态。提交至PaaSoo云通讯平台的响应状态码。 0 - success:成功
2 - Missing params:缺少必要参数
4 - Invalid credentials:Key或Secret错误
5 - Unauthorized IP:IP限制
6 - Invalid phone number:号码格式错误
7 - Invalid sender id:from参数格式错误
8 - Message bombing detected: 3秒内重复请求
9 - Quota exceeded:欠费或信用额度不足
10 - Throttling error:超过限速
11 - System error
13 - Invalid attachment file
18 -Invalid subject
status_code 失败原因描述 Missing params
图片上传API

使用这个API,您可以使用base64编码方案上传图片文件,并接收唯一的URL地址。

调用方式

POST

请求地址
https://api.paasoo.cn/image/upload

HTTP 头部信息
Content-Type: application/json

请求示例

curl -X POST "https://api.paasoo.cn/image/upload" \

-H "Content-Type: application/json" \

--data-raw '{"key": "xxx","secret": "xxx","content": "xxxx","format": "jpg"}'

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管。 Abcdefg
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管。 Adfaafada
content string 图片内容,base64编码(<300KB)
format string 图片类型: jpg 或 png jpg

响应参数说明

响应示例

成功 : {"status":0,"address":"https://123.jpg","type":"jpg","size":"1233"}
失败 : {"status_code":"Missing params.","status":"2"}

参数 描述 示例
status 响应状态。提交至PaaSoo云通讯平台的响应状态码。 0 - success:成功
2 - Missing params:缺少必要参数
3 - 图片大小超过限制
4 - Invalid credentials:Key或Secret错误
5 - Unauthorized IP:IP限制
6 - Wrong Image format:图片类型错误
11 - System error
13 - Invalid attachment file
status_code 失败原因描述 Missing params
address 图片地址
format 图片类型
size 图片大小
图片删除API

使用这个API,您可以删除以前上传到PaaSoo平台的图片文件。

请求地址
https://api.paasoo.cn/image/delete

请求示例
https://api.paasoo.cn/image/delete?key=API_KEY&secret=API_SECRET&addresss=IMAGE_URL

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管。 Abcdefg
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管。 Adfaafada
address string 图片地址,需要urlEncoder

响应参数说明

响应示例

成功 : {"status":0,"status_code":"success"}
失败 : {"status_code":"Missing params.","status":"2"}

参数 描述 示例
status 响应状态。提交至PaaSoo云通讯平台的响应状态码。 0 - success:成功
2 - Missing params:缺少必要参数
4 - Invalid credentials:Key或Secret错误
5 - Unauthorized IP:IP限制
11 - System error
status_code 失败原因描述 Missing params

全球语音验证API

语音服务需要联系客服或是您的账户经理为您定制开通

调用方式

HTTP GET 请求


请求地址
https://api.paasoo.cn/voice

请求示例
https://api.paasoo.cn/voice?key=API_KEY&secret=API_SECRET&from=85299998888&to=8615884401340&lang=zh-cn&text=Hello+world&repeat=1

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管。 Abcdefgh
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管。 Abc123EFG123
from string 主叫号码,如需自定义请联系技术支持或者您的客户经理。 85299998888
to string 发送目标号码,格式为国家区号和手机号码 如中国号码为18812345678,国家区号为86,发送的格式则为:8618812345678
lang string 接收方接收语音消息的语言 nl-nl, de-de, en-gb, en-us, es-es, fr-fr, ru-ru, zh-cn, en-au, es-mx, es-us, fr-ca, is-is, it-it, ja-jp, ko-kr, pl-pl, pt-br, ro-ro
text string 发送内容,需通过URLEncode方式进行UTF-8编码转换。如需简单测试可通过 http://www.url-encode-decode.com/ 进行文本编码转换。 Your code 1,2,3,4,5
repeat string 消息重复播报,默认一次。 1

响应参数说明

响应示例

成功:{"status":"0","messageid":"4b7368321"}
失败:{"status_code":"Missing params.","status":"2"}

参数 描述
messageid 消息ID,用于对应查找消息的发送状态
status 状态码
0 - success:成功
2 - Missing params:缺少必要参数
4 - Invalid credentials:Key或Secret错误
5 - Unauthorized IP:IP限制
6 - Invalid phone number:号码格式错误
7 - Invalid sender id:from参数格式错误
8 - Message bombing detected: 3秒内重复请求
9 - Quota exceeded:欠费或信用额度不足
10 - Throttling error:超过限速
11 - System error
status_code 失败原因描述

语音内容参数说明

语音的内容可以设置其播报速度和停顿时间。
你可用','分隔符来表示短暂停顿;也可用';'标签来表示短暂停顿;你也可用;标签来改变部分消息内容的语速。
break标签拥有time属性,单位可以是秒(s)和毫秒(ms)。
prosody标签拥有rate属性,值为百分比数值,如:-10%25。
参数 属性 描述 示例
break time 可以根据您个人的需求设置间隔的秒数或是毫秒数。 设置间隔以一秒为:break time="1s"
prosody rate 可以设置语音播放速度的百分比。 例如语速慢10%,那就是-10%25。
以下是使用示例:
1.用','分割:
Hello,your login token is 1, 8, 3, 4, 0.
2.用break标签分割:
hello,your login token is <break time="1s"/>1<break time="500ms"/>8 <break time="500ms"/>3<break time="500ms"/>4<break time="500ms"/>0.
3.用prosody控制语速:
Your login token is <prosody rate="-10%25">1,8,3,4,0<prosody/>.

发送记录查询API

根据消息ID查询发送记录的状态报告

调用方式

HTTP GET 请求

请求地址
https://api.paasoo.cn/dlr

请求示例
https://api.paasoo.cn/dlr?key=API_KEY&secret=API_SECRET&messageid=MESSAGE_ID

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管。 Abcdefgh
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管。 Abc123EFG123
messageid string 需要查询的消息ID 015bd4-d6dfa7-58w

响应参数说明

响应示例(JSON数组格式)

[{ "type":"dlr",
"messageid":"015bd4-d6dfa7-58w",
"to":"8613527568886",
"status":0,
"drStatus":0,
"drStatuscode":"delivered",
"drErrcode":"0",
"price":0.03
"counts":1
"network":46000
}]

参数 描述
type 结果数据类型为DLR
messageid 需要查询的消息ID
to 发送目标的手机号码
status 发送状态码
0 - success:成功
2 - Missing params:缺少必要参数
4 - Invalid credentials:Key或Secret错误
5 - Unauthorized IP:IP限制
9 - Quota exceeded:欠费或信用额度不足
11 - System error
drStatus 状态报告状态值
0 - 正常状态
400 - 异常状态
drStatuscode 状态报告状态代码
delivered - 短信送达,对应状态值0
accepted - 运营商接收,对应状态值0
rejected - 运营商拒绝,对应状态值400
failed - 发送失败,对应状态值400
expired - 运营商超时,对应状态值400
deleted - 被运营商删除,未发送,对应状态值400
unknown - 未知类型错误,对应状态值400
drErrcode 状态报告异常状态错误代码
1 - Uknown-未知错误
2 - 消息无法送达(停机、关机、无信号等)
3 - 号码已停止使用或无效号码
4 - 用户拒收短信
5 - 信息被运营商拒绝
6 - 运营商超时
7 - 被运营商删除,未发送
99 - 其他运营商错误(可咨询客服进一步查询了解具体原因)
network 发送号码运营商网络
price 单条计费价格
counts 计费条数

状态报告接收

平台推送状态报告信息到用户指定的回调地址上

回调方式

HTTP GET 请求

回调地址
用户提供回调的接收地址

回调示例
http://USER_CALLBACK_URL?type=dlr&messageid=MESSAGE_ID&to=6588888888&status=0&statuscode=delivered&errcode=1&network=52099

参数说明

参数 描述
type 回调消息类型,状态报告为dlr
messageid 消息ID
to 发送目标的手机号码
status 状态报告状态值
0 - 正常状态
400 - 异常状态
statuscode 状态报告状态代码
delivered - 短信送达,对应状态值0
accepted - 运营商接收,对应状态值0
rejected - 运营商拒绝,对应状态值400
failed - 发送失败,对应状态值400
expired - 运营商超时,对应状态值400
deleted - 被运营商删除,未发送,对应状态值400
unknown - 未知类型错误,对应状态值400
errcode 状态报告异常状态错误代码
1 - Uknown-未知错误
2 - 消息无法送达(停机、关机、无信号等)
3 - 号码已停止使用或无效号码
4 - 用户拒收短信
5 - 信息被运营商拒绝
6 - 运营商超时
7 - 被运营商删除,未发送
99 - 其他运营商错误(可咨询客服进一步查询了解具体原因)
network 发送号码运营商网络
price 单价计费价格
counts 计费条数

账号余额查询API

查询API帐号所属用户的账户余额

调用方式

HTTP GET 请求

请求地址
https://api.paasoo.cn/balance

请求示例
https://api.paasoo.cn/balance?key=API_KEY&secret=API_SECRET

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管。 Abcdefgh
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管。 Abc123EFG123

响应参数说明

响应示例

{"balance":"9.77","currency":"EUR"}
参数 描述
balance 当前账户余额
currency 计费货币单位

全球号码格式验证API

查询全球号码有效性及所属运营商等相关信息

调用方式

HTTP GET 请求

请求地址
https://api.paasoo.cn/lookup

请求示例
https://api.paasoo.cn/lookup?key=API_KEY&secret=API_SECRET&number=8615900000000

请求参数说明

参数 类型 是否必填 描述 示例
key string API账号,用户唯一标识,可在客户端后台获取,妥善保管 Abcdefgh
secret string API密码,用户唯一密码,可在客户端后台获取,妥善保管 Abc123EFG123
number string 待验证码手机号国家或区域的国际区号和待验证手机号码 8615900000000

响应参数说明

响应示例
{
"requestId":"20008a-371837-e000",
"number":"8615900000000",
"format":1,
"errorCode":"00",
"cc":"86",
"countryIso":"CN",
"mccmnc":"46000",
"operator":"China Mobile"
}
参数 描述
requestId 消息ID
number 待验证手机号码
format 格式是否正确
0 - 无效号码
1 - 格式正确
errorCode 错误编码
00-调用成功
01-欠费
02-用户名或密码错误
03-号码不存在
04-未知错误
05-号码不能辨别
06-缺少参数
07-白名单限制
cc 待验证码手机号国家或区域的国际区号
countryIso 国家名称缩写(例如 CN)
mccmnc 待验证号码的运营商网络编码
operator 待验证号码的运营商网络名称
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 短信http接口的java代码调用示例
 * 基于Apache HttpClient 4.X
 */
public class JavaSmsApi {
    //编码格式。发送编码格式统一用UTF-8
    private static String ENCODING = "UTF-8";
    //短信发送url
    private static String URI_GET_SEND_SMS = "https://api.paasoo.cn/json";
    //发送记录查询url
    private static String URI_GET_SEND_RECORD = "https://api.paasoo.cn/dlr";
    //余额查询url
    private static String URI_GET_USER_BALANCE = "https://api.paasoo.cn/balance";
    //号码格式验证url
    private static String URI_GET_VALID_NUMBER = "https://api.paasoo.cn/lookup";

    public static void main(String[] args) throws Exception {
        //参数
        String key = "********";
        String secret = "********";
        String from = "********";
        String to = "********";
        String text = "********";;
        String messageid = "********";
	 	String countryCode = "********";
        String nationalNumber = "********";

        /**************** 查短信发送信息调用示例 *****************/
        System.out.println(JavaSmsApi.getSendSms(key, secret, from, to, text));

        /**************** 查发送记录信息调用示例 *****************/
        System.out.println(JavaSmsApi.getSendRecord(key, secret, messageid));

        /**************** 查余额信息调用示例 *****************/
        System.out.println(JavaSmsApi.getUserBalance(key, secret));

        /**************** 号码格式验证调用示例 *****************/
        System.out.println(JavaSmsApi.getValidNumber(key, secret, countryCode, nationalNumber));
    }

    /**
     *短信发送
     *
     * @param key    API帐号
     * @param secret API密码
     * @param from   SenderID
     * @param to     发送目标号码
     * @param text   发送内容
     * @return json  格式字符串
     * @throws Exception
     */

    public static String getSendSms(String key, String secret, String from, String to, String text) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        params.put("key", key);
        params.put("secret", secret);
        params.put("from", from);
        params.put("to", to);
        params.put("text", text);
        return get(URI_GET_SEND_SMS, params);
    }

    /**
     * 发送记录查询
     *
     * @param key       API帐号
     * @param secret    API密码
     * @param messageid 发送记录消息ID
     * @return
     * @throws Exception
     */
    public static String getSendRecord(String key, String secret, String messageid) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        params.put("key", key);
        params.put("secret", secret);
        params.put("messageid", messageid);
        return get(URI_GET_SEND_RECORD, params);
    }

    /**
     * 余额查询
     *
     * @param key    API帐号
     * @param secret API密码
     * @return
     * @throws Exception
     */
    public static String getUserBalance(String key, String secret) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        params.put("key", key);
        params.put("secret", secret);
        return get(URI_GET_USER_BALANCE, params);
    }

    /**
     *号码格式验证
     *
     * @param key            API帐号
     * @param secret         API密码
     * @param countryCode    待验证手机号码所在国家区号
     * @param nationalNumber 待验证的手机号码,不含国家区号
     * @return
     * @throws Exception
     */
    public static String getValidNumber(String key, String secret, String countryCode, String nationalNumber) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        params.put("key", key);
        params.put("secret", secret);
        params.put("countryCode", countryCode);
        params.put("nationalNumber", nationalNumber);
        return get(URI_GET_VALID_NUMBER, params);
    }


    /**
     * 基于HttpClient 4.X的通用GET方法
     *
     * @param url       提交的URL
     * @param paramsMap 提交<参数值>Map
     * @return          提交响应
     */
    public static String get(String url, Map<String, String> paramsMap) throws Exception {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        InputStream is = null;
        try {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            for (Map.Entry<String, String> param : paramsMap.entrySet()) {
                NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue());
                params.add(pair);
            }
            String str = EntityUtils.toString(new UrlEncodedFormEntity(params, ENCODING));
            HttpGet httpGet = new HttpGet(url + "?" + str);
            response = httpClient.execute(httpGet);
            HttpEntity entity = response.getEntity();
            String result = EntityUtils.toString(entity);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (response != null) {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (httpClient != null) {
                try {
                    httpClient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}
<?php
	header("Content-Type:text/html;charset=utf-8");

	$key = "xxxxxxxxxxx";
	$secret = "xxxxxxxxxxx";
	$from = "xxxxxxxxxxx";
	$to = "xxxxxxxxxxx";
	$text = "xxxxxxxxxxx";
	$messageid = "xxxxxxxxxxx";
	$nationalNumber = "xxxxxxxxxxx";
	$countryCode = "xxxxxxxxxxx";

	$curl = curl_init();

	/* 设置验证方式 */
	curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept:text/plain;charset=utf-8', 'Content-Type:application/x-www-form-urlencoded','charset=utf-8'));

	/* 设置返回结果为流 */
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	/* 设置超时时间 */
	curl_setopt($curl, CURLOPT_TIMEOUT, 10);

	/* 设置通信方式 */
	curl_setopt($curl, CURLOPT_GET, 1);
	curl_setopt($curl, CURLOPT_GETFIELDS);
	curl_setopt($curl, CURLOPT_HEADER, 0);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

	// 查短信发送信息调用示例
	$data = array('key'=>$key,'secret'=>$secret,'from'=>$from,'to'=>$to,'text'=>$text);
	$json_data = get_send_sms($curl,$data);
	$array = json_decode($json_data,true);
	echo '<pre>';print_r($array);

	// 查发送记录信息调用示例
	$data = array('key'=>$key,'secret'=>$secret,'messageid'=>$messageid);
	$json_data = get_send_record($curl,$data);
	$array = json_decode($json_data,true);
	echo '<pre>';print_r($array);

	// 查余额信息调用示例
	$data = array('key'=>$key,'secret'=>$secret);
	$json_data = get_user_balance($curl,$data);
	$array = json_decode($json_data,true);
	echo '<pre>';print_r($array);

	// 查余额信息调用示例
	$data = array('key'=>$key,'secret'=>$secret,'countryCode'=>$countryCode,'nationalNumber'=>$nationalNumber);
	$json_data = get_user_balance($curl,$data);
	$array = json_decode($json_data,true);
	echo '<pre>';print_r($array);

	curl_close($curl);
	/***************************************************************************************/

	// 查短信发送信息
	function get_send_sms($curl,$data){
    		curl_setopt($curl, CURLOPT_URL, 'http://api.paasoo.cn/json?’);
    		curl_setopt($curl, CURLOPT_GETFIELDS, http_build_query($data));
    		return curl_exec($ch);
	}

	// 查发送记录信息
	function get_send_record($curl,$data){
    		curl_setopt($curl, CURLOPT_URL, 'http://client.paasoo.cn/api/dlr?’);
    		curl_setopt($curl, CURLOPT_GETFIELDS, http_build_query($data));
    		return curl_exec($ch);
	}

	// 余额查询信息
	function get_user_balance($curl,$data){
    		curl_setopt($curl, CURLOPT_URL, 'http://client.paasoo.cn/api/balance?’);
    		curl_setopt($curl, CURLOPT_GETFIELDS, http_build_query($data));
    		return curl_exec($ch);
	}

	// 号码格式验证
	function get_user_balance($curl,$data){
    		curl_setopt($curl, CURLOPT_URL, 'http://client.paasoo.cn/api/validnumber?’);
    		curl_setopt($curl, CURLOPT_GETFIELDS, http_build_query($data));
    		return curl_exec($ch);
	}
?>
var http = require('http');
var qs = require('querystring');

// 参数
var key = "xxxxxxxxxxx";
var secret = "xxxxxxxxxxx";
var from = "xxxxxxxxxxx";
var to = "xxxxxxxxxxx";
var text = "xxxxxxxxxxx";
var messageid = "xxxxxxxxxxx";
var countryCode = "xxxxxxxxxxx";
var nationalNumber = "xxxxxxxxxxx";

var api_host = "api.paasoo.cn";
var client_host = "client.paasoo.cn";

// 短信发送url
var uri_get_send_sms = "/json";
// 发送记录查询url
var uri_get_send_sms_record = "/api/dlr";
// 余额查询url
var uri_get_user_balance = "/api/balance";
// 余额查询url
var uri_get_valid_number = "/api/validnumber";

// ****************************** 调用接口示例 ******************************************

// 短信发送调用示例
get_send_sms(uri_get_send_sms, key, secret, from, to, text);
// 发送记录查询调用示例
get_send_sms_record(uri_get_send_sms_record, key, secret, messageid);
// 余额查询调用示例
get_user_balance(uri_get_user_balance, key, secret);
// 号码格式验证调用示例
get_valid_number(uri_get_valid_number, key, secret, countryCode, nationalNumber);

// ****************************** 调用函数 *********************************************

function get_send_sms(uri, key, secret, from, to, text) {
    var get_data = {
    	'key': key,
	'secret': secret,
	'from': from,
	'to': to,
	'text': text,
    };
    var content = qs.stringify(get_data);
    get(uri,content,api_host);
}

function get_send_sms_record(uri, key, secret, messageid){
    var get_data = {
    	'key': key,
	'secret': secret,
	'messageid': messageid,
    };
    var content = qs.stringify(get_data);
    get(uri,content,client_host);
}

function get_user_balance(uri, key, secret){
    var get_data = {
    	'key': key,
	'secret': secret,
    };
    var content = qs.stringify(get_data);
    get(uri,content,client_host);
}

function get_valid_number(uri, key, secret, countryCode, nationalNumber){
    var get_data = {
    	'key': key,
	'secret': secret,
	'countryCode': countryCode,
	'nationalNumber': nationalNumber,
    };
    var content = qs.stringify(get_data);
    get(uri,content,client_host);
}

function get(uri,content,host){
    var options = {
        host: host,
        port: 80,
        path: uri,
        method: 'GET',
        headers: {
            'Content-Type': 'application/json'
        }
    };
    var req = http.request(options, function(res) {
               res.setEncoding('utf8');
		var resData = "";
               res.on("data",function(data){
                 resData += data;
               });
               res.on("end", function() {
                 callback(null,JSON.parse(resData));
               });
    });
}
//项目需要添加System.web引用
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace paasooSmsClient {
    class Program {
        static void Main(string[] args) {
            string key = "********";
            string secret = "********";
            string from = "********";
            string to = "********";
            string text = "********";;
            string messageid = "********";
	     string countryCode = "********";
            string nationalNumber = "********";

	    //短信发送url
      	     string uri_get_send_sms = "http://api.paasoo.cn/json";
    	    //发送记录查询url
            string uri_get_send_record = "http://client.paasoo.cn/api/dlr";
            //余额查询url
            string uri_get_user_balance = "http://client.paasoo.cn/api/balance";
    	    //号码格式验证url
            string uri_get_valid_number = "http://client.paasoo.cn/api/validnumber";

            // 参数字符串拼接
            string get_send_sms = "?key=" + key + "&secret=" + secret + "&from=" + from + "&to=" + to + "&text =" + text;
            string get_send_sms_record = "?key=" + key + "&secret=" + secret + "&messageid=" + messageid;
            string get_user_balance = "?key=" + key + "&secret=" + secret;
            string get_valid_number = "?key=" + key + "&secret=" + secret + "&countryCode =" + countryCode + "&nationalNumber =" + nationalNumber;

            // 接口调用示例
            HttpGet(uri_get_send_sms, get_send_sms);
            HttpGet(uri_get_send_record, get_send_sms_record);
            HttpGet(uri_get_user_balance, get_user_balance);
            HttpGet(uri_get_valid_number, get_valid_number);
        }

        public static void HttpGet(string url, string postDataStr) {
            byte[] dataArray = Encoding.UTF8.GetBytes(postDataStr);
            // Console.Write(Encoding.UTF8.GetString(dataArray));

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "application/json";
            request.ContentLength = dataArray.Length;
            //request.CookieContainer = cookie;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(dataArray, 0, dataArray.Length);
            dataStream.Close();
            try {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                String res = reader.ReadToEnd();
	         response.Close();
                reader.Close();
		 Console.Write("\nResponse Content:\n" + res + "\n");
            } catch(Exception e) {
                Console.Write(e.Message + e.ToString());
            }
        }
    }
}
import httplib
import urllib
import json

#服务地址
api_host = "api.paasoo.cn";
client_host = "client.paasoo.cn";
port = 80

// 短信发送url
uri_get_send_sms = "/json";
// 发送记录查询url
uri_get_send_sms_record = "/api/dlr";
// 余额查询url
uri_get_user_balance = "/api/balance";
// 号码格式验证url
uri_get_valid_number = "/api/validnumber";

#调用示例
def get_send_sms(key, secret, from, to, text):
    params = urllib.urlencode({'key': key, 'secret': secret, 'from': from, 'to': to, 'text': text})
    headers = {"Content-type": "application/json", "Accept": "text/plain"}
    conn = httplib.HTTPConnection(api_host, port=port, timeout=30)
    conn.request("GET", uri_get_send_sms, params, headers)
    response = conn.getresponse()
    response_str = response.read()
    conn.close()
    return response_str

def get_send_sms_record(key, secret, messageid):
    params = urllib.urlencode({'key': key, 'secret': secret, 'messageid': messageid})
    headers = {"Content-type": "application/json", "Accept": "text/plain"}
    conn = httplib.HTTPConnection(client_host, port=port, timeout=30)
    conn.request("GET", uri_get_send_sms_record, params, headers)
    response = conn.getresponse()
    response_str = response.read()
    conn.close()
    return response_str

def get_send_sms_record(key, secret):
    params = urllib.urlencode({'key': key, 'secret': secret})
    headers = {"Content-type": "application/json", "Accept": "text/plain"}
    conn = httplib.HTTPConnection(client_host, port=port, timeout=30)
    conn.request("GET", uri_get_user_balance, params, headers)
    response = conn.getresponse()
    response_str = response.read()
    conn.close()
    return response_str

def get_send_sms_record(key, secret, countryCode, nationalNumber):
    params = urllib.urlencode({'key': key, 'secret': secret, 'countryCode': countryCode, 'nationalNumber': nationalNumber})
    headers = {"Content-type": "application/json", "Accept": "text/plain"}
    conn = httplib.HTTPConnection(client_host, port=port, timeout=30)
    conn.request("GET", uri_get_valid_number, params, headers)
    response = conn.getresponse()
    response_str = response.read()
    conn.close()
    return response_str


if __name__ == '__main__':

    key = "xxxxxxxxxxx";
    secret = "xxxxxxxxxxx";
    from = "xxxxxxxxxxx";
    to = "xxxxxxxxxxx";
    text = "xxxxxxxxxxx";
    messageid = "xxxxxxxxxxx";
    countryCode = "xxxxxxxxxxx";
    nationalNumber = "xxxxxxxxxxx";

    #短信发送信息调用示例
    print get_send_sms(key, secret, from, to, text)
    #发送记录信息调用示例
    print get_send_sms_record(key, secret, messageid)
    #余额信息调用示例
    print get_send_sms_record(key, secret)
    #号码格式验证调用示例
    print get_send_sms_record(key, secret, countryCode, nationalNumber)