package com.nq.pay; import cn.hutool.core.map.MapUtil; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import org.apache.commons.codec.binary.Hex; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.*; public class PayUtil { public static String url = "https://www.pickpay.info"; public static String appid = "A10000106"; public static String Token = "MIICdAIBADANBgkqhkiG9w0BAQEFAASCAl4wggJaAgEAAoGBAJrEE5Uxkxv3LKfXrrqzqyJU1qm/M+/MlCK0C29fP5Poiz+cx+9buw+obrYejcAeGhT65wge1jaBoeNo0+iXjuFDICm210pOLNIScPvcukLKP3c4IFmlk/qhNiOzYgua+6M7SndkzsAY19SzeIH+U8K+UCnSotGs/qhD8e8JJeKpAgMBAAECfx4tR/mPRl/tkjIn8VSg3n2TN/K2lX9Bz0tKT/B8t1OKbvG4YEO2Xy3DvyfuTTVoqS1DaZ5BD65mbb/UcNKpZUe5aOJlbkhWufyOyZzRxIJ4YApq/vh72/FNTnZUq8Uq7zw+vPO+OjUEavEUUs0twoofyJv57gut4YmhhJ66N6ECQQDMMGhfqxiWpaNrzkzAmg64XAJj7PhEBmrYtQlFBe6wIbrLbP7hGpmU+nXdQu2SiN20yllPJgSEA73DI6JGy/pxAkEAwglEr7u7O4qkboZ1SuWspzUHoEy9XwHCPgnKqYJ8n2/84on5rfLNpdeY+Zqf8vTwvlspW4pde2nG+C+8wXnXuQJAKdCb/0N9lJQ1JEWqKCMkcpK9FpOXv+6EgP6J+G2flMhDhZc7lwOogf7MllQ3bLPEm1p48aF6eUJ+4PByMgdhsQJAeKSinFExPPga/M2FKChdjSkfsL+GDwhc6Y3VAEgtjERpC8GWCF2rF65RYwCM6tb4yKKNuGjzbsR5/d5QkktboQJBAI6uX8KDFsLdpe9sJ4pcv41mFgZwfmwNUvRt4gSOkOQsHieBMOho203lAMhof+r2t+PhBLXY5U52usrxCVpnpzc="; public static String TXToken = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMZLxTr3rl9Ry3Z/hhTxd4cZ0vv2gpRbmSlMyVcLs9CqkRXgux2eXt7l80Rjh4fT48L+irSNPpTE7HURYnnD2Yg+YqQdHbnAQs5JD5ZlN2NCAcqLmlkAuAOLBrM9dI9huHYVgAxGPNiLUn8ueP5nxEPcW5vivC6ZzDxZYKwaNRAFAgMBAAECgYBRmbKjDnOSRB2fOOEbUzalwOnCx/F6TatchH3CNU2cy+QChcVabeaKgUQ3W2HVckui3Y6EuC8Nl2/ayPmmNAMaxPxLXp27ZNYWnBnWDrBAV6/n+9bF8Gb9XldrU+2k06aTl4svX/b6rxxvZ34/aAfOHEOcbzgRsteoqWNv9NrpTQJBAPEnzba/q6Eo+ODoc1YlrT6Qodzi/hnbjHEFazmOhyR0TpqDGSfD+g/JNAQnk7bopv481+Fh7fBK77QmUEJjVSMCQQDSgJMb9xTsELd5v11gBGveefFHIz9huMQ+NgFQC/Thrg7zctE9QxatNXO3qbJkxkDqEHHLG7ogoYy6YESfNTy3AkEA4nC/p1P+8ssoNvfOJRwnutHQSzsR4nHXQ+EUt+zvVPmpPUjQfBh3XA9Pun73Iw7+j0fOZiGwbKvQvNYlEtF3BQJBAIOrzVk2yq2HH11WaHABFABLwrK+x4y26HoJifSqJflsyQlbDqsFZg/eWY3O5jnHER/YPXXQ2DJFGyQRx5rW0C0CQAZKqXDXvETa5B5rmbQId23LBAOQtfpcsOgAFN2TVWgsoAGGUIYCf6QBgadjrB0VjUn3PA42oiy08Op9aU4zNA8="; public static String DOWN_ORDER = "https://www.joypay.info/gold-pay/portal/payment"; public static String DF_ORDER = "https://www.joypay.info/gold-pay/portal/payout"; public static String ascii(Map param, String token, String separator, Boolean empty,String tokenType) { StringBuffer sb = new StringBuffer(); List keys = keyAscii(param); for (String key : keys) { if (empty) { sb.append(key).append("=").append(param.get(key)).append(separator); } else { if (!ObjectUtils.isEmpty(param.get(key))) { sb.append(key).append("=").append(param.get(key)).append(separator); } } } if (!ObjectUtils.isEmpty(tokenType)) { sb.append(tokenType).append("=").append(token); } else { sb = sb.deleteCharAt(sb.length() - 1); sb.append(token); } return sb.toString(); } public static List keyAscii(Map parm) { Collection keySet = parm.keySet(); List list = new ArrayList<>(keySet); Collections.sort(list); return list; } public static String sha256(String str) { MessageDigest messageDigest; String encdeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); byte[] hash = messageDigest.digest(str.getBytes("UTF-8")); encdeStr = Hex.encodeHexString(hash); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return encdeStr; } // public static String getMd5Spring(String key) { // return md5DigestAsHex(key.getBytes()); // } // // private static String md5DigestAsHex(byte[] bytes) { // char[] hexDigest = digestAsHexChars("MD5", bytes); // return new String(hexDigest); // } // // private static char[] digestAsHexChars(String algorithm, byte[] bytes) { // byte[] digest = digest(algorithm, bytes); // return encodeHex(digest); // } // // private static char[] encodeHex(byte[] bytes) { // char[] chars = new char[32]; // for (int i = 0; i < chars.length; i = i + 2) { // byte b = bytes[i / 2]; // chars[i] = HEX_CHARS[(b >>> 0x4) & 0xf]; // chars[i + 1] = HEX_CHARS[b & 0xf]; // } // return chars; // } public static String createLinkStringVMePay(Map params) { List keys = new ArrayList(params.keySet()); Collections.sort(keys); String prestr = ""; for (int i = 0; i < keys.size(); i++) { String key = keys.get(i); String value = MapUtil.getStr(params, key); if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符 prestr = prestr + key + "=" + value; } else { prestr = prestr + key + "=" + value + "&"; } } if ((prestr.lastIndexOf("&") + 1) == prestr.length()) { prestr = prestr.substring(0, prestr.length() - 1); } return prestr; } private static byte[] digest(String algorithm, byte[] bytes) { return getDigest(algorithm).digest(bytes); } private static MessageDigest getDigest(String algorithm) { try { return MessageDigest.getInstance(algorithm); } catch (NoSuchAlgorithmException ex) { throw new IllegalStateException("Could not find MessageDigest with algorithm \"" + algorithm + "\"", ex); } } }