登录
原创

基于JAVA的天聚人合文娱直充接口调用示例代码

专栏天聚人合TIANJURENHE.COM
发布于 2020-12-22 阅读 228
  • Java
  • API
原创

前期准备

接口说明

  • 免费使用,根据会员等级不同,每日可调用次数不同,具体登录天聚人合官网查看
  • 话费API接口技术接入服务。为企业提供话费API接口,通过接口自由实现PC端、H5、APP等方式接入。
  • 其他更详细的接口使用信息,登录天聚人合官网查看,本文为简单使用示例,仅供参考

文娱—商品列表接口:

请求参数

名称 必填 类型 说明
key String 在个人中心->我的数据,接口名称上方查看

代码示例

import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.concurrent.TimeUnit;

public class tjrh_wy {
    private static OkHttpClient client;
    /**查询商品列表接口地址*/
    private static final String apiUrl_products = "http://op.tianjurenhe.com/tencent/products";
    /**查询商品列表接口参数格式*/
    public static final String WY_PRODUCTS_PARAM = "?key={0}";
    /**申请的接口Appkey*/
    public static final String key = 您申请的key;

    private static final int TIME_OUT = 20;

    static {
        client = new OkHttpClient.Builder()
                .connectTimeout(TIME_OUT, TimeUnit.SECONDS)
                .readTimeout(TIME_OUT, TimeUnit.SECONDS)
                .writeTimeout(TIME_OUT, TimeUnit.SECONDS)
                .retryOnConnectionFailure(true)
                .build();
    }

   /**
     * 查询商品列表
     * @return 返回String结果
     * @throws Exception
     */
    public static void products() throws IOException {
        //拼接地址与参数
        String url = apiUrl_products + MessageFormat.format(WY_PRODUCTS_PARAM,key);
        //创建request对象实例
        Request request = new Request.Builder().url(url).build();
        //获取请求response应答
        Response response = client.newCall(request).execute();
        if(response != null){
            //返回消息体的字符串
            JSONObject result = JSONObject.parseObject(response.body().string());
            if (result.getInteger("error_code") == 0) {
                // 订单提交成功,根据实际业务逻辑进行处理
            }else{
                // 提交返回码error_code非正常状态,依据官方文档错误码说明,进行逻辑处理
                // 比如:10014,系统异常 / 208516,重复的订单号 等,需要进行二次查询/人工确认处理,不要直接失败处理,避免造成不必要的损失
            }
        }else{
            // 可能网络异常等问题,未获得正确响应结果,建议进行二次查单/人工确认,不要直接失败处理,避免造成不必要的损失
            // 依据自己的业务逻辑进行处理
        }
    }

返回结果示例

{
    "reason": "查询成功",
    "result": [
        {
            "proid": "50001",/*商品id*/
            "name": "Q币1元直充",/*商品名称*/
            "saleprice": "0.985",/*购买价格*/
            "perprice": "1",/*原价*/
            "unit": "元",/*商品单位*/
            "maxnums": "10"/*单次最大可购买份数*/
        },
        {
            "proid": "50002",
            "name": "Q币5元直充",
            "saleprice": "4.825",
            "perprice": "5",
            "unit": "元",
            "maxnums": "10"
        },
        {
            "proid": "50003",
            "name": "Q币20元直充",
            "saleprice": "19.300",
            "perprice": "20",
            "unit": "元",
            "maxnums": "10"
        },
        {
            "proid": "50004",
            "name": "Q币30元直充",
            "saleprice": "28.950",
            "perprice": "30",
            "unit": "元",
            "maxnums": "10"
        },
        {
            "proid": "50005",
            "name": "Q币50元直充",
            "saleprice": "48.250",
            "perprice": "50",
            "unit": "元",
            "maxnums": "10"
        },
        {
            "proid": "50006",
            "name": "Q币100元直充",
            "saleprice": "96.500",
            "perprice": "100",
            "unit": "元",
            "maxnums": "10"
        },
        {
            "proid": "50007",
            "name": "QQ超级会员SVIP1个月",
            "saleprice": "19.300",
            "perprice": "20",
            "unit": "月",
            "maxnums": "12"
        },
        {
            "proid": "50008",
            "name": "QQ黄钻贵族1个月",
            "saleprice": "9.650",
            "perprice": "10",
            "unit": "月",
            "maxnums": "12"
        },
        {
            "proid": "50009",
            "name": "QQ黄钻豪华版1个月",
            "saleprice": "14.475",
            "perprice": "15",
            "unit": "月",
            "maxnums": "12"
        },
        {
            "proid": "50010",
            "name": "QQ蓝钻贵族1个月",
            "saleprice": "9.650",
            "perprice": "10",
            "unit": "月",
            "maxnums": "12"
        },
        {
            "proid": "50011",
            "name": "QQ绿钻贵族1个月",
            "saleprice": "9.650",
            "perprice": "10",
            "unit": "月",
            "maxnums": "12"
        },
        {
            "proid": "50012",
            "name": "QQ会员1个月",
            "saleprice": "9.650",
            "perprice": "10",
            "unit": "月",
            "maxnums": "12"
        },
        {
            "proid": "50013",
            "name": "CF会员1个月",
            "saleprice": "29.550",
            "perprice": "30",
            "unit": "月",
            "maxnums": "12"
        },
        {
            "proid": "50014",
            "name": "QQ蓝钻豪华版1个月",
            "saleprice": "14.475",
            "perprice": "15",
            "unit": "月",
            "maxnums": "12"
        }
    ],
    "error_code": 0
}

文娱----提交充值订单接口:

请求参数

名称 必填 类型 说明
key String 在个人中心->我的数据,接口名称上方查看
uorderid String 用户自定义单号,8-32位数字字母
proid String 商品id,通过商品接口获取
game_userid String 需要充值的账号,比如QQ号、手机号码、对应平台的账号
nums int 购买份数,默认1,最大请参照商品接口返回
sign String 校验值,md5(proid+nums+uorderid+game_userid+key+uid),其中uid为人合登录帐号

代码示例

import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.concurrent.TimeUnit;

public class tjrh_wy {
    private static OkHttpClient client;
    /**提交充值订单接口地址*/
    private static final String apiUrl_onlineorder = "http://op.tianjurenhe.com/tencent/onlineorder";
    /**提交充值订单接口参数格式*/
    public static final String WY_ONLINEORDER_PARAM = "?uorderid={0}&proid={1}&game_userid={2}&nums={3}&key={4}&sign={5}";
    /**申请的接口Appkey*/
    public static final String key = 您申请的key;
   /**人合登录账号*/
    public static final String uid = 您的人合账号;

