广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >基于PHP的天聚人合话费充值接口示例
  • 450
分享到

基于PHP的天聚人合话费充值接口示例

2024-04-02 19:04:59 450人浏览 八月长安
摘要

一、接口申请开通 本代码是基于天聚人合的话费充值api实现的话费充值功能,使用前需要: 通过https://www.tianjurenhe.com/docs/api/?id=2申请开通话费接口服务。 你可以在个人中心 ➡️ 数据中心 ➡️

一、接口申请开通

本代码是基于天聚人合的话费充值api实现的话费充值功能,使用前需要:

  • 通过https://www.tianjurenhe.com/docs/api/?id=2申请开通话费接口服务。
  • 你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key
  • 与人合签订相关服务合同后,才能正式使用。前期您也可以申请开通测试环境,进行对接测试。
  • 详细的接口说明,可参考聚合官方文档。

二、接口使用

2.1、引入封装好的代码类

include "JuheHuaFei.class.PHP";

2.2、配置一些必须的参数

// 接口基本信息配置

$env = 1; // 接口环境类型,1:正式环境接口 2:测试环境接口
$appKey = 'b842820xxxxxxxxxxxxxxxxxx'; //从人合申请的话费充值接口key
$openId = 'JHb0d92d94ce6axxxxxxxxxxx'; //注册人合账号就会分配的openid,在个人中心可以查看
// 初始化
$juheHuaFei = new JuheHuaFei($appKey, $openId, $env);

2.3、提交话费充值订单

// 提交话费充值订单

$orderId = '111111111'; //自己定义一个订单号,需要保证唯一
$mobile = '189xxxxxxxx'; // 需要充值的手机号码
$perValue = '1'; // 话费面值,可以选择的面额1、2、5、10、20、30、50、100、200、300、500

$submitOrderResult = $juheHuaFei->submitOrder($mobile, $perValue, $orderId);
if ($submitOrderResult) {
    if ($submitOrderResult['error_code'] == '0') {
        // 订单提交成功,根据实际业务逻辑进行处理
        echo "订单提交成功,订单号:" . $submitOrderResult['result']['sporder_id'];
        print_r($submitOrderResult);
    } else {
        // 提交返回码error_code非正常状态,依据官方文档错误码说明,进行逻辑处理
        // 比如:10014,系统异常 / 208516,重复的订单号 等,需要进行二次查询/人工确认处理,不要直接失败处理,避免造成不必要的损失
        print_r($submitOrderResult);
    }
} else {
    // 可能网络异常等问题,未获得正确响应结果,建议进行二次查单/人工确认,不要直接失败处理,避免造成不必要的损失
    // 依据自己的业务逻辑进行处理
    echo "请求异常,请确认";
}

请求结果:

Array
(
    [reason] => 订单提交成功,等待充值
    [result] => Array
        (
            [cardid] => 10423
            [cardnum] => 1
            [ordercash] => 1.06
            [cardname] => 江苏电信话费1元
            [sporder_id] => J201125162114667xxxxxxxx
            [uorderid] => 111111111
            [game_userid] => 189xxxxxxxx
            [game_state] => 0
        )

    [error_code] => 0
)

2.4、订单状态查询

除主动查询订单状态,你还可以向人合提供状态回调通知URL,订单状态有变化,人合将会主动将状态信息推送给相应的URL。

// 话费订单充值状态查询

$orderId = '111111111'; // 需要查询的订单号,即提交订单时传递的orderId

$orderStatusResult = $juheHuaFei->queryOrderStatus($orderId);
if ($orderStatusResult) {
    // 打印返回结果
    print_r($orderStatusResult);

    // 根据实际业务逻辑进行处理
    if ($orderStatusResult['error_code'] == '0') {
        //查询成功
        if ($orderStatusResult['result']['game_state'] == '1') {
            // 订单充值成功了
            echo "订单充值成功";
        } elseif ($orderStatusResult['result']['game_state'] == '9') {
            // 订单充值失败
            echo "订单充值失败";
        } elseif ($orderStatusResult['result']['game_state'] == '0') {
            // 订单充值中
            echo "订单充值中";
        } elseif ($orderStatusResult['result']['game_state'] == '-1') {
            //订单受理失败,可能是如运营商维护、账户余额不足等情况
            echo "订单受理失败";
        }
    } else {
        //查询状态失败,可能订单号不存在等情况
        echo "查询失败:" . $orderStatusResult['reason'] . "(" . $orderStatusResult['error_code'] . ")";
    }
} else {
    // 可能网络异常等问题,未获得正确响应结果,建议进行二次查询
    // 依据自己的业务逻辑进行处理
    echo "请求异常,请确认";
}

