`
喵喵大神
  • 浏览: 38210 次
文章分类
社区版块
存档分类
最新评论

基于PHP的手机话费充值API调用代码示例

PHP 
阅读更多
本代码是基于聚合数据的话费充值API实现的话费充值功能,使用前需要:
①:通过https://www.juhe.cn/docs/api/id/85申请一个appkey

一、引入封装的代码类
//----------------------------------
// 聚合数据-手机话费充值API调用示例代码
//----------------------------------
header('Content-type:text/html;charset=utf-8');
include 'class.juhe.recharge.php'; //引入文件


二、配置一些必须的参数
//接口基本信息配置
$appkey = '291bf7184**********************'; //从聚合申请的话费充值appkey
$openid = 'JH8d954266539************'; //注册聚合账号就会分配的openid,在个人中心可以查看
$recharge = new recharge($appkey,$openid);


三、检测手机号码以及面额是否可以充值
$telCheckRes = $recharge->telcheck('18913511234',10);
if($telCheckRes){
    //说明支持充值,可以继续充值操作,以下可以根据实际需求修改
    echo "OK";
}else{
    //暂不支持充值,以下可以根据实际需求修改
    exit("对不起,该面额暂不支持充值");
}


四、根据手机号码以及面额查询商品信息

$telQueryRes =$recharge->telquery('18913511234',10); #可以选择的面额5、10、20、30、50、100、300
if($telQueryRes['error_code'] == '0'){
    //正常获取到话费商品信息
    $proinfo = $telQueryRes['result'];
    /*
    [cardid] => 191406
    [cardname] => 江苏电信话费10元直充
    [inprice] => 10.02
    [game_area] => 江苏苏州电信
    */
   echo "商品ID:".$proinfo['cardid']."<br>";
   echo "商品名称:".$proinfo['cardname']."<br>";
   echo "进价:".$proinfo['inprice']."<br>";
   echo "手机归属地:".$proinfo['game_area']."<br>";
}else{
    //查询失败,可能维护、不支持面额等情况
    echo $telQueryRes["error_code"].":".$telQueryRes['reason'];
}


五、提交话费充值
$orderid = '111111111'; //自己定义一个订单号,需要保证唯一
$telRechargeRes = $recharge->telcz('18913513535',5,$orderid); #可以选择的面额5、10、20、30、50、100、300
if($telQueryRes['error_code'] =='0'){
    //提交话费充值成功,可以根据实际需求改写以下内容
    echo "充值成功,订单号:".$telRechargeRes['result']['sporder_id'];
    var_dump($telRechargeRes);
}else{
    //提交充值失败,具体可以参考$telRechargeRes['reason']
    var_dump($telRechargeRes);
}


六、订单状态查询
$orderid = '111111111'; //商家自定的订单号
$orderStatusRes = $recharge->sta($orderid);
if($orderStatusRes['error_code'] == '0'){
    //查询成功
    if($orderStatusRes['result']['game_state'] =='1'){
        echo "充值成功";
    }elseif($orderStatusRes['result']['game_state'] =='9'){
        echo "充值失败";
    }elseif($orderStatusRes['result']['game_state'] =='-1'){
        echo "提交充值失败"; //可能是如运营商维护、账户余额不足等情况
    }
}else{
    //查询失败
    echo "查询失败:".$orderStatusRes['reason']."(".$orderStatusRes['error_code'].")";
}


七、完整的class.juhe.recharge.php代码
<!--?php
// +----------------------------------------------------------------------
// | JuhePHP [ NO ZUO NO DIE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2010-2015 http://juhe.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: Juhedata <info@juhe.cn-->
// +----------------------------------------------------------------------
 
//----------------------------------
// 聚合数据-手机话费充值API调用类
//----------------------------------
class recharge {
 
    private $appkey;
 
    private $openid;
 
    private $telCheckUrl = 'http://op.juhe.cn/ofpay/mobile/telcheck';
 
    private $telQueryUrl = 'http://op.juhe.cn/ofpay/mobile/telquery';
 
    private $submitUrl = 'http://op.juhe.cn/ofpay/mobile/onlineorder';
 
    private $staUrl = 'http://op.juhe.cn/ofpay/mobile/ordersta';
 
    public function __construct($appkey,$openid){
        $this->appkey = $appkey;
        $this->openid = $openid;
    }
 
    /**
     * 根据手机号码及面额查询是否支持充值
     * @param  string $mobile   [手机号码]
     * @param  int $pervalue [充值金额]
     * @return  boolean
     */
    public function telcheck($mobile,$pervalue){
        $params = 'key='.$this->appkey.'&phoneno='.$mobile.'&cardnum='.$pervalue;
        $content = $this->juhecurl($this->telCheckUrl,$params);
        $result = $this->_returnArray($content);
        if($result['error_code'] == '0'){
            return true;
        }else{
            return false;
        }
    }
 
    /**
     * 根据手机号码和面额获取商品信息
     * @param  string $mobile   [手机号码]
     * @param  int $pervalue [充值金额]
     * @return  array
     */
    public function telquery($mobile,$pervalue){
        $params = 'key='.$this->appkey.'&phoneno='.$mobile.'&cardnum='.$pervalue;
        $content = $this->juhecurl($this->telQueryUrl,$params);
        return $this->_returnArray($content);
    }
 
    /**
     * 提交话费充值
     * @param  [string] $mobile   [手机号码]
     * @param  [int] $pervalue [充值面额]
     * @param  [string] $orderid  [自定义单号]
     * @return  [array]
     */
    public function telcz($mobile,$pervalue,$orderid){
        $sign = md5($this->openid.$this->appkey.$mobile.$pervalue.$orderid);//校验值计算
        $params = array(
            'key' => $this->appkey,
            'phoneno'   => $mobile,
            'cardnum'   => $pervalue,
            'orderid'   => $orderid,
            'sign' => $sign
        );
        $content = $this->juhecurl($this->submitUrl,$params,1);
         return $this->_returnArray($content);
    }
 
    /**
     * 查询订单的充值状态
     * @param  [string] $orderid [自定义单号]
     * @return  [array]
     */
    public function sta($orderid){
        $params = 'key='.$this->appkey.'&orderid='.$orderid;
        $content = $this->juhecurl($this->staUrl,$params);
        return $this->_returnArray($content);
    }
 
    /**
     * 将JSON内容转为数据,并返回
     * @param string $content [内容]
     * @return array
     */
    public function _returnArray($content){
        return json_decode($content,true);
    }
 
    /**
     * 请求接口返回内容
     * @param  string $url [请求的URL地址]
     * @param  string $params [请求的参数]
     * @param  int $ipost [是否采用POST形式]
     * @return  string
     */
    public function juhecurl($url,$params=false,$ispost=0){
        $httpInfo = array();
        $ch = curl_init();
 
        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
        curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
        curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
        curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
        if( $ispost )
        {
            curl_setopt( $ch , CURLOPT_POST , true );
            curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
            curl_setopt( $ch , CURLOPT_URL , $url );
        }
        else
        {
            if($params){
                curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
            }else{
                curl_setopt( $ch , CURLOPT_URL , $url);
            }
        }
        $response = curl_exec( $ch );
        if ($response === FALSE) {
            //echo "cURL Error: " . curl_error($ch);
            return false;
        }
        $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
        $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
        curl_close( $ch );
        return $response;
    }
}

分享到:
评论

相关推荐

    话费充值小程序源码开源代码充值话费

    【标题】"话费充值小程序源码开源代码充值话费" 涉及的主要知识点是微信小程序开发,尤其是与话费充值服务相关的功能实现。在微信小程序开发中,话费充值是一个常见的应用场景,通常用于为用户提供便捷的手机充值...

    豆包 API 调用示例代码详解-Python版

    豆包 API 调用示例代码详解-Python版 在本文中,我们将详细介绍如何使用 Python 调用豆包 API,并提供相关的事前准备和代码执行步骤。 一、事前准备 密钥申请: 要使用豆包 API,首先需要申请一个授权密钥。在上述...

    基于c#实现的webapi调用软件

    基于c#实现的webapi调用软件,用于请求web服务,尤其是通过aistudio平台部署的深度学习模型。如果您的自己的webapi接口返回的也是json格式的信息,也可以使用本软件进行请求调用。只是在请求服务前,一定要点击软件...

    手机话费充值系统源码.rar

    此外,系统还需要后端服务器来处理交易逻辑,验证用户输入,调用充值接口,并存储交易记录。后端开发语言可能包括Java、Python、PHP或.NET,使用框架如Spring Boot、Django、Laravel或ASP.NET Core。数据库管理系统...

    c# 调用百度地图API 代码示例

    将百度地图嵌入c# cs窗体中,cs...查了很多资料,参考网上众多朋友的代码及百度地图API demo,这个例子中的js代码不用key,方便很多,使用的是v1.4版,少了很多限制,使用.net4.5开发的,可以将c#代码转为低版本也行的。

    用go语言对deepseek的API调用的示例

    5. 示例代码的运行和调试:实际运行代码并观察API的响应,必要时进行调试以确保API调用正确无误。 通过上述步骤,开发者可以利用Go语言轻松地与DeepSeek的AI服务进行交互,从而开发出功能强大且高效的AI应用。 ...

    基于PHP的聚合数据天气预报api调用示例.pdf

    "基于PHP的聚合数据天气预报api调用示例" 本文档提供了基于PHP的聚合数据天气预报API调用示例,演示了如何使用PHP语言调用天气预报API,获取支持城市列表、根据城市获取天气预报、根据IP地址请求天气预报、根据GPS...

    APISpace 企业工商信息 API接口 PHP调用示例代码

    下面的PHP代码示例展示了如何调用这个API: ```php &lt;?php $curl = curl_init(); // 设置API接口URL curl_setopt_array($curl, array( CURLOPT_URL =&gt; "https://chuanglan.o.apispace.com/253-gsxxinfo/gsdetinfo"...

    文心一言API调用示例

    《文心一言API》是一个基于Python语言编写的API,它提供了获取一言(hitokoto)和随机古诗词等文学作品的接口。通过调用该API,你可以快速获取优美、有趣的文学片段,以及其作者和出处等相关信息。 该API的主要功能...

    手机话费充值程序

    手机话费充值程序是针对移动通信用户设计的一种便捷服务,旨在为用户提供快速、安全的在线充值方式,确保手机通讯的顺畅。在这个程序中,我们通常会涉及到以下几个关键知识点: 1. **Web应用开发**:从文件`index....

    最新话费充值系统源码,附带系统安装教程

    主要任务是接收前端请求,处理业务逻辑,调用API与第三方支付平台(如支付宝、微信支付)进行接口交互,确保充值过程的安全性。这部分源码将展示如何实现RESTful API设计,以及如何进行错误处理和事务管理。 3. **...

    APISpace 运营商二要素 API接口 PHP调用示例代码

    具体到PHP调用这个API的示例代码,我们可以看到以下步骤: 1. 初始化cURL会话:`curl_init()`用于创建一个新的cURL会话。 2. 设置cURL选项:`curl_setopt_array()`函数用于配置cURL会话的参数,例如请求类型(POST...

    APISpace 全国快递查询 API接口 PHP调用示例代码

    总的来说,全国快递查询 API 提供了一种简单的方式来集成物流追踪功能到您的应用程序中,而 PHP 示例代码则演示了如何通过 cURL 库进行 API 调用。在实际使用中,记得替换 `YOUR_API_TOKEN` 为实际获取的 API 密钥,...

    话费慢充系统,三网话费,快充慢充系统,话费直充系统

    系统特性: ①、联通话费 ②、电信话费 ③、移动话费 ④、系统实测每分钟订单量订单...⑶优化移动充值接口 2022.07.05 (1)解决支付拉不起支付问题 (2)优化电信微信支付成功率 (3)优化下单匹配待匹配问题

    金蝶接口WebAPI Postman调用示例

    本文将详细介绍如何使用Postman来调用金蝶接口WebAPI的示例。 在开始之前,需要了解金蝶接口WebAPI的调用通常需要以下几个步骤:注册开发者账号,获取API访问权限和密钥,了解接口文档,配置Postman环境,以及构建...

    顺丰开放平台速运类C#api调用代码

    顺丰开放平台API调用代码,可以拿过来直接使用,有些功能我没有用到所以就没写,借鉴我的相信你很快就能完成老板给你留的任务了。

    APISpace_万年历_API接口_PHP调用示例代码.docx

    #### 2.2 PHP代码示例分析 - 使用`cURL`库发起HTTP请求,获取万年历数据。 - 设置了以下关键选项: - `CURLOPT_URL`:定义请求的URL,其中包含了所需的查询参数(如`days`)。 - `CURLOPT_RETURNTRANSFER`:设置为...

    APISpace 车辆历史违章查询 API接口 PHP调用示例代码

    本文将详细解析"APISpace 车辆历史违章查询 API接口 PHP调用示例代码"的相关知识点,包括API的定义、API调用的基本原理以及PHP如何与API进行交互。 首先,API是开发者用来访问和使用特定服务的一组规则和协议。在本...

    易一网络科技手机话费充值中心

    "易一网络科技手机话费充值中心"是这样一款系统或平台,它利用技术手段,如调用淘宝接口数据,为用户提供手机话费充值服务,并且有优惠政策,比如充100元可以节省1元。 1. **接口调用**:这里的“调用淘宝接口数据...

Global site tag (gtag.js) - Google Analytics