腾讯云 兑换码 查询软件类商品兑换码信息

来源:互联网 发布:制作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);    }}