返回结果:

Array
(
    [reason] => 查询成功
    [result] => Array
        (
            [uordercash] => 1.060
            [sporder_id] => J2011251629516xxxxxxxxxx
            [game_state] => 9
        )

    [error_code] => 0
)

2.5、根据手机及面额查询是否支持充值

主要通过号段进行判断是否支持充值,实际业务中可以不使用本小接口。

// 根据手机号码及面额查询是否支持充值

$mobile = '1342966xxxx'; // 手机号码
$perValue = '10'; // 话费面值,可选1、2、5、10、20、30、50、100、200、300、500

$telCheckResult = $juheHuaFei->telCheck($mobile, $perValue);
if ($telCheckResult) {
    if($telCheckResult['error_code'] == '0'){
        //说明支持充值,可以继续充值操作,以下可以根据实际需求修改
        echo "OK";
    }else{
        //暂不支持充值,以下可以根据实际需求修改
        echo "对不起,该面额暂不支持充值";
    }
} else {
    // 可能网络异常等问题,未获得正确响应结果,建议进行二次查询
    // 依据自己的业务逻辑进行处理
    echo "请求异常,请确认";
}

2.6、根据手机和面额获取商品信息

实际业务中可以不使用本小接口。

// 根据手机号码和面额获取商品信息

$mobile = '1342966xxxx'; // 手机号码
$perValue = '10'; // 话费面值,可选1、2、5、10、20、30、50、100、200、300、500
$telQueryResult = $juheHuaFei->telQuery($mobile, $perValue);
if ($telQueryResult) {
    if($telQueryResult['error_code'] == '0'){
        // 查询成功,可以根据实际逻辑修改
        print_r($telQueryResult);
    }else{
        // 查询失败,可以根据实际逻辑修改
        print_r($telQueryResult);
    }
} else {
    // 可能网络异常等问题,未获得正确响应结果,建议进行二次查询
    // 依据自己的业务逻辑进行处理
    echo "请求异常,请确认";
}

返回结果:

Array
(
    [reason] => 查询成功
    [result] => Array
        (
            [cardid] => 10880
            [cardname] => 浙江移动话费10元
            [inprice] => 10.2
            [game_area] => 浙江杭州移动
        )

    [error_code] => 0
)

2.7、订单状态通知

推送URL地址:自行提供给人合进行配置 (为了更安全,你也可以将人合推送服务器的IP进行加白名单处理)
推送方式:POST
推送参数:

参数名 类型 参数说明
sporder_id String 人合官方订单号
orderid String 用户自定义单号,即提交订单时传递的orderid
sta String 订单状态,1:成功 9:失败
sign String 校验值,校验值,md5(appkey+sporder_id+orderid) 32位小写,用于校验请求合法性

php接收异步通知(回调)参考代码:


$appkey = "b842820xxxxxxxxxxxxxxxxxx"; //您申请的数据的APIKey
 
$sporder_id = addslashes($_POST['sporder_id']); //人合订单号
$orderid = addslashes($_POST['orderid']); //商户的单号
$sta = addslashes($_POST['sta']); //充值状态
$sign = addslashes($_POST['sign']); //校验值
 
$local_sign = md5($appkey.$sporder_id.$orderid); //本地sign校验值
 
if ($local_sign == $sign) {
    if ($sta == '1') {
        //充值成功,根据自身业务逻辑进行后续处理
    } elseif ($sta =='9') {
        //充值失败,根据自身业务逻辑进行后续处理
    }
}

2.8、JuheHuaFei.class.php

JuheHuaFei.class.php 完整代码

<?php
//----------------------------------
// 天聚人合-手机话费充值API调用类--示例代码
// 官方接口文档:Https://www.tianjurenhe.com/docs/api/?id=2
//----------------------------------

class JuheHuaFei
{

    private $appkey;

    private $openid;

    // 提交订单接口URL
    private $submitUrl;

    // 订单状态查询接口URL
    private $orderStatusUrl;

    // 检测手机号码是否能充值URL
    private $telCheckUrl;

