微信硬件开发系列教程AA1

12 篇文章 0 订阅
12 篇文章 1 订阅
服务端代码:
 
@RequestMapping (value= "/test" )
     public  ModelAndView goReadCardAnniu2(HttpServletRequest request,HttpServletResponse response){
         
              String appId= "" ; //应用id
              String appsecret= "" ; //应用秘钥
             //1,获取access_token
             AccessToken accessToken = getAccessToken(appId, appsecret);
             String access_token=accessToken.getToken();
             //2,获取调用微信jsapi的凭证
             String ticket = getJsapiTicket(access_token);
             Map<String,String> map = sign(ticket, "http://www.ssss141414141.com/ lanya/test.do" );
         
         request.setAttribute( "timestamp" , map.get( "timestamp" ));
         request.setAttribute( "nonceStr" , map.get( "nonceStr" ));
         request.setAttribute( "signature" , map.get( "signature" ));
         request.setAttribute( "appId" , appId);
         
         return  new  ModelAndView( "/weixin/test" );
     }
 
//获取token
public   String getAccessToken(String appId,String appsecret){
 
 
 
}
 
//getJsapiTicket 获取调用微信jsapi的凭证方法
 
public   String getJsapiTicket(String access_token){
          String getticket_url= "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" ;//接口凭据
         String jsonData=HttpUtil.sendGet(getticket_url+access_token+ "&type=jsapi" "utf-8" 30000 );
         JSONObject jsonObj = JSONObject.fromObject(jsonData);
         String errcode = jsonObj.getString( "errcode" );
         String ticket =  null ;
         if (errcode.equals( "0" )){
             ticket = jsonObj.getString( "ticket" );
         }
         return  ticket;
     }
 
   public  Map<String, String> sign(String jsapi_ticket, String url) {
         Map<String, String> ret =  new  HashMap<String, String>();
         String nonce_str = create_nonce_str();
         String timestamp = create_timestamp();
         String string1;
         String signature =  "" ;
 
         //注意这里参数名必须全部小写,且必须有序
         string1 =  "jsapi_ticket="  + jsapi_ticket +
                   "&noncestr="  + nonce_str +
                   "&timestamp="  + timestamp +
                   "&url="  + url;
         System.out.println(string1);
 
         try
         {
             MessageDigest crypt = MessageDigest.getInstance( "SHA-1" );
             crypt.reset();
             crypt.update(string1.getBytes( "UTF-8" ));
             signature = byteToHex(crypt.digest());
         }
         catch  (NoSuchAlgorithmException e)
         {
             e.printStackTrace();
         }
         catch  (UnsupportedEncodingException e)
         {
             e.printStackTrace();
         }
 
         ret.put( "url" , url);
         ret.put( "jsapi_ticket" , jsapi_ticket);
         ret.put( "nonceStr" , nonce_str);
         ret.put( "timestamp" , timestamp);
         ret.put( "signature" , signature);
 
         return  ret;
     }
     
     private  static  String byteToHex( final  byte [] hash) {
         Formatter formatter =  new  Formatter();
         for  ( byte  b : hash)
         {
             formatter.format( "%02x" , b);
         }
         String result = formatter.toString();
         formatter.close();
         return  result;
     }
 
     private  static  String create_nonce_str() {
         return  UUID.randomUUID().toString();
     }
 
     private  static  String create_timestamp() {
         return  Long.toString(System.currentTimeMillis() /  1000 );
     }
    
 
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值