    private static final int TIME_OUT = 20;

    static {
        client = new OkHttpClient.Builder()
                .connectTimeout(TIME_OUT, TimeUnit.SECONDS)
                .readTimeout(TIME_OUT, TimeUnit.SECONDS)
                .writeTimeout(TIME_OUT, TimeUnit.SECONDS)
                .retryOnConnectionFailure(true)
                .build();
    }

   /**
     * 依据用户提供的请求为指定油卡直接充值
     * @param uorderid 用户自定义单号,8-32位数字字母
     * @param proid 商品id,通过商品接口获取
     * @param game_userid 需要充值的账号,比如QQ号、手机号码、对应平台的账号
     * @param nums 购买份数,默认1,最大请参照商品接口返回
     * @return 返回String结果
     * @throws Exception
     */
    public static void onlineOrder(String uorderid, String proid, String game_userid,Integer nums) throws IOException {
        //校验值,md5(proid+nums+uorderid+game_userid+key+uid),其中uid为人合登录帐号,“+”号表示连接字符串符号。
        String sign = MD5Util.MD5(proid + nums + uorderid + game_userid + key + uid);
        //拼接地址与参数
        String url = apiUrl_onlineorder + MessageFormat.format(WY_ONLINEORDER_PARAM, uorderid, proid, game_userid, nums ,key, sign);
        //创建request对象实例
        Request request = new Request.Builder().url(url).build();
        //获取请求response应答
        Response response = client.newCall(request).execute();
        if(response != null){
            //返回消息体的字符串
            JSONObject result = JSONObject.parseObject(response.body().string());
            if (result.getInteger("error_code") == 0) {
                // 订单提交成功,根据实际业务逻辑进行处理
            }else{
                // 提交返回码error_code非正常状态,依据官方文档错误码说明,进行逻辑处理
                // 比如:10014,系统异常 / 208516,重复的订单号 等,需要进行二次查询/人工确认处理,不要直接失败处理,避免造成不必要的损失
            }
        }else{
            // 可能网络异常等问题,未获得正确响应结果,建议进行二次查单/人工确认,不要直接失败处理,避免造成不必要的损失
            // 依据自己的业务逻辑进行处理
        }
    }

返回结果示例

{
    "reason": "订单提交成功,请等待充值",
    "result": {
        "sporder_id": "Q160922235538133321", /*聚合订单号*/
        "uorderid": "147455973840112", /*用户自定义单号*/
        "game_userid": "123456789", /*充值帐号*/
        "proid": "50002", /*商品id*/
        "nums": "1", /*购买份数*/
        "name": "Q币5元直充", /*商品名称*/
        "uordercash": "4.825", /*消费金额*/
        "game_state": "0" /*状态,0:充值中 1:充值成功 9:充值失败*/
    },
    "error_code": 0 /*返回码,0表示提交订单成功*/
}

文娱----订单状态查询接口:

请求参数

名称 必填 类型 说明
key String 在个人中心->我的数据,接口名称上方查看
orderid String 用户自定义单号

代码示例

//MD5工具类
package com.tjrh.HttpRequest;

import java.security.MessageDigest;

public class MD5Util {

