1、软件作者需在注册帐号时选择软件作者或登录后加盟 申请软件作者身份，才能享受软件提成哦！ 


API 接口地址：http://123.57.37.225/api/index

接口统一编码：UTF-8 

接口调用方式：POST/GET

提交数据：action=方法名&参数名1=值1....。例如登录的提交数据是：action=loginIn&name=API ID&password=密码 

返回数据：所有API成功统一返回1|内容信息，失败统一返回0|失败提示信息。例如登录时提交了正确的用户密码，那么返回为1|e173a1c3-8888-42bc-8888-5766a6298888（其中1表示是成功了，后面的e173a1c3-8888-42bc-8888-5766a6298888是API返回的token），如果提交了错误的账号密码，那么返回的结果是0|登录失败，用户不存在或密码不正确（0表示失败了，“登录失败，用户不存在或密码不正确”是失败的原因）。 

注意事项

    每个获取到的号码都必须正确处理(要么获取到验证码，要么加黑，要么释放)。不能用的号码不加黑下次还会重复获取,如果一直在重复获取重复释放,系统会做封号处理,封号请联系管理解封。

    在获取手机号时，提示“系统暂时没有可用号码“，使用死循环每隔五秒钟请求一次手机号，没号了系统有监控会及时加号的。

    在发送短信完成后最好等待10秒再开始获取验证码，因为就算是正常手机接短信也是需要大概10秒时间的，如果服务器返回”还没有接收到短信，请过3秒再试“，最好等待3秒后再次请求。当然你可以根据自己的意愿自行设定发完短信等待时间和请求验证码间隔。建议不要太频繁，系统负载过高的情况下会针对高并发用户临时封IP。

    在多线程程序中不要调用cancelAllRecv,否则会影响其他线程的接收.调了cancelAllRecv会释放当前用户下所有已经获取到的号码。 

2、用户登录


action=loginIn

提交参数：name=API ID&password=密码 

调用实例：http://api.ygcake.com/do.php?action=loginIn&name=API ID&password=密码 

返回值：1|token(token是重要的返回参数，后面所有的请求都要传这个参数值)

注意事项

    只要密码修改，token不过期登录方法只需要调用一次获取到token即可，程序运行中请不要重复调用

    API ID每个用户会对应一个，具体用户对应的API ID请下载客户端查看

3、获取信息


action=getSummary 

提交参数：token=登录时返回的令牌 

调用实例：http://api.ygcake.com/do.php?action=getSummary&token=登录时返回的令牌

返回值：1|余额|等级|批量取号数|用户类型

备注：建议取用户信息的间隔至少在2分钟以上。 

4、获取手机号

1、action=getPhone 
2、提交参数

一般调用参数：sid=项目id&token=登录时返回的令牌

指定区域调用参数：sid=项目id&token=登录时返回的令牌&locationMatching=include|exclude&locationLevel=p|c&location=重庆 

同时取两个以上的码，项目id之间用逗号(,)隔开，如sid=1000,1001。如果要获取指定号码，再在后面加一个phone=要指定获取的号码

locationMatching、locationLevel、location三个为可选参数。用来取某些区域的手机号或者不要某些区域的手机号

locationMatching的参数值只能是include或者exclude中的一个。include指的是包含区域，exclude指的是不包含区域

locationLevel参数只能是p或者c中的一个。p指的是省（province），c指的是市（city）
location指的是区域，中文值。可以在取验证码中查询到具体中文内容。需要utf8编码一下

举个例子

locationMatching=include&locationLevel=c&location=开封
匹配 城市 开封（意思是只选城市开封的号）
locationMatching=exclude&locationLevel=c&location=开封
排除 城市 开封（意思是不选城市开封的号）
locationMatching=include&locationLevel=p&location=河南
匹配 省份 河南（意思是只选省份河南的号）
locationMatching=exclude&locationLevel=p&location=河南

排除 省份 河南（意思是不选省份河南的号）

注：location 参数为中文，编要编码 例上海 编码后为 %E4%B8%8A%E6%B5%B7
编码工具：http://tool.oschina.net/encode?type=4
其它参数：
A。指定一个手机号取号，请在参数后多加一个phone=你要指定获取的号码
B。指定运营商取号，请在参数后多加一个参数phoneType=CMCC，CMCC是指移动，UNICOM是指联通，TELECOM是指电信 C。指定号段取号，请在参数后多加一个参数phonePrefix=187032，意思取187032号段 D。指定虚拟运营商或排除虚拟运营商请在参数后多加一个参数。vno=1 表示指定只取虚拟运营商， vno=0 表示只取正常运营商。



3、调用实例：http://api.ygcake.com/do.php?action=getPhone&sid=项目id&token=登录时返回的令牌

4、返回值：1|手机号

5、当返回0|系统暂时没有可用号码，请过3秒再重新取号。

