武电实业卡密接口对接经验分享

以往卡密都是电信直接提供txt文件我们这边再导入数据库中,现在电信要求厂家获取卡密必须通过接口调用,此次对接主要用到三个方面知识:

1.通过http Post请求方式将JSON数据放入body中传入,http数据交互post方式常用DefaultHttpClient(需要导入httpclient-4.1.jar,httpcode-4.1.jar,commons-logging-1.1.1.jar)

 1 public static String post(String url, String content){
 2         String charsetName = "utf-8";
 3         DefaultHttpClient httpclient = null;
 4         HttpPost post = null;
 5         try {
 6             httpclient = new DefaultHttpClient();
 7             post = new HttpPost(url);
 8             post.setHeader("Content-Type", "application/json;charset=" + charsetName);
 9             post.setEntity(new StringEntity(content, charsetName));
10             HttpResponse response = httpclient.execute(post);
11             HttpEntity entity = response.getEntity();
12             String rsp = EntityUtils.toString(entity, charsetName);
13             return rsp;
14         } catch (Exception e) {
15             throw new RuntimeException(e);
16         } finally {
17             try {
18                 httpclient.getConnectionManager().shutdown();
19             } catch (Exception ignore) {}
20         }
21     }

2.需要将传入的code以AES加密:

武电实业提供文档如下:

主要对传入json串中的code值进行加密(早期的对称加密方式为DES,DES被破解,又出来3DES加密算法基于DES基础之上,所以也很快被破解了,目前最为流行的为AES),博客园里有位博友的文章写的不错,大家有兴趣的可以看看: http://www.cnblogs.com/block2016/p/5596676.html

