修改部分,微信推送事件,lkl的部分配置
This commit is contained in:
@@ -89,6 +89,8 @@ public class ParameterConfig {
|
||||
*/
|
||||
@Value("${parameter.APPLETS_APPID}")
|
||||
public String APPLETS_APPID;
|
||||
@Value("${parameter.APPLETS_SECRET}")
|
||||
public String APPLETS_SECRET;
|
||||
/**
|
||||
* AppSecret
|
||||
*/
|
||||
@@ -272,6 +274,7 @@ public class ParameterConfig {
|
||||
ParametersUtil.WECHAT_RATE = WECHAT_RATE;
|
||||
ParametersUtil.APPID = APPID;
|
||||
ParametersUtil.APPLETS_APPID = APPLETS_APPID;
|
||||
ParametersUtil.APPLETS_SECRET = APPLETS_SECRET;
|
||||
ParametersUtil.APPSECRET = APPSECRET;
|
||||
ParametersUtil.PID = PID;
|
||||
ParametersUtil.KEY = KEY;
|
||||
|
||||
@@ -45,6 +45,10 @@ public class ParametersUtil {
|
||||
* 小程序付款的appid
|
||||
*/
|
||||
public static String APPLETS_APPID;
|
||||
/**
|
||||
* 小程序密钥
|
||||
*/
|
||||
public static String APPLETS_SECRET;
|
||||
/**
|
||||
* AppSecret
|
||||
*/
|
||||
|
||||
@@ -113,7 +113,7 @@ public class RSAUtils {
|
||||
|
||||
public static PrivateKey getPrivateKey(String key) throws Exception {
|
||||
byte[] keyBytes;
|
||||
keyBytes = Base64.getDecoder().decode(key);
|
||||
keyBytes = Base64.getMimeDecoder().decode(key);
|
||||
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
|
||||
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
|
||||
return keyFactory.generatePrivate(keySpec);
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
package cn.pluss.platform.util;
|
||||
|
||||
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.Key;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.NoSuchProviderException;
|
||||
import java.security.SecureRandom;
|
||||
import java.security.Security;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.KeyGenerator;
|
||||
import javax.crypto.NoSuchPaddingException;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import cn.pluss.platform.exception.MsgException;
|
||||
import org.bouncycastle.crypto.CryptoException;
|
||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||
import org.bouncycastle.util.encoders.Base64;
|
||||
|
||||
import static org.bouncycastle.util.encoders.Base64.toBase64String;
|
||||
|
||||
//import com.lakala.zf.idry.yzt.exception.CryptoException;
|
||||
|
||||
|
||||
public class SM4Util {
|
||||
|
||||
public static final String ALGORITHM_NAME = "SM4";
|
||||
public static final String ALGORITHM_NAME_ECB_PADDING = "SM4/ECB/PKCS5Padding";
|
||||
|
||||
// SM4算法目前只支持128位(即密钥16字节)
|
||||
public static final int DEFAULT_KEY_SIZE = 128;
|
||||
|
||||
public static final String ENCODING = "UTF-8";
|
||||
|
||||
|
||||
static {
|
||||
Security.addProvider(new BouncyCastleProvider());
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成Base64编码的密钥
|
||||
*
|
||||
* @return Base64编码的密钥
|
||||
* @throws CryptoException
|
||||
*/
|
||||
public static String generateKeyToBase64() throws CryptoException {
|
||||
return toBase64String(generateKey());
|
||||
}
|
||||
|
||||
public static byte[] generateKey() throws CryptoException {
|
||||
return generateKey(DEFAULT_KEY_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成Base64编码的密钥
|
||||
*
|
||||
* @param keySize 密钥长度 单位为bit
|
||||
* @return Base64编码的密钥
|
||||
* @throws CryptoException
|
||||
*/
|
||||
public static String generateKeyToBase64(int keySize) throws CryptoException {
|
||||
return toBase64String(generateKey(keySize));
|
||||
}
|
||||
|
||||
public static byte[] generateKey(int keySize) throws CryptoException {
|
||||
KeyGenerator kg = null;
|
||||
try {
|
||||
kg = KeyGenerator.getInstance(ALGORITHM_NAME, BouncyCastleProvider.PROVIDER_NAME);
|
||||
} catch (Exception e) {
|
||||
throw new CryptoException("SM4Util generateKey error:", e);
|
||||
}
|
||||
kg.init(keySize, new SecureRandom());
|
||||
return kg.generateKey().getEncoded();
|
||||
}
|
||||
|
||||
|
||||
public static byte[] encrypt_ECB_Padding(byte[] key, byte[] data) throws CryptoException {
|
||||
try {
|
||||
Cipher cipher = generateECBCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.ENCRYPT_MODE, key);
|
||||
return cipher.doFinal(data);
|
||||
} catch (Exception e) {
|
||||
throw new CryptoException("SM4Util encrypt_ECB_Padding error:", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ECB_PKCS5Padding 加密,返回Base64编码后的密文
|
||||
*
|
||||
* @param key base64
|
||||
* @param data 正常明文数据
|
||||
* @return
|
||||
* @throws MsgException
|
||||
*/
|
||||
public static String encrypt(String key, String data) throws CryptoException {
|
||||
try {
|
||||
Cipher cipher = generateECBCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.ENCRYPT_MODE, Base64.decode(key));
|
||||
byte[] enData =cipher.doFinal(data.getBytes(ENCODING));
|
||||
return Base64.toBase64String(enData);
|
||||
} catch (Exception e) {
|
||||
throw new CryptoException("SM4Util encrypt_ECB_Padding error:", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ECB_PKCS5Padding 解密 ,返回正常明文数据
|
||||
*
|
||||
* @param key base64
|
||||
* @param cipherText 返回Base64编码后的密文
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String decrypt(String key, String cipherText) throws CryptoException {
|
||||
try {
|
||||
Cipher cipher = generateECBCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.DECRYPT_MODE, Base64.decode(key));
|
||||
byte[] data =cipher.doFinal(Base64.decode(cipherText));
|
||||
return new String(data,ENCODING);
|
||||
} catch (Exception e) {
|
||||
throw new CryptoException("SM4Util decrypt_ECB_Padding error:", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static byte[] decrypt_ECB_Padding(byte[] key, byte[] cipherText) throws CryptoException {
|
||||
try {
|
||||
Cipher cipher = generateECBCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.DECRYPT_MODE, key);
|
||||
return cipher.doFinal(cipherText);
|
||||
} catch (Exception e) {
|
||||
throw new CryptoException("SM4Util decrypt_ECB_Padding error:", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static Cipher generateECBCipher(String algorithmName, int mode, byte[] key)
|
||||
throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException,
|
||||
InvalidKeyException {
|
||||
Cipher cipher = Cipher.getInstance(algorithmName, BouncyCastleProvider.PROVIDER_NAME);
|
||||
Key sm4Key = new SecretKeySpec(key, ALGORITHM_NAME);
|
||||
cipher.init(mode, sm4Key);
|
||||
return cipher;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
try {
|
||||
String key = "dRzPaYd7z6vYn9sL/JTZ3A==";
|
||||
|
||||
String data = "阿萨德哈的哦已我居然挤公交大幅度AAAADDF";
|
||||
|
||||
String cipherText = encrypt(key, data);
|
||||
|
||||
System.out.println("cipherText " + cipherText);
|
||||
|
||||
String deData = decrypt(key, cipherText);
|
||||
|
||||
System.out.println("deData " + deData);
|
||||
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -84,13 +84,13 @@ public class WxConstants {
|
||||
|
||||
public static final Integer RESULT_SUCCESS_CODE = 0;
|
||||
|
||||
public static final Integer QR_EXPIRE_SECONDS = 2592000;
|
||||
public static final Integer QR_EXPIRE_SECONDS = 25920000;
|
||||
|
||||
/**
|
||||
* 微信会员开卡通知模板ID
|
||||
* @date: 2021/12/9 18:17
|
||||
*/
|
||||
public static final String VIP_CARD_SUCCESS_TEMPLATE_ID = "Hf_WLVwVAc0HD4KV2_zLD0vTgiw4jpZ-OkcN4lIffUA";
|
||||
public static final String VIP_CARD_SUCCESS_TEMPLATE_ID = "AEEmXqtyvSIppWOX-RWglgU8Wc8DxSNDi4xXq7iles0";
|
||||
|
||||
/**
|
||||
* 会员卡余额变动通知模板ID
|
||||
|
||||
@@ -101,6 +101,8 @@ parameter:
|
||||
# wxfffc7bff64c7a11e
|
||||
#小程序付款APPID
|
||||
APPLETS_APPID: wxc2bb94c0ddda1032
|
||||
#小程序密钥
|
||||
APPLETS_SECRET: 625cbce8772629312e42e8278a8d6889
|
||||
APPSECRET: 4e00bbf3fc75a1ff68ce866fd13f2bcc
|
||||
# b84ee0efaa0d9a649746ac65525f8e10
|
||||
KEY: 微信原生加密用的KEY
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
lkl:
|
||||
private_key: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGxrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhDZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbWdhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCNrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK15quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4mE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7qCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZKNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAKTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gHSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0Zr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLvAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeIRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlkeMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw48zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBPscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDibEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCnLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEzNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3jAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilqCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6QsFLQgFyXgvDnzr/o+hQJelW
|
||||
@@ -24,13 +24,13 @@ ys:
|
||||
## 进件URL前缀v2
|
||||
auditDomainV2: https://ouser.ysepay.com:6443/
|
||||
## 机构号ID
|
||||
src: 3520000052
|
||||
src: 3520000064
|
||||
## 代理商编号
|
||||
agentNoV2: 801521000002UUS
|
||||
agentNoV2: 801521000002WJW
|
||||
## 进件私钥v2
|
||||
priKeyV2: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD2J82Gg79Tk8HZ9Zl7EOeLwvUn41c4ktUg6jveIhYLhT/PW5hpPAtgKXd9BvhtpfXhzbK6U9UURKhBgFIkQ+oIJQNfbB/F2jdVK9ke3IYi0/TXHMnY63x43qxciLeAOt+LxdhHn6ZImV4MsRkPjF/zLsaJrPOPWbc2m4T1yvinfzkrxhZaWn1dj4+IdyO3tA/juXCjydQqKR2kSqJlo6gdT9N3RIJ+ETda2UUahZyYXBfjyxFQEaOXthm6krZH1zBHs510Og6bQJQHjMmTskkslWvj38qPDfsuC4tq0Hgbu3LcyiX9vGYzQoGOaGhDEiNPObdDlOuh5gn0slRmg+PxAgMBAAECggEAJRvrCBRki50C5HD6Kmtp/M/vVYwYYhcAum2ViO9qk2ILNJ+CYpsCvASEVvzuBtm2L8xq3Vw2C1AubXGC8KSsa33o/EG4qIM1REnP+a8VKbr6dlOIuoMFyNMI+QpDX7mAafnxmRqgXuGAJDmupYFsFaU/mRHRxhKoZDsd2FA5HEbuDI9SJp86keE72NHsxyqfDIZyIk3Z8k7HZY2wg3FW+YaOKQBHVA9JYvhfZMeaQ1ymrA0IAqWpUqjLkqAa2Qa6xUsbj+QhvrkBCE48i8duamXKDSOaLfkqTb8IyxOM9eTsFwLVGEuZQrkhrLxdrg5aBPvu81pIJME6SgrquJJ84QKBgQD/MAFLiWU0wDJ4Hqf2jKa5vgrBmCqOsANBc079s8gDXM4zbsG/TjMHPDmiOGZxtDG8937twjYzRv9XpnqyITMArlhWWMhTOJ3r3CTVr/OISgeZKPGjfp+MbeDsOK4OggTVKZmNLx3nKiuc94IlTDOcz5qArVBTxKadWg56f1UGswKBgQD28G+haXxneMhRZozoHPjcfdgtDoZJaVa8XTXw8nvQala5ioU9yesbIAdtD/VR/eWwuMtO4rK1IFxtNZQ/MtSXwqlnKLf1xDJQPuj3kY5mC7H7sn4HGeFDP50VFnPgIaUnB5VwgyYFm8l19AW06OBjlnoBv0dnl1s5u+DgpzQcywKBgQCfeWSVzBtPR/1CTAYzcdqPoVAfg/S0jxK5yFHJAp0wXMMQKVszLq99CgoKcqyyyiV7LkBIXWJ50RipsgRjZZP2DP5vl7Q5LdyjFUR/tiG/PmRZNtkrj2ot3Ez/0rwTnPVgMUsgjB1n5Va0FYljvadTi/nGCIl2kCJ/m1QJAaIlOQKBgGV8TwRxS9ViiEEb+lDyhzxm488wpvPIvQLQ8/hAT65J5bZ/PV81etA9C5BA/Ltjs2A7siKLfJJ/6DxhxrlqdICiWeixjVkN9vePw0LrqTA7IjylELJuamuu2yntflXgvfUaYspIu/mWGufFEAtXodCL6TyKlhf21mEV28e4L+ydAoGAItgCUGbot95QNT1z+9QFN+18AvMnWCNvqanrC4qsk0phjYX9FFwfSCqWVeVm0Q0+2tUrRNcUEcbmlbQToBZq/hSu0nPcZIPvnNxLfW/NY7eVCXIcI5eNPjUIgbRCVMc6w5ukYMxPidOBuRXIt1iq2+iV20/FMbA58sY7AgOiaMw=
|
||||
## 进件公钥v2
|
||||
pubKeyV2: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7SPkmIUf2auwkgbVchMyfeCDgICuA1GKrSwRbDI24UMVhzDgcIxCUmFG5/DfcPJz0d3oV9Ggkd4/7NmteRvmNnOOGNOnmR6AGEKafDpL1mAdpndmpkAZ0f6OVo3Py5JDg2wt8d+u3dF0AFWwd2rrrqscWvxJVB55DnuZfXl2CyQIDAQAB
|
||||
pubKeyV2: MIGfMA0GCSGqSIb3DQEBAQUAA4GNADCBiQKBgQC7SPkmIUf2auwkgbVchMyfeCDgICuA1GKrSwRbDI24UMVhzDgcIxCUmFG5/DfcPJz0d3oV9Ggkd4/7NmteRvmNnOOGNOnmR6AGEKafDpL1mAdpndmpkAZ0f6OVo3Py5JDg2wt8d+u3dF0AFWwd2rrrqscWvxJVB55DnuZfXl2CyQIDAQAB
|
||||
## 加密密钥
|
||||
encryptPwd: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD2J82Gg79Tk8HZ9Zl7EOeLwvUn41c4ktUg6jveIhYLhT
|
||||
oldPayV2:
|
||||
|
||||
Reference in New Issue
Block a user