手机话费充值接口开发指南(含API文档,充值移动、联通、电信话费)
平台上个星期上线了下载APP送随机话费的活动,下载后完成注册即可抽取1~10元话费红包。经过筛选,最终选择了互亿无线,第一有详细的计费明细,第二失败了确实有退款,第三有非常完整的接口文档和技术服务客服,分享一下他们家的文档,后续小伙伴搞话费充值功能时也可以参考下。
话费接口服务商:互亿无线(www.ihuyi.com)
话费接口地址:http://f.ihuyi.com/phone
1.单号码充值话费
请求(POST 或者GET)
类型 |
参数名称 |
参数值描述 |
参数 |
action |
recharge |
参数 |
username |
用户名(签名) |
参数 |
mobile |
手机号码(签名) |
参数 |
package |
套餐数额(签名) |
参数 |
orderid |
订单ID(签名) |
参数 |
timestamp |
时间戳(签名) 允许 10 分钟 统一以东 8 时间 |
参数 |
sign |
签名 |
返回值(JSON格式)
命名 |
类型 |
描述 |
code |
int |
代码(1为提交成功) |
message |
string |
消息描述 |
taskid |
string |
任务id,提交失败则没有 |
2.帐号余额查询
请求(POST 或者GET)
类型 |
参数名称 |
参数值描述 |
参数 |
action |
getbalance |
参数 |
username |
用户名(签名) |
参数 |
timestamp |
时间戳(签名) 允许 10 分钟 统一以东 8 时间 |
参数 |
sign |
签名 |
返回值(JSON格式)
命名 |
类型 |
描述 |
code |
int |
代码 |
message |
string |
消息描述 |
balance |
float |
剩余余额 |
3.充值状态查询
请求(POST 或者GET)
类型 |
参数名称 |
参数值描述 |
参数 |
action |
getreports |
参数 |
username |
用户名(签名) |
参数 |
count |
一次取数量(签名) |
参数 |
timestamp |
时间戳(签名) 允许 10 分钟 统一以东 8 时间 |
参数 |
sign |
签名 |
返回值(JSON格式)
命名 |
类型 |
描述 |
code |
int |
代码(1为提交成功) |
message |
string |
消息描述 |
reports+ |
array |
报告 |
taskid |
string |
任务id |
mobile |
string |
手机号码 |
state |
int |
状态(0失败, 1成功) |
message |
string |
消息 |
注意:状态获取后服务器则会删除状态
4.充值状态推送
请求(POST方式推送到配置的网址)
类型 |
参数名称 |
参数值描述 |
参数 |
taskid |
充值任务ID |
参数 |
mobile |
手机号码(签名) |
参数 |
state |
状态(签名) 1:成功 2:失败 |
参数 |
message |
消息(签名) |
参数 |
sign |
签名 |
注意:充值状态查询和充值状态推送两种方式只能选择其中一种
5. 获取话费包档位
请求(POST 或者GET)
类型 |
参数名称 |
参数值描述 |
参数 |
action |
getpackages |
参数 |
username |
用户名(签名) |
参数 |
timestamp |
时间戳(签名) |
参数 |
sign |
签名 |
返回值(JSON格式)
命名 |
类型 |
描述 |
code |
int |
代码 |
message |
string |
消息描述 |
packages+ |
float |
套餐 |
type |
string |
类型(cncm:中国移动 cncu:中国联通 cnct:中国电信) |
name |
string |
话费包 |
number |
int |
数值(用于充值请求) |
state |
int |
状态(1启用,0未启用) |
price |
int |
单价 |
6.状态码
数值 |
描述 |
0 |
未知错误 |
1 |
提交成功 |
1000 |
无此操作类型(action为空或不存在) |
1001 |
用户名为空 |
1002 |
用户名错误 |
1003 |
手机号码为空 |
1004 |
手机号码为空 |
1005 |
套餐不能为空 |
1006 |
时间戳不能为空 |
1007 |
不存在的套餐 |
1008 |
签名不能为空 |
1009 |
签名错误 |
1010 |
签名过期 |
1011 |
账号被冻结 |
1012 |
余额不足 |
1013 |
访问ip与备案ip不相同 |
1014 |
订单ID不能为空 |
1015 |
订单ID已存在 |
2001 |
不支持的手机号码 |
2002 |
手机号码已加入黑名单 |
2003 |
不支持的地区 |
3001 |
扣费失败 |
4001 |
系统内部故障 |
7. 签名说明
需要把apikey(登录系统获取)放到要签名的键值对中,按照asc排序键值对参数名排序,拼接键值对字符串(参数名小写),再用32位md5加密
注意:用户名请使用小写
如:
sign=md5(aaaa=aaaa&bbbb=bbbb&cccc=cccc&dddd=dddd)
PHP充值签名代码如下:
$sign = md5(sprintf(“apikey=%s&mobile=%s&orderid=%s&package=%s×tamp=%s&username=%s”,
$apikey,
$mobile,
$orderid,
$package,
date("YmdHis"),
$username));
GET方式地址如:
http://f.ihuyi.com/phone?action=recharge&username=testname&mobile=13800000000&orderid=xxxxxxxxx&package=10×tamp=1457954906&sign=e08ecdcedac8f9e07b1727e1005b8d32
8.PHP充值代码DEMO
$basicUrl = "http://f.ihuyi.com/phone?action=recharge&%s";
$username = 'testname';
$apikey = 'testapikey';
$mobile = '18801850000';
$package = 1;
$orderId = 'TEST_'.date("YmdHis").mt_rand(100, 1000);
$dataGet = array();
$dataGet['package'] = $package;
$dataGet['username'] = $username;
$dataGet['timestamp'] = date("YmdHis");
$dataGet['mobile'] = $mobile;
$dataGet['orderid'] = $orderId;
$dataGet['sign'] = md5(sprintf(“apikey=%s&mobile=%s&orderid=%s&package=%s×tamp=%s&username=%s”,
$apikey,
$mobile,
$orderid,
$package,
date("YmdHis"),
$username));
$dataReturn = array();
foreach ($dataGet as $key => $row) {
$dataReturn[] = sprintf("%s=%s", $key, $row);
}
$urlGet = sprintf($basicUrl, implode("&", $dataReturn));
$ch = \curl_init();
curl_setopt($ch, CURLOPT_URL, $urlGet); //定义表单提交地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //60秒
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://' . $_SERVER['HTTP_HOST']);
curl_setopt($ch, CURLOPT_POST, 0);
$data = curl_exec($ch);
curl_close($ch);
$res = explode("\r\n\r\n", $data);
$dataRet = $res[1];
if ($dataRet['code'] == 1) {
//提交成功
$apiTaskid = $dataRet['taskid'];
} else {
//提交错误处理
//.....
}
转载于:https://my.oschina.net/u/3095394/blog/796926
手机话费充值接口开发指南(含API文档,充值移动、联通、电信话费)相关推荐
- Apache PDFbox开发指南之PDF文档读取
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51542309 相关文章: <Apache PDFbox开发指南之PDF文本内容 ...
- 大牛推荐丨积分活动工具接口:积分商城api文档
什么是积分?自积分概念提出以来,积分活动已经成为一种非常流行的运营工具.对于积分,现在已经有一个比较完善和成熟的积分商城体系,在企业运营者的眼里,积分活动自然成为一种良好的积分商城运营模式. 利用积分 ...
- 【分享经验】手机话费充值接口接入指南(含话费API说明)
国庆前公司要上一个注册后可以领取手机话费的活动,一旦注册后就赠送其话费红包,主要是小额话费:1元.2元.5元.10元等小面值. 这其中需要实现话费充值的功能,百度搜罗了下,有几家是做接口服务的平台,但 ...
- Android官方SDK下载(含API文档)
下载Android官方SDK文档的方法: 1.昨天我按照方法二下好了一份,大家可以直接下载:http://yunpan.cn/cy7NNkgfUbfDr (提取码:6075) (如果链接失效,请提醒我 ...
- windows api中文文档_Web服务开发:Spring集成Swagger,3步自动生成API文档
目录: 1,Spring Boot集成Swagger 2,Swagger接口文档页面 3,常见问题和解决方法 在Sping开发REST接口服务时,API文档是不可缺少的一个重要部分.Swagger框架 ...
- swagger 修改dto注解_Web服务开发:Spring集成Swagger,3步自动生成API文档
目录: 1,Spring Boot集成Swagger 2,Swagger接口文档页面 3,常见问题和解决方法 在Sping开发REST接口服务时,API文档是不可缺少的一个重要部分.Swagger框架 ...
- 这些年我用过的API文档工具,个个是精品。
这些年我用过的API文档工具,个个是精品! 这些年用过不少API文档工具,也写过不少相关的文章,我发现哪种API文档工具更好用一直都是大家比较关心的话题.今天整理了下我曾经用过的7种API文档工具,每 ...
- SpringBoot2.x整合Swagger2 实现API文档实时生成
我们提供Restful接口的时候,API文档是尤为的重要,它承载着对接口的定义,描述等,本文主要介绍了SpringBoot集成Swagger2生成接口文档的方法示例,需要的朋友们下面随着小编来一起学习 ...
- 聚合API文档阅读帮助
聚合API文档阅读帮助 该文基于聚合云数据开放平台的API文档,目的使得开发者能够方便的快速了解我们这个API文档的结构,从而能够经行高效的开发. 该API文档总共有6个大类:国外API.国内API. ...
最新文章
- Android中修改弹出dialog背景无色透明,弹出时有遮罩
- log_bin.index not found 启动报错解决
- 一旦一个业务可以由一个人来全部完成而不涉及分工,就会产生单干的情况
- 引用 vsftpd配置手册(实用)
- 08_传智播客iOS视频教程_Foundation框架
- Android 内容提供者(Content provider)
- 如何从finally块访问方法的结果值
- 常用的后端性能优化六种方式:缓存化+服务化+异步化等
- linux查看共享内存max,浅析Linux的共享内存与tmpfs文件系统
- Quartz.NET实现作业调度
- Robotium在输入框输入文字
- mac的截图命令screencapture
- html图片左右滑动代码dw,DW图片无缝滚动代码
- Asset Pricing:Asset Pricing Formula
- 多个html文件内容合并,Bat批量将多个文件夹内容合并一个文件夹
- 介绍理想工作计算机 英语作文,理想工作的英语作文7篇
- 静态网页制作—制作“当当网首页”
- 面试难,应聘难,好工作,今安在?
- 【PS2019CC】工具栏找不到某工具怎么办/自定义工具栏的步骤
- 帝国cmssitemap.php,帝国CMS-sitemap地图插件下载
热门文章
- 聚丙烯酸叔丁酯修饰乳清白蛋白/肌白蛋白/豆清白蛋白/蓖麻蛋白/豌豆白蛋白1b ( PA1b)纳米粒
- 保姆级攻略!Elsevier期刊投稿教程,手把手操作建议收藏!
- setContentView做了什么
- 一罐子水是如何电击上千人的呢?
- MySQL数据库程序设计套题⑤【真题截图+原理解析】
- 用python计算成绩_Python使用splinter自动登录教务系统查询并计算成绩(CUMT新版教务系统)...
- 搭建Git服务器及本机克隆提交
- 通过实例学习C#(1)
- 动态规划(二)——错位重排
- 量子笔记:量子计算 toy python implementation from scratch