[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示例相关推荐

  1. groovy 使用java类_深入学习java中的Groovy 和 Scala 类

    前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...

  2. java 枚举_深入理解Java枚举

    所有知识体系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收录,欢迎Star!再次感谢,愿你早日进入大厂! https:/ ...

  3. opencv java 摄像头_使用OpenCV Java创建Windows摄像头扫码程序

    OpenCV提供了一些基本的Webcam控制接口.用OpenCV C/C++或者Python,可以在任意平台快速创建一个摄像头预览应用.然而使用Java,情况就复杂的多,因为OpenCV Java并没 ...

  4. java横线_知识点:java一些方法会有横线?以Date 过期方法为例

    原因:他们的开发者在升级方法后,添加了@Deprecated注释, 目的是为了提醒我们,这个方法现在已经有新的方法了,不建议继续使用! 比如: JAVA中Date的tolocalstring为什么不建 ...

  5. 本地生活JAVA版本_赶集生活java版

    赶集网java版客户端 特色介绍: * 丰富的特色功能:一键拨号.GPS定位.本地收藏.拍照发帖,比电脑还方便. * 全面的服务功能:房屋租售.二手买卖.火车票转让.家政.开锁等全方位服务. * 极致 ...

  6. 高级java开发_适用于高级Java开发人员的十大书籍

    高级java开发 Java是当今最流行的编程语言之一. 有很多适合初学者的书籍. 但是对于那些使用Java进行过一段时间编程的人来说,其中有些人看起来有些简单和多余. 初学者的书没有带来新鲜有趣的想法 ...

  7. 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

    如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...

  8. java翻译程序_有没有java代码翻译软件?

    展开全部 没有翻译软件,但是能32313133353236313431303231363533e78988e69d8331333365646333编写翻译程序. java 代码翻译实例: 1.输入一个 ...

  9. java安装_在线学习Java编程的最佳方法

    java安装 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好消息是,您 ...

  10. java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上

    首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...

最新文章

  1. P3196 [HNOI2008]神奇的国度(弦图的最小染色问题)
  2. php模拟post上传图片,php模拟post上传图片解决方法
  3. 部署laravel报错:No supported encrypter found. The cipher and / or key length are invalid.
  4. Python中的运算符
  5. qt设置路径为应用程序启动路径
  6. NSTimer--转
  7. Windows内核API HOOK 之 Inline Hook
  8. 0909 对编译原理的想法
  9. c++ 调用程序接口_添加系统调用(返回文件信息)
  10. 登月计划 [扩展回旋阿姆斯特朗算法]
  11. 深入浅出人脸识别原理
  12. Android 自定义软键盘实现 数字九宫格
  13. 从阿里云购买、域名购买、SSL免费购买到SSL集成开发(网络编程安全三)
  14. 程序员用300行代码,让外婆实现语音搜索购物
  15. 因为计算机中丢失d3dx926.dll,win10系统打开程序提示丢失d3dx9 26.dll的解决方法
  16. 当地图与绘画结合,竟然能迸发出这样的精彩
  17. 飞得更高(五)下马威
  18. 计算机术语hpa,hpa(计算机术语)_百度百科
  19. 习题 6.5 有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
  20. Http是传输层吗?TCP是个么层?IP/TCP与HTTP的关系?

热门文章

  1. C语言多文件编程详解
  2. 浅谈视频加密一机一码的具体使用及优势
  3. 国产手机厂商抢占高端,二手机市场不容忽视
  4. 使用链表实现LIFO栈
  5. Java 升级那么快,多个版本如何灵活切换和管理?
  6. 【工作感悟】职场工作感悟(一)
  7. matlab 回声状态网络ESN的时间序列预测
  8. 舒淇放下黎明战胜抑郁 自称没责任感且不会结婚q1h
  9. 如何整合JIRA、FishEye、Crucible进行CodeReview
  10. JS打开新标签页(window.open应用)