    // 根据手机号和面值查询商品URL
    private $telQueryUrl;


    
    public function __construct($appkey, $openid, $env = 1)
    {
        $this->appkey = $appkey; // 申请到的话费接口请求key
        $this->openid = $openid; // OpenID在人合个人中心查询

        if ($env == 1) {
            // 正式环境,接口地址
            $this->submitUrl = 'http://op.tianjurenhe.com/ofpay/mobile/onlineorder'; // 提交订单接口URL
            $this->orderStatusUrl = 'http://op.tianjurenhe.com/ofpay/mobile/ordersta'; // 订单状态查询接口URL
            $this->telCheckUrl = 'http://op.tianjurenhe.com/ofpay/mobile/telcheck'; // 检测手机号码是否能充值URL
            $this->telQueryUrl = 'http://op.tianjurenhe.com/ofpay/mobile/telquery'; // 根据手机号和面值查询商品URL
        } else {
            // 测试环境,接口地址
            $this->submitUrl = 'http://test-v.tianjurenhe.com/ofpay/mobile/onlineorder'; // 提交订单接口URL
            $this->orderStatusUrl = 'http://test-v.tianjurenhe.com/ofpay/mobile/ordersta'; // 订单状态查询接口URL
            $this->telCheckUrl = 'http://test-v.tianjurenhe.com/ofpay/mobile/telcheck'; // 检测手机号码是否能充值URL
            $this->telQueryUrl = 'http://test-v.tianjurenhe.com/ofpay/mobile/telquery'; // 根据手机号和面值查询商品URL
        }
    }

    
    public function submitOrder($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->juheHttpRequest($this->submitUrl, $params, 1);
        return $this->_returnArray($content);
    }

    
    public function queryOrderStatus($orderid)
    {
        $params = 'key=' . $this->appkey . '&orderid=' . $orderid;
        $content = $this->juheHttpRequest($this->orderStatusUrl, $params);
        return $this->_returnArray($content);
    }

    
    public function telCheck($mobile, $pervalue)
    {
        $params = 'key=' . $this->appkey . '&phoneno=' . $mobile . '&cardnum=' . $pervalue;
        $content = $this->juheHttpRequest($this->telCheckUrl, $params);
        return $this->_returnArray($content);
    }

    
    public function telQuery($mobile, $pervalue)
    {
        $params = 'key=' . $this->appkey . '&phoneno=' . $mobile . '&cardnum=' . $pervalue;
        $content = $this->juheHttpRequest($this->telQueryUrl, $params);
        return $this->_returnArray($content);
    }

    
    public function _returnArray($content)
    {
        return JSON_decode($content, true);
    }

    
    public function juheHttpRequest($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, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        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;
    }
}

--结束END--

本文标题: 基于PHP的天聚人合话费充值接口示例