加密方法如下:

 1 public static String Encrypt(String sSrc, String sKey) throws Exception {
 2         if (sKey == null) {
 3             System.out.print("Key为空null");
 4             return null;
 5         }
 6         // 判断Key是否为16(此处为AES 128位)
 7         if (sKey.length() != 16) {
 8             System.out.print("Key长度不是16");
 9             return null;
10         }
11         byte[] raw = sKey.getBytes();
12         SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
13         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式"
14         IvParameterSpec iv = new IvParameterSpec("1Zja83t262AXxn13".getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度
15         cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
16         byte[] encrypted = cipher.doFinal(sSrc.getBytes());
17
18         return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
19     }

3.返回值的获取,通过org.json.JSONObject(需要导入json.jar)对象解析json数据(android处理json数据经常用到,我们iptv业务处理json数据是采用jackson,需要导入jackson-all-1.9.5.jar);

以下我将两种方式简单的写了出来:

 1     /**
 2      * {"dataInfo":{"cardNo":"itv200085","cardPwd":"ps2000085"},"message":"","status":"0"}
 3      * 对上面的json进行解析,获取所需要的值cardNo
 4      */
 5     /**
 6      * JSONObject方式解析json串
 7      */
 8     public static String JSONObectToString(String json){
 9         try {
10             JSONObject jsonObject = new JSONObject(json);
11             JSONObject dataInfo = jsonObject.getJSONObject("dataInfo");
12             String cardNo = dataInfo.getString("cardNo");
13             return cardNo;
14         } catch (JSONException e) {
15             e.printStackTrace();
16         }
17         return null;
18     }
19     /**
20      * Jackson方式解析json串
21      */
22     public static String JacksonToString(String json){
23         ObjectMapper mapper = new ObjectMapper();
24         try {
25             Map object = mapper.readValue(json, Map.class);
26             Map map = new HashMap<>();
27             map = (Map) object.get("dataInfo");
28             String cardNo = (String) map.get("cardNo");
29             return cardNo;
30         } catch (IOException e) {
31             e.printStackTrace();
32         }
33         return null;
34     }

若以上有哪些语句不对的麻烦大家及时指出,相互学习相互进步,谢谢阅读。


2         if (sKey == null) {
 3             System.out.print("Key为空null");
 4             return null;
 5         }
 6         // 判断Key是否为16位
 7         if (sKey.length() != 16) {
 8             System.out.print("Key长度不是16位");
 9             return null;
10         }
11         byte[] raw = sKey.getBytes();
12         SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
13         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式"
14         IvParameterSpec iv = new IvParameterSpec("1Zja83t262AXxn13".getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度
15         cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
16         byte[] encrypted = cipher.doFinal(sSrc.getBytes());
17
18         return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
1
时间: 2024-10-07 16:13:14

武电实业卡密接口对接经验分享的相关文章

电商平台适用基础快递查询api接口对接demo解决方案

电商企业从接收订单-配货-打印快递单到后期的快递员收件-快递配送-轨迹查询-签收短信通知等,都需要快递接口的接入.整理目前可以实现如上服务的有 1.各家快递公司:提供快递查询.电子面单打印等2.快递100:提供在线寄件.快递查询等3.菜鸟:提供快递查询.电子面单打印等4.快递鸟:提供预约寄件.快递查询.电子面单打印.代收货款.短信服务等 各家快递公司提供的是一级接口,快递100.菜鸟和快递鸟是集成接口,对于使用快递比较多的企业来说,集成接口相对更好维护一些.所以一般电商都会选择集成的接口.快递鸟

一个硬件高手的设计经验分享

一个硬件高手的设计经验分享 一:成本节约 现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K吧 点评:市场上不存在5K的阻值,最接近的是 4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K高4倍和2倍.20%精度的电阻阻值只有1.1.5.2.2. 3.3.4.7.6.8几个类别(含10的整数倍):类似地,20%精度的电容也只有以上几种值,如果选了其它的值就必须使用更高的精度,成本就翻了几倍,却不能带来任何好处. 现象二:面板上的指示灯选什么颜色呢

关于Altera LVDS 经验分享

http://www.alteraforum.com.cn/showtopic-355-1.aspx 骏龙科技_技术资料汇总52:关于Altera LVDS 经验分享 作者:上海骏龙 毛老师 相信大家在帮助客户调试altea lvds接口的时候,都遇到过不少问题.下面两个应该是最常见的: (一)字节对齐字节对齐是我遇到的最多的,收到的数据并不是错了,只是起始bit的位置变了.使用bitslip,比特滑动控制,可以解决这个问题,但有更为简单的方法:只要随路时钟与数率的比值(W),与串化因子(J)相

公司实习经验分享

近期在一家创业公司做技术 .由于是从一開始跟着做技术,所以到如今给了个技术总监的title. 公司的全部程序都是由我一个人来维护的.公司是做电商创业. pc端从前端html到css 到js到smarty模板 到php到数据库都是一手调较. wap端从为了參加百度推广的一千元优惠活动进行了优化才在最后几分钟成功评上三颗星. app端android也是我一手改动.近期可能ios端也要我来做了.. 经验分享: 原来认为创业真是简单. 尤其是技术型创业.可是经历过这次就不一样了.原来做站点是要申请icp

经验分享:微信怎么关联qq号?

微信怎么关联qq号!你的QQ好友都能加到你,或者你可以用你的手机搜索你手机名单里的微信好友, 当然这些也可以不公开,设置到谁也找不到你.经常看网上网友碰到这样的问题"微信怎么关联qq号"如何将QQ和微信关联,也就是说QQ不在线,微信在线的时候也能收到QQ好友发过来的消息!! 第一步:设置-我的帐号-QQ号 填写正确: 第二步:设置-功能-启用QQ离线助手 -接收离线消息后面的勾打上 这样就能微信在线的时候也能收到QQ好友发过来的消息! 但是微信有一缺点,你必须登陆 或者后台微信 它才能

大数据经验分享

大数据经验分享 随着互联网的发展,尤其是近期互联网大会召开,再一次谈到大数据,大数据发展趋势已经成为一种必然.那么我们怎样去迎接这样一个新的数据时代?我们可以看到越来越多的人想学习大数据,可是却无从下手,根据自己的经验为大家分享一下大数据的知识: 一.大数据是什么?它的特征? 大数据指一般的软件工具难以捕捉.管理和分析的大容量数据. 大数据有4V特征:Volume(大量).Velocity(实时).Variety(多样).Value(价值). 大数据(big data),或称海量资料,指的是所涉

微信登陆,微信SDK授权登陆经验分享

From:http://www.eoeandroid.com/thread-547012-1-1.html 最近因为项目需要做了微信登陆,好像也是微信最近才放出来的接口.还需要申请才能有权限实现授权.其实也比较简单,跟新浪微博和qq授权登陆差不多.不过还是有点差别,不知道是微信sdk本身就没有完善还是其他问题.会有一点蛋疼的地方,下面会细说.(由于等级不够,不能发在经验分享区,只能先写在这里了.希望对要做微信登陆的朋友有帮助,如果有不对的地方还希望大家直言不讳)<ignore_js_op> 首

免费圆通电子面单接口对接

电子面单接口是快递鸟提供给独立电商.仓储管理系统.物流供应链等物流系统平台使用的下单接口,满足客户在线发货需求并提供打印面单的服务,客户通过网络选择物流公司发送请求通知贵公司有快递要发货,把数据通过此接口转发到快递鸟,由快递鸟为您通知对应的快递公司快递员上门取件.电子面单成功下单后,快递鸟系统内将自动订阅,一旦轨迹发生变化时,快递鸟将调用客户方推送接收接口.同时若客户使用代收货款服务,快递鸟会将代收货款的货款状态独立推送给用户. 一.接口描述 (1)订单编号(OrderCode)不可重复提交,重

企业使用VMware vSphere进行服务器虚拟化的经验分享

企业使用VMware vSphere进行服务器虚拟化的经验分享 对于很多中小企业来说,虚拟化已经成为节省IT开支的一种重要手段,下面就根据公司Vmware虚拟化产品部署案例,同大家来详细分享一下在使用vSphere产品组建虚拟化数据中心的一些小小经验,希望对企业虚拟化产品以及服务器.存储选择有所帮助. 一.虚拟化产品的选择 在组建虚拟化数据中心时,虚拟化产品选择至关重要,诚恺科技作为专业的虚拟化解决方案提供商,一直以来都选择的是VMware vSphere:其实,在此期间,我们也选择过其它产品,