前期准备
- 接口申请,申请地址—“天聚人合”官网:https://www.tianjurenhe.com/docs/api/?id=2
- 你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key
接口说明
- 免费使用,根据会员等级不同,每日可调用次数不同,具体登录天聚人合官网查看
- 话费API接口技术接入服务。为企业提供话费API接口,通过接口自由实现PC端、H5、APP等方式接入。
- 其他更详细的接口使用信息,登录天聚人合官网查看,本文为简单使用示例,仅供参考
话费—检测手机号码及金额是否能充值接口:
请求参数
名称 |
必填 |
类型 |
说明 |
key |
是 |
String |
在个人中心->我的数据,接口名称上方查看 |
phoneno |
是 |
String |
手机号码 |
cardnum |
是 |
String |
充值金额,目前可选:1、2、5、10、20、30、50、100、200、300、500 |
代码示例
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_hf {
private static OkHttpClient client;
private static final String apiUrl_telcheck = "http://op.tianjurenhe.com/ofpay/mobile/telcheck";
public static final String HF_TELCHECK_PARAM = "?phoneno={0}&cardnum={1}&&key={2}";
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();
}
public static void telcheck(String phoneNo, String cardnum) throws IOException {
//拼接地址与参数
String url = apiUrl_telcheck + MessageFormat.format(HF_TELCHECK_PARAM, phoneNo, cardnum, 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": null,
"error_code": 0
}
话费—-根据手机号和面值查询商品:
请求参数
名称 |
必填 |
类型 |
说明 |
key |
是 |
String |
在个人中心->我的数据,接口名称上方查看 |
phoneno |
是 |
String |
手机号码 |
cardnum |
是 |
String |
充值金额,目前可选:1、2、5、10、20、30、50、100、200、300、500 |
代码示例
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_hf {
private static OkHttpClient client;
private static final String apiUrl_telquery = "http://op.tianjurenhe.com/ofpay/mobile/telquery";
public static final String HF_TELQUERY_PARAM = "?phoneno={0}&cardnum={1}&&key={2}";
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();
}
public static void telquery(String phoneNo, String cardnum) throws IOException {
//拼接地址与参数
String url = apiUrl_telquery + MessageFormat.format(HF_TELQUERY_PARAM, phoneNo, cardnum, 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());
System.out.println(result);
if (result.getInteger("error_code") == 0) {
// 订单提交成功,根据实际业务逻辑进行处理
}else{
// 提交返回码error_code非正常状态,依据官方文档错误码说明,进行逻辑处理
// 比如:10014,系统异常 / 208516,重复的订单号 等,需要进行二次查询/人工确认处理,不要直接失败处理,避免造成不必要的损失
}
}else{
// 可能网络异常等问题,未获得正确响应结果,建议进行二次查单/人工确认,不要直接失败处理,避免造成不必要的损失
// 依据自己的业务逻辑进行处理
}
}
返回结果示例
{
"reason": "成功",
"result": {
"cardid": "191404",
"cardname": "江苏电信话费100元直充",
"inprice": 98.4,
"game_area": "江苏苏州电信"
},
"error_code": 0
}
话费—-手机直充接口:
请求参数
名称 |
必填 |
类型 |
说明 |
key |
是 |
String |
在个人中心->我的数据,接口名称上方查看 |
phoneno |
是 |
String |
手机号码 |
cardnum |
是 |
String |
充值金额,1、2、5、10、20、30、50、100等,请咨询客服了解具体情况 |
orderid |
是 |
String |
商家订单号,8-32位字母数字组合,由您自己生成 |
sign |
是 |
String |
校验值,md5( OpenID+key+phoneno+cardnum+orderid),OpenID在个人中心查询 |
代码示例
package com.tjrh.HttpRequest;
import java.security.MessageDigest;
public class MD5Util {
public static final String ECB_KEY = "F4obtZno{_8kMXvE";
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_hf {
private static OkHttpClient client;
private static final String apiUrl_recharge = "http://op.tianjurenhe.com/ofpay/mobile/onlineorder";
public static final String HF_TELQUERY_PARAM = "?phoneno={0}&cardnum={1}&&key={2}";
public static final String openId = 您的openid;
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();
}
public static void recharge(String phoneNo, String cardnum, String orderId) throws IOException {
//OpenID+key+phoneno+cardnum+orderid
String sign = MD5Util.MD5(openId + key + phoneNo + cardnum + orderId);
//拼接地址与参数
String url = apiUrl_recharge + MessageFormat.format(HF_RECHARGE_PARAM, sign, phoneNo, cardnum, 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": {
"cardid": "1900212",
"cardnum": "1",
"ordercash": 49.25,
"cardname": "江苏电信话费50元直充",
"sporder_id": "20141120174602882",
"uorderid":"2014123115121",
"game_userid": "18913515122",
"game_state": "0"
},
"error_code": 0
}
话费—-订单状态查询:
请求参数
名称 |
必填 |
类型 |
说明 |
key |
是 |
String |
在个人中心->我的数据,接口名称上方查看 |
orderid |
是 |
String |
商家订单号,8-32位字母数字组合,请填写已经成功提交的订单号 |
代码示例
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_hf {
private static OkHttpClient client;
private static final String apiUrl_ordersta = "http://op.tianjurenhe.com/ofpay/mobile/ordersta";
public static final String HF_ORDERSTA_PARAM = "?orderid={0}&key={1}";
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();
}
public static void ordersta(String orderId) throws IOException {
//拼接地址与参数
String url = apiUrl_ordersta + MessageFormat.format(HF_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": {
"uordercash": "5.000",
"sporder_id": "20150511163237508",
"game_state": "1"
},
"error_code": 0
}