本文链接: https://www.lsjlt.com/news/99259.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于PHP的天聚人合话费充值接口示例
    一、接口申请开通 本代码是基于天聚人合的话费充值API实现的话费充值功能,使用前需要: 通过https://www.tianjurenhe.com/docs/api/id=2申请开通话费接口服务。 你可以在个人中心 ➡️ 数据中心 ➡️ ...
    99+
    2022-10-22
  • 基于PHP的聚合话费充值接口示例
    一、接口申请开通 本代码是基于聚合数据的话费充值API实现的话费充值功能,使用前需要: 通过https://www.juhe.cn/docs/api/id/85申请开通话费接口服务。 与聚合签订相关服务合同后,才能正式使用。前期您也可以申...
    99+
    2022-10-22
  • 基于JAVA的天聚人合话费接口示例代码
    前期准备 接口申请,申请地址—“天聚人合”官网:https://www.tianjurenhe.com/docs/api/id=2 你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 接口说明 免费...
    99+
    2022-10-22
  • 基于聚合数据的笑话大全接口调用示例-PHP版
    前期准备 申请接口,你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 请仔细阅读官网的接口文档,这是聚合数据与开发者的约定,它将有助于您对接口业务的理解,从而顺利地开展开发工作 1.随机获取笑话接口...
    99+
    2022-10-22
  • 基于聚合数据的笑话大全接口调用示例-JAVA版
    接口地址 接口地址 前言 本文主要介绍笑话大全接口的调用示例 依赖 <dependency> <groupId>net.sf.json-lib</groupId> ...
    99+
    2022-10-22
  • 基于聚合数据的老黄历接口调用示例-PHP版
    前期准备 接口申请,申请地址—“聚合数据”官网:https://www.juhe.cn/docs/api/id/65 你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 接口说明 免费使用,根据会员...
    99+
    2022-10-22
  • 基于聚合数据的短信API接口(54)调用示例-PHP版
    前期准备 根据运营商的要求,目前此接口只对实名认证的企业用户开放使用,所以在使用之前请确保您是实名认证的企业用户 申请接口,你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 购买数据的请求次...
    99+
    2022-10-22
  • 基于node.js的聚合数据的短信API接口调用示例
    前期准备 根据运营商的要求,目前此接口只对实名认证的企业用户开放使用,所以在使用之前请确保您是实名认证的企业用户 申请接口,你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 接口申请开通入口...
    99+
    2022-10-22
  • 基于聚合数据的短信API接口调用示例-Python版
    一、申请接口 通过https://www.juhe.cn/docs/api/id/54自助申请开通短信API,获得接口请求Key。(目前接口暂只支持企业类用户使用) 申请后,在个人中心提交短信模板,聚合官方已经提供了多个常用模板,可以快捷申...
    99+
    2022-10-22
  • 基于聚合数据的老黄历接口调用示例-Python版
    前期准备 接口申请,申请地址—“聚合数据”官网:https://www.juhe.cn/docs/api/id/65 你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 接口说明 免费使用,根据会员...
    99+
    2022-10-22
  • 基于聚合数据的老黄历接口调用示例-JAVA版
    本文介绍聚合数据的老黄历接口的使用 依赖 <dependency> <groupId>net.sf.json-lib</groupId> ...
    99+
    2022-10-22
  • 基于聚合数据的全国违章直连查询接口示例-PHP版
    前言 从官网的接口文档中我们可以看出全国违章直连查询的调用一般来说需要两个步骤 获取支持城市参数接口,即获取到不同城市的需要的参数的长度规则 请求违章查询接口,即获取到车辆的违章记录 获取支持城市参数接口 我们以无锡城市为例 代码部分 ...
    99+
    2022-10-22
  • 基于聚合数据的验证码短信API接口调用示例-PHP版
    前期准备 根据运营商的要求,目前此接口只对实名认证的企业用户开放使用,所以在使用之前请确保您是实名认证的企业用户 申请接口,你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 购买数据的请求次...
    99+
    2022-10-22
  • 基于聚合数据的短信API接口(54)调用示例-Java版
    前期准备 根据运营商的要求,目前此接口只对实名认证的企业用户开放使用,所以在使用之前请确保您是实名认证的企业用户 申请接口,你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key 购买数据的请求次...
    99+
    2022-10-22
  • 基于聚合数据的全国车辆违章的接口示例-Java版
    开发环境 Jdk 1.8 Maven 3.6.1 IDE IntelliJ IDEA 前期准备 申请接口全国车辆违章 购买次数(免费和有赠送次数的可以先行测试) 阅读接口文档 maven依赖 <depen...
    99+
    2022-10-22
  • 基于聚合数据的身份证实名认证API接口调用示例-PHP版
    一、申请接口 通过https://www.juhe.cn/docs/api/id/103自助申请开通接口,获取API请求KEY。 二、用示例代码PHP //如需请求加密接口,加密方式请参考https://www.sdk.cn/detail...
    99+
    2022-10-22
  • 基于聚合数据的银行卡四元素校验API接口调用示例-PHP版
    一、申请接口 通过https://www.juhe.cn/docs/api/id/213自助申请开通短信API,获得接口请求Key。(目前接口暂只支持企业类用户使用) 二、PHP请求代码示例 // 请求的接口URL $apiUrl = ...
    99+
    2022-10-22
  • 基于聚合数据的短信验证码(486)接口调用示例-JAVA版
    前言 接口地址:https://www.juhe.cn/docs/api/id/486 依赖 <dependency> <groupId>net.sf.json-lib<...
    99+
    2022-10-22
  • 基于聚合数据的身份证实名认证API接口调用示例-Java版
    一、申请接口 通过https://www.juhe.cn/docs/api/id/103自助申请开通接口,获取API请求KEY 二、请求参数 名称 是否必填 说明 idcard 是 身份证号码 realname 是 姓名 ...
    99+
    2022-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作