import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.SortedMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PayCommonUtil {
private static Logger log = LoggerFactory.getLogger(PayCommonUtil.class);
/**
* 取出一个指定长度大小的随机正整数.
*
* @param length
* int 设定所取出随机数的长度。length小于11
* @return int 返回生成的随机数。
*/
public static String buildRandom(int length) {
int num = 1;
double random = Math.random();
if (random < 0.1) {
random = random + 0.1;
}
for (int i = 0; i < length; i++) {
num = num * 10;
}
return ((int) (random * num) + "");
}
public static String CreateNoncestr(int length) {
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
String res = "";
for (int i = 0; i < length; i++) {
Random rd = new Random();
res += chars.indexOf(rd.nextInt(chars.length() - 1));
}
return res;
}
public static String CreateNoncestr() {
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
String res = "";
for (int i = 0; i < 32; i++) {
Random rd = new Random();
res += chars.charAt(rd.nextInt(chars.length() - 1));
}
return res;
}
/**
* @author
* @date 2014-12-5下午2:29:34
* @Description:sign签名
* @param characterEncoding
* 编码格式
* @param parameters
* 请求参数
* @return
*/
@SuppressWarnings("unchecked")
public static String createSign(String characterEncoding, SortedMap<Object, Object> parameters) {
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();
Iterator it = es.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
Object v = entry.getValue();
if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
}
}
sb.append("key=" + ConfigUtil.API_KEY);
String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
return sign;
}
/**
* @author
* @date 2015-10-10下午2:29:34
* @Description:signature签名
* @param str
* 参数 key 集合
* @param parameters
* 请求参数
* @return
*/
@SuppressWarnings("unchecked")
public static String createSignature(String[] str, SortedMap<Object, Object> parameters) {
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();
for (int i = 0; i < str.length; i++) {
Iterator it = es.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
Object v = entry.getValue();
if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k) && k.equals(str[i])) {
sb.append(k + "=" + v + "&");
}
}
}
String string1=sb.toString().substring(0,sb.toString().length()-1);
log.error("string1====="+string1);
// SHA1加密
String signature = null;
try {
signature = new SHA1().getDigestOfString(string1.getBytes("UTF-8")).toLowerCase();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return signature;
}
/**
* @author
* @date 2014-12-5下午2:32:05
* @Description:将请求参数转换为xml格式的string
* @param parameters
* 请求参数
* @return
*/
@SuppressWarnings("unchecked")
public static String getRequestXml(SortedMap<Object, Object> parameters) {
StringBuffer sb = new StringBuffer();
sb.append("<xml>");
Set es = parameters.entrySet();
Iterator it = es.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
String v = (String) entry.getValue();
if ("attach".equalsIgnoreCase(k) || "body".equalsIgnoreCase(k) || "sign".equalsIgnoreCase(k)) {
sb.append("<" + k + ">" + "<![CDATA[" + v + "]]></" + k + ">");
} else {
sb.append("<" + k + ">" + v + "</" + k + ">");
}
}
sb.append("</xml>");
return sb.toString();
}
/**
* @author
* @date 2014-12-3上午10:17:43
* @Description:返回给微信的参数
* @param return_code
* 返回编码
* @param return_msg
* 返回信息
* @return
*/
public static String setXML(String return_code, String return_msg) {
return "<xml><return_code><![CDATA[" + return_code + "]]></return_code><return_msg><![CDATA[" + return_msg + "]]></return_msg></xml>";
}
}
相关推荐
包含生成v3签名,发送请求。解析数据,注释齐全,新手都可以看的懂,下载就能用,省去工作量。
下面就为大家带来一篇基于微信签名signature获取(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
微信对话生成器是一款实用工具,主要用于模拟生成微信聊天对话界面,尤其适用于个人或企业在制作教程、演示、剧本创作等场景中。V4.5版本是该软件的一个免费版本,提供了更多的功能和优化体验。 首先,我们要理解...
微信对话生成器是一款用于创建虚拟微信对话的网页应用,它主要服务于自媒体、全媒体以及抖音短视频创作者,帮助他们制作逼真的微信聊天场景,增强内容的趣味性和互动性。这个网页源码包含了实现这一功能的关键技术与...
微信公众号支付签名生成工具类和xml和map转换工具类和双向验证请求工具类
内附php,node以及python的生成代码,可根据自己情况使用。
微信分享invalid signature签名错误,是很多开发者在集成微信JS-SDK时可能遇到的问题,本文将深入解析这一错误及其解决方法。 ### 1. 签名算法的确认 当遇到invalid signature错误时,首先需要确认使用的签名算法...
这款软件是可以生成微信好友聊天对话截图 请勿行骗和做违法事情 软件是电脑端的,可以自定义聊天记录 比如时间/提示框、文字、转账、收账、语音、图片、红包等还有对方头像和昵称都可以 用来整蛊好友女朋友可以用上 ...
《微信对话生成器:自定义微信聊天截图工具详解》 在数字化时代,微信已经成为人们日常生活中不可或缺的通讯工具。在工作、学习乃至娱乐场景中,微信对话截图常常扮演着记录和分享信息的角色。然而,有时候我们需要...
"微信对话生成器"是一款专为用户设计的软件工具,其主要功能是模拟生成微信聊天对话模式。无论是安卓用户还是苹果手机用户,都可以利用这款工具进行对话内容的模拟创建。这款软件的出现,为需要模拟微信聊天场景的人...
不用在小程序里写签名代码了,直接请求接口返回的Demo,参数替换一下即可。
本压缩包文件“微信开放平台生成应用签名.rar”提供了一个便捷的工具,帮助开发者快速获取应用签名,以便在微信开放平台成功注册并发布移动应用。 应用签名在Android系统中扮演着核心角色。它是对APK文件进行数字...
"微信对话生成器.rar"是一个压缩包,包含用于创建虚拟微信对话的软件工具。这个工具可能主要用于模拟微信聊天场景,例如在设计用户界面、测试应用功能或者制作教学材料时。以下是一些关于这个主题的重要知识点: 1....
微信开发平台的签名生成工具,获取手机上已安装的app的签名 微信开发平台的签名生成工具,获取手机上已安装的app的签名 微信开发平台的签名生成工具,获取手机上已安装的app的签名 微信开发平台的签名生成工具,获取...
微信对话生成器,抖音微信聊天记录视频制作工具,是一款模拟微信聊天的工具,可以添加不同用户角色进行对话,支持发送文字、语音、图片、红包、转账等。可以将聊天记录一键生成为图片、长截图、动态图片和视频。 ...
`PayCommonUtil`中的“再次签名”可能是指在原有签名基础上进行二次加密或者在不同阶段再次生成签名,以增强安全策略。 支付功能则涉及调用支付宝或微信支付的接口,发起支付请求并处理返回的结果。这包括支付成功...
微信对话转账生成器是一款专为电脑用户设计的软件工具,版本为V4.4,具有绿色免安装的特点,尤其适用于iPhone 6 plus设备。这款软件的主要功能是让用户能够自定义生成微信聊天对话和转账记录,方便在特定场景下进行...
微信签名工具,即`Gen-Signature-android.apk`,是一个专为开发者设计的工具,用于生成和管理Android应用的签名文件。这个工具可以帮助开发者对他们的APK进行签名,以确保其能够在用户的设备上正常安装和运行。由于...
微信接口的调用需要签名,要动态获取.jsapi_ticket是公众号用于调用微信JS接口的临时票据,正常情况下...相应的Jar文件我也放上了,加上相应的参数,即可完成签名的生成.大家注意下我上传的时间,因为微信的接口变动比较频繁