`
wangmengbk
  • 浏览: 288805 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

请求微信以及微信支付sign生成

 
阅读更多
/**
 * url请求微信
 * Created by wangmeng on 2017/1/24.
 */
@Service
public class WxHttpHelper {

    private static  final Logger logger = LoggerFactory.getLogger(WxHttpHelper.class);


    @Autowired
private RestTemplate restTemplate;

    @Value("${pay.appKey}")
    private String appkey;

    /**
     * 微信post请求数据
     * @param url 发送请求的url
     * @param content 发送内容
     * @return String 执行结果
     */
public String sendPostMessage(String url,String content){
        logger.info(String.format("请求微信url【%s】,请求微信参数:【%s】",url,content));
        Map<String, Object> map = new LinkedHashMap<String, Object>();
//        map.put(WeChatConstants.URL_ACCESS_TOKEN_NAME, redisServiceImpl.get(RedisConstants.ACCESS_TOKEN_NAME));
url = UrlUtils.setUrlParamValue(url, map);
        String returnMsg = restTemplate.postForObject(url, content, String.class, "");
        logger.info("微信响应结果:{}",returnMsg);
        return returnMsg;
    }


    /**
     * 微信签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名
     * 传入微信返回信息解析后的SortedMap格式参数数据
     * @param params
* @return
*/
public String createSign(SortedMap<String, Object> params){
        StringBuffer sb = new StringBuffer();
        Set es = params.entrySet();
        Iterator it = es.iterator();
        while(it.hasNext()) {
            Map.Entry entry = (Map.Entry)it.next();
            String k = String.valueOf(entry.getKey());
            String v = String.valueOf(entry.getValue());
            if(null != v && !"".equals(v)
                    && !WeChatConstants.SIGN.equals(k) && !WeChatConstants.KEY.equals(k)) {
                sb.append(k + "=" + v + "&");
            }
        }
        sb.append("key=" + appkey);
        String sign = MD5Utils.MD5Encode(sb.toString(),"UTF-8").toUpperCase();
        return sign;
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics