【加精】手机话费充值API接口(PHP版)

电商周年庆,公司搞了一个关注微信公众号送小额话费的活动,送1元、2元、5元、10元、20元、50元等不同面值的。

为了实现话费充值服务,找了多家开通了话费接口服务,接入后测试。先是做接口整合的平台,PASS,等于我们多接一层,问题不可控。最后找了增值电信的服务商 互亿无线合作,门槛低,有详细的API开发文档可以参考,根据示例很快就搞定了。

分享给大家,希望后续做类似的话费充值功能可以用得到:

 

接口地址

http://f.ihuyi.com/phone 

 

1.单号码充值话费

请求(POST 或者GET)

类型

参数名称

参数值描述

参数

action

recharge

参数

username

用户名(签名)

参数

mobile

手机号码(签名)

参数

package

套餐数额(签名)

参数

orderid

订单ID(签名)

参数

timestamp

时间戳(签名)
格式如:yyyyMMddHHmmss

允许 10 分钟 统一以东 8 时间

参数

sign

签名

 

 

 

 

返回值(JSON格式)

命名

类型

描述

code

int

代码(1为提交成功)

message

string

消息描述

taskid

string

任务id,提交失败则没有

 

 

 

 

 

 

 

  

2.帐号余额查询

请求(POST 或者GET)

类型

参数名称

参数值描述

参数

action

getbalance

参数

username

用户名(签名)

参数

timestamp

时间戳(签名)
格式如:yyyyMMddHHmmss

允许 10 分钟 统一以东 8 时间

参数

sign

签名

 

 

 

 

返回值(JSON格式)

命名

类型

描述

code

int

代码

message

string

消息描述

balance

float

剩余余额

 

 

 

 

 

 

3.充值状态查询

请求(POST 或者GET)

类型

参数名称

参数值描述

参数

action

getreports

参数

username

用户名(签名)

参数

count

一次取数量(签名)

参数

timestamp

时间戳(签名)
格式如:yyyyMMddHHmmss

允许 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&timestamp=%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&timestamp=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&timestamp=%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://www.cnblogs.com/hidahua/p/6118635.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值