java话费充值_手机话费充值-java示例
[java]代码库package com.jefferson.utils.interfaceDemo.huafei;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.jefferson.utils.encrypt.Md5Util;
public class ShoujiHuaFei {
// HttpClient请求的相关设置,可以不用配置,用默认的参数,这里设置连接和超时时长(毫秒)
public static RequestConfig config = RequestConfig.custom()
.setConnectTimeout(30000).setSocketTimeout(30000).build();
public static final String key ="********";//申请的接口Appkey
public static final String openId="*******";//在个人中心查询
public static final String telCheckUrl = "http://op.juhe.cn/ofpay/mobile/telcheck?cardnum=*&phoneno=!&key="+key;
public static final String telQueryUrl="http://op.juhe.cn/ofpay/mobile/telquery?cardnum=*&phoneno=!&key="+key;
public static final String onlineUrl="http://op.juhe.cn/ofpay/mobile/onlineorder?key="+key+"&phoneno=!&cardnum=*&orderid=@&sign=$";
public static final String yueUrl="http://op.juhe.cn/ofpay/mobile/yue?key="+key+"&"+"timestamp=%&sign=$";
public static final String orderstaUrl="http://op.juhe.cn/ofpay/mobile/ordersta?key="+key+"&orderid=!";
public static final String orderListUrl="http://op.juhe.cn/ofpay/mobile/orderlist?key="+key;
//---------------------------------------------------------------------------------------------------------------------------------------------
/**
* 1.检测手机号码是否能充值接口
* @param phone 手机号码
* @param cardnum 充值金额,目前可选:5、10、20、30、50、100、300
* @return 返回错码,0为允许充
值的手机号码及金额,其他为不可以或其他错误
* @throws Exception
*/
public static int telCheck(String phone,int cardnum) throws Exception{
int error_code=0;
String result = get(telCheckUrl.replace("*", cardnum+"").replace("!", phone),0);
error_code =JSONObject.fromObject(result).getInt("error_code");
return error_code;
}
/**
* 2.根据手机号和面值查询商品信息
* @param phone 手机号码
* @param cardnum 充值金额,目前可选:5、10、20、30、50、100、300
* @return String类型结果
* @throws Exception
*/
public static String telQuery(String phone,int cardnum) throws Exception{
String result = get(telQueryUrl.replace("*", cardnum+"").replace("!", phone),0);
return result;
}
/**
* 3.依据用户提供的请求为指定手机直接充值
* @param phone 手机号码
* @param cardnum 充值金额,目前可选:5、10、20、30、50、100、300
* @param orderid 商家订单号,8-32位字母数字组合,自定义
* @return 返回String结果
* @throws Exception
*/
public static String onlineOrder(String phone,int cardnum,String orderid) throws Exception{
String result = null;
//Md5Util工具类
String sign = Md5Util.MD5(openId+key+phone+cardnum+orderid);
result = get(onlineUrl.replace("*", cardnum+"").replace("!", phone).replace("@", orderid).replace("$", sign),0);
return result;
}
/**
* 4.查询账户余额
* @return
* @throws Exception
*/
public static String yuE() throws Exception{
String timestamp = System.currentTimeMillis()/1000+"";
String sign = Md5Util.MD5(openId+key+timestamp);
String result =get(yueUrl.replace("%", timestamp).replace("$", sign),0);
return result;
}
/**
* 5.订单状态查询
* @param orderid 商家订单号
* @return 订单结果
* @throws Exception
*/
public static String orderSta(String orderid) throws Exception{
return get(orderstaUrl.replace("1", orderid), 0);
}
/**
* 6.历史订单列表
* @return
* @throws Exception
*/
public static String orderList() throws Exception{
return get(orderListUrl,0);
}
/**工具类方法
* get 网络请求
* @param url 接收请求的网址
* @param tts 重试
* @return String类型 返回网络请求数据
* @throws Exception 网络异常
*/
public static String get(String url,int tts) throws Exception{
if(tts>3){//重试3次
return null;
}
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String result = null;
try {
HttpGet httpGet = new HttpGet(url);
httpGet.setConfig(config);
response = httpClient.execute(httpGet);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = ConvertStreamToString(resEntity.getContent(), "UTF-8");
}
EntityUtils.consume(resEntity);
return result;
}catch(IOException e){
return get(url, tts++);
}finally {
response.close();
httpClient.close();
}
// 得到的是JSON类型的数据需要第三方解析JSON的jar包来解析
}
/**工具类方法
* 此方法是把传进的字节流转化为相应的字符串并返回,此方法一般在网络请求中用到
* @param is 输入流
* @param charset 字符格式
* @return String 类型
* @throws Exception
*/
public static String ConvertStreamToString(InputStream is, String charset)
throws Exception {
StringBuilder sb = new StringBuilder();
try (InputStreamReader inputStreamReader = new InputStreamReader(is,
charset)) {
try (BufferedReader reader = new BufferedReader(inputStreamReader)) {
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\r\n");
}
}
}
return sb.toString();
}
}
java话费充值_手机话费充值-java示例相关推荐
- groovy 使用java类_深入学习java中的Groovy 和 Scala 类
前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...
- java 枚举_深入理解Java枚举
所有知识体系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收录,欢迎Star!再次感谢,愿你早日进入大厂! https:/ ...
- opencv java 摄像头_使用OpenCV Java创建Windows摄像头扫码程序
OpenCV提供了一些基本的Webcam控制接口.用OpenCV C/C++或者Python,可以在任意平台快速创建一个摄像头预览应用.然而使用Java,情况就复杂的多,因为OpenCV Java并没 ...
- java横线_知识点:java一些方法会有横线?以Date 过期方法为例
原因:他们的开发者在升级方法后,添加了@Deprecated注释, 目的是为了提醒我们,这个方法现在已经有新的方法了,不建议继续使用! 比如: JAVA中Date的tolocalstring为什么不建 ...
- 本地生活JAVA版本_赶集生活java版
赶集网java版客户端 特色介绍: * 丰富的特色功能:一键拨号.GPS定位.本地收藏.拍照发帖,比电脑还方便. * 全面的服务功能:房屋租售.二手买卖.火车票转让.家政.开锁等全方位服务. * 极致 ...
- 高级java开发_适用于高级Java开发人员的十大书籍
高级java开发 Java是当今最流行的编程语言之一. 有很多适合初学者的书籍. 但是对于那些使用Java进行过一段时间编程的人来说,其中有些人看起来有些简单和多余. 初学者的书没有带来新鲜有趣的想法 ...
- 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架
如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...
- java翻译程序_有没有java代码翻译软件?
展开全部 没有翻译软件,但是能32313133353236313431303231363533e78988e69d8331333365646333编写翻译程序. java 代码翻译实例: 1.输入一个 ...
- java安装_在线学习Java编程的最佳方法
java安装 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好消息是,您 ...
- java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上
首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...
最新文章
- P3196 [HNOI2008]神奇的国度(弦图的最小染色问题)
- php模拟post上传图片,php模拟post上传图片解决方法
- 部署laravel报错:No supported encrypter found. The cipher and / or key length are invalid.
- Python中的运算符
- qt设置路径为应用程序启动路径
- NSTimer--转
- Windows内核API HOOK 之 Inline Hook
- 0909 对编译原理的想法
- c++ 调用程序接口_添加系统调用(返回文件信息)
- 登月计划 [扩展回旋阿姆斯特朗算法]
- 深入浅出人脸识别原理
- Android 自定义软键盘实现 数字九宫格
- 从阿里云购买、域名购买、SSL免费购买到SSL集成开发(网络编程安全三)
- 程序员用300行代码,让外婆实现语音搜索购物
- 因为计算机中丢失d3dx926.dll,win10系统打开程序提示丢失d3dx9 26.dll的解决方法
- 当地图与绘画结合,竟然能迸发出这样的精彩
- 飞得更高(五)下马威
- 计算机术语hpa,hpa(计算机术语)_百度百科
- 习题 6.5 有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
- Http是传输层吗?TCP是个么层?IP/TCP与HTTP的关系?