亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Home WeChat Applet WeChat Development Wechat development using java to obtain signature graphic introduction

Wechat development using java to obtain signature graphic introduction

Mar 15, 2017 pm 06:02 PM

This article mainly introduces in detail the use of java to obtain signature signatures in WeChat development. Interested friends can refer to it

1. Preface

微信InterfaceThe three parameters noncestr, timestamp, and signature that are ultimately needed for call verification:

Wechat development using java to obtain signature graphic introduction

Next, we will The detailed code for obtaining these three parameters will be given
The environment of this articleeclipse + maven
The technologies used in this article HttpClient, JsonStringTransfermap、sha1Encryption

2. The jar packages that need to be used

The packages that maven depends on are:

1. HttpClient package dependency

<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpcore</artifactId>
 <version>4.4.3</version>
</dependency>
<dependency>
 <groupId>org.apache.httpcomponents</groupId>
 <artifactId>httpclient</artifactId>
 <version>4.5.1</version>
</dependency>

2. json to map related package dependency

<dependency>  
  <groupId>net.sf.json-lib</groupId>  
  <artifactId>json-lib</artifactId>  
  <version>2.4</version> 
  <classifier>jdk15</classifier> 
</dependency>
<dependency>
  <groupId>xom</groupId>
  <artifactId>xom</artifactId>
  <version>1.2.5</version>
</dependency>

3. Running results

Wechat development using java to obtain signature graphic introduction

4. Detailed code


package com.luo.util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class HttpXmlClient {

  public static String post(String url, Map<String, String> params) {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    String body = null;
    HttpPost post = postForm(url, params);
    body = invoke(httpclient, post);
    httpclient.getConnectionManager().shutdown();
    return body;
  }

  public static String get(String url) {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    String body = null;
    HttpGet get = new HttpGet(url);
    body = invoke(httpclient, get);
    httpclient.getConnectionManager().shutdown();
    return body;
  }

  private static String invoke(DefaultHttpClient httpclient,
      HttpUriRequest httpost) {
    HttpResponse response = sendRequest(httpclient, httpost);
    String body = paseResponse(response);
    return body;
  }

  private static String paseResponse(HttpResponse response) {
    HttpEntity entity = response.getEntity();
    String charset = EntityUtils.getContentCharSet(entity);
    String body = null;
    try {
      body = EntityUtils.toString(entity);
    } catch (ParseException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return body;
  }

  private static HttpResponse sendRequest(DefaultHttpClient httpclient,
      HttpUriRequest httpost) {
    HttpResponse response = null;
    try {
      response = httpclient.execute(httpost);
    } catch (ClientProtocolException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return response;
  }

  private static HttpPost postForm(String url, Map<String, String> params) {

    HttpPost httpost = new HttpPost(url);
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();

    Set<String> keySet = params.keySet();
    for (String key : keySet) {
      nvps.add(new BasicNameValuePair(key, params.get(key)));
    }

    try {
      httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }

    return httpost;
  }

  public static void main(String[] args) {
    //獲取access_token
    Map<String, String> params = new HashMap<String, String>();
    params.put("corpid","wx5f24fa0db1819ea2");
    params.put("corpsecret","uQtWzF0bQtl2KRHX0amekjpq8L0aO96LSpSNfctOBLRbuYPO4DUBhMn0_v2jHS-9");
    String xml = HttpXmlClient.post("https://qyapi.weixin.qq.com/cgi-bin/gettoken",params);
    JSONObject jsonMap = JSONObject.fromObject(xml);
    Map<String, String> map = new HashMap<String, String>();
    Iterator<String> it = jsonMap.keys(); 
    while(it.hasNext()) { 
      String key = (String) it.next(); 
      String u = jsonMap.get(key).toString();
      map.put(key, u); 
    }
    String access_token = map.get("access_token");
    System.out.println("access_token=" + access_token);

    //獲取ticket
    params.put("access_token",access_token);
    xml = HttpXmlClient.post("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket",params); 
    jsonMap = JSONObject.fromObject(xml);
    map = new HashMap<String, String>();
    it = jsonMap.keys(); 
    while(it.hasNext()) { 
      String key = (String) it.next(); 
      String u = jsonMap.get(key).toString();
      map.put(key, u); 
    }
    String jsapi_ticket = map.get("ticket");
    System.out.println("jsapi_ticket=" + jsapi_ticket);

    //獲取簽名signature
    String noncestr = UUID.randomUUID().toString();
    String timestamp = Long.toString(System.currentTimeMillis() / 1000);
    String url="http://mp.weixin.qq.com";
    String str = "jsapi_ticket=" + jsapi_ticket +
        "&noncestr=" + noncestr +
        "&timestamp=" + timestamp +
        "&url=" + url;
    //sha1加密
    String signature = SHA1(str);
    System.out.println("noncestr=" + noncestr);
    System.out.println("timestamp=" + timestamp);
    System.out.println("signature=" + signature);
    //最終獲得調(diào)用微信js接口驗(yàn)證需要的三個(gè)參數(shù)noncestr、timestamp、signature
  }

    /** 
   * @author:羅國輝 
   * @date: 2015年12月17日 上午9:24:43 
   * @description: SHA、SHA1加密
   * @parameter:  str:待加密字符串
   * @return: 加密串
  **/
  public static String SHA1(String str) {
    try {
      MessageDigest digest = java.security.MessageDigest
          .getInstance("SHA-1"); //如果是SHA加密只需要將"SHA-1"改成"SHA"即可
      digest.update(str.getBytes());
      byte messageDigest[] = digest.digest();
      // Create Hex String
      StringBuffer hexStr = new StringBuffer();
      // 字節(jié)數(shù)組轉(zhuǎn)換為 十六進(jìn)制 數(shù)
      for (int i = 0; i < messageDigest.length; i++) {
        String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
        if (shaHex.length() < 2) {
          hexStr.append(0);
        }
        hexStr.append(shaHex);
      }
      return hexStr.toString();

    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
    return null;
  }
}


The above is the detailed content of Wechat development using java to obtain signature graphic introduction. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1488
72