6、当返回 0|余额不足，当前余额为0.00元，其中使用中的项目锁定0.40元。 存在余额不足的字眼，请停止软件运行。

7、当返回 0|超出频率，请延时3秒再请求。

如何一个手机号接收多条短信

方法一：同个项目取多条短信(针对平台没提供多个项目的)
      第一条取出短信后，再调用获取手机号指定手机号调用实例： http://api.ygcake.com/do.php?action=getPhone&sid=项目id&phone=手机号&token=登录时返回的令牌

方法二：不同项目取多条短信(针对平台已有提供多个项目的)

       平台一个项目对应一种短信模板，一般热门项目平台会建成2个项目如果你做的项目平台有建成多个项目则使用方法.传多个不同的项目ID进去取号(逗号隔开)，取码和加黑也一样.

调用实例：http://api.ygcake.com/do.php?action=getPhone&sid=项目id1,项目id2&phone=手机号&token=登录时返回的令牌

5、获取短信


1、action=getMessage 

2、提交参数：sid=项目id&phone=取出来的手机号&token=登录时返回的令牌&author=软件作者 用户名(这里是传作者注册时的用户名)。同时取两个以上的码，项目id之间用逗号(,)隔开，如sid=1000,1001

3、调用实例：http://api.ygcake.com/do.php?action=getMessage&sid=项目id&phone=取出来的手机号&token=登录时返回的令牌

4、返回值：1|短信内容 

5、备注：当返回0|还没有接收到短信，请过3秒再试，请软件主动3秒再重新取短信内容。一般项目的短信在1分钟左右能取到，个别比较慢的也应该在3分钟左右能取到。所以重试间隔3秒的情况下一般循环获取20~60次之间即可。如果一超过60次取不到短信，可以加黑该手机号。

6、注意：返回 0| 请软件主动延时5秒再请求，对于没加任何延时的，平台监控到并发高的会封号处理。

6、加黑手机号


1、action=addBlacklist 

2、提交参数：sid=项目id&phone=要加入黑名单的手机号&token=登录时返回的令牌 

3、调用实例：http://api.ygcake.com/do.php?action=addBlacklist&sid=项目id&phone=要加入黑名单的手机号&token=登录时返回的令牌 

4、返回值：1|操作成功 

5、备注：如果是正常取到了短信，是不用操作加入黑名单和释放手机号的 

7、释放手机号


1、action=cancelRecv 

2、提交参数：sid=项目id&phone=要释放的手机号&token=登录时返回的令牌 

3、调用实例：http://api.ygcake.com/do.php?action=cancelRecv&sid=项目id&phone=要释放的手机号&token=登录时返回的令牌

4、返回值：1|操作成功

5、备注：如果是正常取到了短信，是不用操作加入黑名单和释放手机号的 

8、释放所有手机号


1、action=cancelAllRecv 

2、提交参数：token=登录时返回的令牌 

3、调用实例：http://api.ygcake.com/do.php?action=cancelAllRecv&token=登录时返回的令牌

4、返回值：1|操作成功 

5、备注：如果是正常取到了短信，是不用操作加入黑名单和释放手机号的，多线程下禁止执行此方法，具体原因查看上面“自动化API说明”。 

释放所有会把当前操作中的手机号也释放掉，如果是多个客户端或多线程取号这个方法不要调用，会影响释放掉正在操作中的手机号。

9、提交发送短信内容


1、action=putSentMessage 

2、调用实例：http://api.ygcake.com/do.php?action=putSentMessage&phone=取出来的手机号&sid=项目id&message=要发送的短信内容&recvPhone=发送到哪个号码&token=登录时返回的令牌

3、提交参数：phone=取出来的手机号&sid=项目id&message=要发送的短信内容&token=登录时返回的令牌&author=软件作者用户名(这里是传作者注册时的用户名)

4、返回值：1|提交成功|发送成功的具体内容 

5、备注：发送的目标号平台会预设置好，如果某个项目有多个发送号码可通过recvPhone参数填号发到哪个号上。如果不传默认发预设的第一个。

10、获取发送短信状态


1、action=getSentMessageStatus

2、提交参数：phone=取出来的手机号&sid=项目id&token=登录时返回的令牌 

3、调用实例：http://api.ygcake.com/do.php?action=getSentMessageStatus&phone=取出来的手机号&sid=项目id&token=登录时返回的令牌

4、返回值：1|发送成功

5、备注：

  其它返回值：0|正在发送 或者 0|发送失败 或者 0|手机号不在线或手机号已释放，可尝试检查发码是否成功。

  当提示正在发送，程序等待3秒左右再次尝试。
  当提示发送失败，表明手机卡不可用，程序重新取手机号步骤。
  当提示手机号不在线或手机号已释放，可尝试检查发码是否成功，那么有可能发码已成功，此时可以检查帐号是否注册或解封。
