c# sha1签名 微信_微信请求参数生成SHA1签名

package com.dhht.wechat.util;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;

import java.util.Map;

import java.util.SortedMap;

import java.util.TreeMap;

/**

* @Author: sh

* @Description: WechatUtil

* @Date: 17:46 2019/10/15

*/

public class WechatUtil {

final static String KEY_S = "SIGNKEY-";

public static String getSignKey(String url){

return KEY_S+url;

}

/**

* 获取access_token

*

* @param appId

* @param secret

* @return

*/

public static String getAccessToken(String appId, String secret) {

String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret;

JSONObject jsonObject = SendMsgUtil.httpRequest(url, "GET", "{}");// 获取openid

String access_token = jsonObject.getString("access_token");

return access_token;

}

/**

* 获取ticket

*

* @param accessToken

* @return

*/

public static String getJsapiTicket(String accessToken) {

String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";

JSONObject jsonObject = SendMsgUtil.httpRequest(url, "GET", "{}");

String ticket = jsonObject.getString("ticket");

return ticket;

}

public static String geneJSSDKSign(String jsapiTicket, String url) {

Map configMap = new HashMap<>(8);

String nonceStr = DateUtil.get32UUIDMilli();

String timestamp = Long.toString(System.currentTimeMillis() / 1000);

configMap.put("noncestr", nonceStr);

configMap.put("jsapi_ticket", jsapiTicket);

configMap.put("timestamp", timestamp);

configMap.put("url", url);

String sign = gengeSign(configMap);//SignUtils.createSign(configMap, "sha1", mechKey, null);

configMap.put("signature",sign);

configMap.remove("noncestr");

configMap.put("nonceStr",nonceStr);

Map result = new HashMap();

result.put("code",1);

result.put("message","OK");

result.put("data",configMap);

return JSON.toJSONString(result);

}

public static String gengeSign(Map params) {

SortedMap sortedMap = new TreeMap<>(params);

StringBuilder toSign = new StringBuilder();

for (String key : sortedMap.keySet()) {

String value = params.get(key);

toSign.append(key).append("=").append(value).append("&");

}

String val = toSign.toString();

val = val.substring(0,val.lastIndexOf("&"));

System.out.println(val);

String digest = SignatureUtil.sha1Encrypt(val);

return digest;

}

public static void main(String[] args) {

String time = Long.toString(System.currentTimeMillis() / 1000);

System.out.println(time);

System.out.println(geneJSSDKSign("sdfdsfds", "fdfdfd@@8"));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值