腾讯云 兑换码 查询软件类商品兑换码信息
来源:互联网 发布:制作app直播软件 编辑:程序博客网 时间:2024/04/20 13:43
import java.io.IOException;import java.net.URLEncoder;import javax.crypto.Mac;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import org.apache.http.HttpStatus;import org.apache.http.client.ClientProtocolException;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.protocol.BasicHttpContext;import org.apache.http.util.EntityUtils;import sun.misc.BASE64Encoder;/** * 腾讯云 兑换码 查询软件类商品兑换码信息 * */public class Tenxunyun { private static final String MAC_NAME = "HmacSHA1"; //加密方式 private static final String ENCODING = "UTF-8"; //编码 private static final String secreId = "******"; //个人 API 密钥 secreId private static final String secretKey = "******";//个人 API 密钥 secretKey public static void main(String[] args) throws ClientProtocolException, IOException { Tenxunyun t = new Tenxunyun(); t.redeem("jsfg542g222hdkk541sdf"); } /** * 验证 * @Title: redeem * @param: @param code * @param: @throws ClientProtocolException * @param: @throws IOException * @return: void * @throws */ public void redeem(String code) throws ClientProtocolException, IOException{ //unix时间戳 long stamp = System.currentTimeMillis()/1000L; //随机数 String Nonce = (stamp+1463)+""; Nonce = Nonce.substring(4,Nonce.length()); // 拼接签名原文字符串 对参数排序 拼接请求字符串 公共参数及接口方法参数 String srcStr = "GETmarket.api.qcloud.com/v2/index.php?Action=QueryVoucherData&Nonce=" + Nonce + "&Region=bj&SecretId="+secreId+"&Timestamp=" + stamp + "&voucherCode="+code; //生成签名串 String encode = ""; try { encode = base64Encode(HmacSHA1Encrypt(srcStr, secretKey)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //签名串编码 String keyWord = URLEncoder.encode(encode,ENCODING); String url = "https://market.api.qcloud.com/v2/index.php?Action=QueryVoucherData&Nonce=" +Nonce + "&Region="+"bj"+"&SecretId="+secreId+"&Timestamp=" + stamp + "&Signature=" + keyWord + "&voucherCode="+code; HttpGet get = new HttpGet(url); CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = httpclient.execute(get, new BasicHttpContext()); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { String resBody = EntityUtils.toString(response.getEntity()); System.out.println(resBody); //resBody 转成json 获取 code 判断是否可用 } } /** * base 64 encode * * @param bytes * 待编码的byte[] * @return 编码后的base 64 code */ public static String base64Encode(byte[] bytes) { return new BASE64Encoder().encode(bytes); } /** * HmacSHA1 加密 * @param: @param encryptText * @param: @param encryptKey * @param: @return * @param: @throws Exception * @return: byte[] * @throws */ public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception { byte[] data = encryptKey.getBytes(ENCODING); // 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称 SecretKey secretKey = new SecretKeySpec(data, MAC_NAME); // 生成一个指定 Mac 算法 的 Mac 对象 Mac mac = Mac.getInstance(MAC_NAME); // 用给定密钥初始化 Mac 对象 mac.init(secretKey); byte[] text = encryptText.getBytes(ENCODING); // 完成 Mac 操作 return mac.doFinal(text); }}
阅读全文
2 0
- 腾讯云 兑换码 查询软件类商品兑换码信息
- 对于卡券类兑换的,随机生成兑换码
- 兑换码编码方案实践
- 苹果审核reject理由大全(14):兑换码 兑换码 兑换码
- WAP页面兑换不了商品原因分析
- iOS兑换码框的实现(OC)
- app也有兑换码? 如何使用App Store兑换码
- 如何使用App Store兑换码进行营销
- php批量生成200条8位兑换码
- 积分兑换
- 积分兑换
- 积分兑换
- 兑换积分
- 积分兑换
- 积分兑换
- 兑换零钱
- 钱币兑换
- 硬币兑换
- 来来来,用高德地图实现ofo小黄车地图定位
- Live555流媒体服务器,FFmpeg客户端接收并切片ts流
- 计算机网络学习day5
- curl问题的修正curl_setopt_array(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir
- eclipse 导出jar报错
- 腾讯云 兑换码 查询软件类商品兑换码信息
- imx6ul之OpenWRT有线网络的配置
- vue-router2.0的最简单的例子
- HTML5 前戏
- 第六次实验
- 动物识别系统
- 几个常用的url生成二维码的接口
- 【JQuery】HTML自定义滚动条(mCustomScrollbar)
- 自定义viewgroup获取包裹的listview