    public static String MD5(String s) {
        char[] hexDigits = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

        try {
            byte[] e = s.getBytes();
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            mdInst.update(e);
            byte[] md = mdInst.digest();
            int j = md.length;
            char[] str = new char[j * 2];
            int k = 0;

            for (byte byte0 : md) {
                str[k++] = hexDigits[byte0 >>> 4 & 15];
                str[k++] = hexDigits[byte0 & 15];
            }

            return new String(str).toLowerCase();
        } catch (Exception var10) {
            var10.printStackTrace();
            return null;
        }
    }
}


//调用接口的主类
package com.tjrh.HttpRequest;

import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.concurrent.TimeUnit;

public class tjrh_wy {
    private static OkHttpClient client;
    /**订单状态查询接口地址*/
    private static final String apiUrl_ordersta = "http://op.tianjurenhe.com/tencent/ordersta";
    /**订单状态查询接口参数格式*/
    public static final String WY_ORDERSTA_PARAM = "?orderid={0}&key={1}";
    /**在个人中心查询*/
    public static final String openId = 您的openid;
    /**申请的接口Appkey*/
    public static final String key = 您申请的key;

    private static final int TIME_OUT = 20;

    static {
        client = new OkHttpClient.Builder()
                .connectTimeout(TIME_OUT, TimeUnit.SECONDS)
                .readTimeout(TIME_OUT, TimeUnit.SECONDS)
                .writeTimeout(TIME_OUT, TimeUnit.SECONDS)
                .retryOnConnectionFailure(true)
                .build();
    }

  /**
     * 订单状态查询
     * @param orderId 用户自定义单号,8-32位数字字母
     * @return 返回String结果
     * @throws Exception
     */
    public static void orderSta(String orderId) throws IOException {
        //拼接地址与参数
        String url = apiUrl_ordersta + MessageFormat.format(WY_ORDERSTA_PARAM,orderId,key);
        //创建request对象实例
        Request request = new Request.Builder().url(url).build();
        //获取请求response应答
        Response response = client.newCall(request).execute();
        if(response != null){
            //返回消息体的字符串
            JSONObject result = JSONObject.parseObject(response.body().string());
            if (result.getInteger("error_code") == 0) {
                // 订单提交成功,根据实际业务逻辑进行处理
            }else{
                // 提交返回码error_code非正常状态,依据官方文档错误码说明,进行逻辑处理
                // 比如:10014,系统异常 / 208516,重复的订单号 等,需要进行二次查询/人工确认处理,不要直接失败处理,避免造成不必要的损失
            }
        }else{
            // 可能网络异常等问题,未获得正确响应结果,建议进行二次查单/人工确认,不要直接失败处理,避免造成不必要的损失
            // 依据自己的业务逻辑进行处理
        }
    }

返回结果示例

{
    "reason": "查询成功",
    "result": {
        "proid": "50002", /*商品id*/
        "cardname": "Q币5元直充", /*商品名称*/
        "game_userid": "12345678", /*充值帐号*/
        "cardnum": "1", /*购买份数*/
        "uordercash": "4.825", /*消费金额*/
        "sporder_id": "Q16092223542348120421", /*聚合订单号*/
        "uorderid": "147666597384068", /*用户自定义单号*/
        "game_state": "9" /*状态,0:充值中 1:充值成功 9:充值失败*/
    },
    "error_code": 0 /*返回码,0表示查询成功*/
}

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0