| | |
| | | private static Logger logger = LoggerFactory.getLogger(JuHeFuUtil.class); |
| | | // 商户RSA私钥 TODO |
| | | private static final String MERCHANT_PRIVATE_KEY = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMQPsMj4OYgjHFWS8wDIQOoMeAx9Ad1wKfIks7Oz5Kw8EVnmZ9o1ZY14goMMr1vJo/XxLLYXDvwj+EhV4MqT6ji2QDVqlhA4f6WFFmKOsvxgNnu0zAysfDpVpYihWC5uOf4ece9fWVci8DYFeXcawYGNB6GrJuo186sqMYwkE90/AgMBAAECgYAnMvfmhnKCPHraxSGeo2sPIGUUIh4wVs+cIShoomvy36OcdMuIvipKqbB2YR/iWyNT9d85nMybLtniJIFoH0CxshmLH/yg31vYhyLfVyih1RVFBRYuDMnIjvmNTBgXM/9vaAwkzonIQnoFoLVjxK2+JIFY+86Iak1Cv/vEi1vaSQJBAPRwebK51NBfrnO+2HY9nuDvbZbSx9I8uR+Yw/ebDUmbow/Dacibl0Hha+fw6cy5I3Rlm2kk5fKXIDIkwyLVq80CQQDNVXuQ8kXrDR0WjPcYPnwKNPEd0EHOKFiT7OqwoMFUUROyajO2nWs80eiZYZ+6M6+LEvYT6KcSiyiIwREnh1k7AkBV3BwjNzsVZkZ0yZhnEAX6pJ8t1yPxKPstqg9Lrd7g+BYyt0U0/dIHhhLNCcZV7sIRZI9OQ3Ox3nukoV0Zo0wRAkBT1eEbry+I5tPHj0qb5Xczm6YOrCcSCzsPOp4f+6Kz0F6ga+gtWVyden7jkQ5sMgosWFOMkWMVmSe1nk5ou0RdAkEAzfJJavQgu+BGQwqS1EojlXKe0GmpbQu+HwuDKcHmju0P2qGQ2yPfvURg1dMp7tmBM8AlVJhgzkNuyUAN1J841w=="; |
| | | // private static final String MERCHANT_PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKOuwQkWiVCNY5SIw6fXcIHj/e8UuQ5Gro1v4yguVnNhCdC6HsWbF6jf1ios8CQKxIQViI2I8GfVPsjBBpfp7TK5zup0BHHYg7JUk0tC6ojL8WgbtVpKX7GJFQOdjNbZmYBlDQuBiCfvxWuLki8juL8NlY4aj7FgSDboSHq7A+ZjAgMBAAECgYAEhei5qpDC1BVjXmAhvDdUr4st1yHB/jwGloftbVJgP9c4mFwPU9jUhtLxOWqtZErH55xtZNJX3DGu9H6NJh6y09UCLdQJJY2/BQBrTlDsVFQl5h2PwDOO+qwUkZPTVd+822Sv0lukVS4c5sCwcdYwShmiIQCuudpygHDCBxJ6AQJBANAmfr6j8PxnCKlSUfaO1PqcnT6BGOJEBbnT0CGiKwNwXKecEKh5O8Ev4Ak9FhGad4eFkKZDNvHLE+yfCPy8nwECQQDJT10Hwi9+1KFdTacQrC94fZzipuqBOeVzgTPQrQ0iM38uKx5Sj5o4Ii9cyfkw2EoG/gFSim57U/OApLab22ljAkBoL0xzWZWOkHfaYHTcB0P9KJTgKzfsUQXYrHdZzlTfRMdrsYb4/K13FeJ6XVQFfZ5ke+sZ/TysK+yOHFAgSL0BAkAXLdYuYIOLfPwffCNyXgERRJVd245A1uO+iu/mZSaP+5H3ROu24eYF9Jmze2X/48eSSojochwKgz4UX+LOy1K1AkBQycFQjRWCjPi8biMhdLzzX47CNFkwigVp0At6VcZmb86cS9ohoTHCbeG0+hlX7p9eNMiFKLVnnCdjY6j1xqtv"; |
| | | // 平台RSA公钥 TODO |
| | | private static final String PLAT_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOKBBFXirWIJth+SNJCY4mhbATbL60sKV66bRixHMVz8vpBqONio9X6A+Pm9LNutBe+hLpI1BMmFJk3Mb1/QEcklWptRGgHqIrBxR4b19qc/2/pSxyqlpaifYJFZhOg2+OcQ/fqpAmhNXN5uc1pcYvbvWTam0j+6+nBNQeAAku5QIDAQAB"; |
| | | // 应用的app_id TODO |
| | |
| | | // 微信小程序id TODO |
| | | private static final String WX_APP_ID = ""; |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | // createPaymentCode("CZ1928183312398", 1, "0.01", |
| | | // "充值", "充值", |
| | | // "127.0.0.1", "openId", |
| | | //// "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/base/callback") |
| | | // "https://xq.xqzhihui.com/api/order/client/order/order/base/callback"); |
| | | // String orderNo = OrderUtil.getOrderNoForPrefix("User"); |
| | | createUser("test129837182731"); |
| | | // balancePay("12345678912", "0.01", "http://www.baidu.com"); |
| | | } |
| | | /** |
| | | * 创建用户 |
| | | * |
| | | * @param memberId 用户id |
| | | * @param memberP 用户信息 |
| | | * @return boolean |
| | | * @throws Exception |
| | | */ |
| | |
| | | memberP.put("tel_no","19983174515"); |
| | | memberP.put("card_id","6228480469852935177"); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("app_id", APP_ID); |
| | | // data.put("app_id", APP_ID); |
| | | data.put("app_id", "app_e7301b75-19f1-40e5-96ac-0fee847d4da0"); |
| | | data.put("member_id", memberId); |
| | | data.put("member_type", "01"); |
| | | String jsonString = JSON.toJSONString(JSONObject.parseObject(data.toString(), TreeMap.class)); |
| | | String jsonString = JSON.toJSONString(memberP); |
| | | jsonString = JSON.toJSONString(JSONObject.parseObject(jsonString, TreeMap.class)); |
| | | data.put("member_p", jsonString); |
| | | |
| | | System.err.println(data); |
| | | JSONObject body = new JSONObject(); |
| | | body.put("merId", MER_ID); |
| | | // body.put("merId", MER_ID); |
| | | body.put("merId", "1120241105365033"); |
| | | body.put("sign", sign(JSONObject.toJSONString(data))); |
| | | // body.put("reqCipher", |
| | | // EncryptUtils.aes256ECBPkcs7PaddingEncrypt(JSONObject.toJSONString(data), AES_KEY)); |
| | | body.put("reqCipher", |
| | | EncryptUtils.aes256ECBPkcs7PaddingEncrypt(JSONObject.toJSONString(data), AES_KEY)); |
| | | EncryptUtils.aes256ECBPkcs7PaddingEncrypt(JSONObject.toJSONString(data), "6d548eb01bad44bbbb4a23743e733103")); |
| | | body.put("reqTime", DateUtils.dateTimeNow("yyyyMMddHHmmsssss")); |
| | | System.err.println(body); |
| | | String result = sendPost(BASE_URL + CREATE_USER_INTERFACE, body); |
| | | // String result = sendPost(BASE_URL + CREATE_USER_INTERFACE, body); |
| | | String result = sendPost("https://payapi.juhefu.com/" + CREATE_USER_INTERFACE, body); |
| | | JSONObject resJsonObject = JSONObject.parseObject(result); |
| | | System.err.println(resJsonObject); |
| | | return false; |
| | | } |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | createPaymentCode("CZ19281833123", 1, "0.01", |
| | | "充值", "充值", |
| | | "127.0.0.1", "openId", |
| | | // "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/base/callback") |
| | | "https://xq.xqzhihui.com/api/order/client/order/order/base/callback"); |
| | | // String orderNo = OrderUtil.getOrderNoForPrefix("User"); |
| | | // createUser("usera12937812893718297391"); |
| | | // public static void main(String[] args) throws Exception { |
| | | //// createPaymentCode("CZ1928183312398", 1, "0.01", |
| | | //// "充值", "充值", |
| | | //// "127.0.0.1", "openId", |
| | | ////// "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/base/callback") |
| | | //// "https://xq.xqzhihui.com/api/order/client/order/order/base/callback"); |
| | | //// String orderNo = OrderUtil.getOrderNoForPrefix("User"); |
| | | // createUser("testuser12937812893718297391"); |
| | | //// balancePay("12345678912", "0.01", "http://www.baidu.com"); |
| | | } |
| | | // } |
| | | |
| | | public static JSONObject balancePay(String orderNo, String payAmt, String notifyUrl) throws Exception { |
| | | JSONObject data = new JSONObject(); |
| | |
| | | data = JSON.toJSONString(JSONObject.parseObject(data, TreeMap.class)); |
| | | // Base64 --> Key |
| | | try { |
| | | // byte[] bytes = Base64.getDecoder().decode(MERCHANT_PRIVATE_KEY); |
| | | byte[] bytes = Base64.getDecoder().decode(MERCHANT_PRIVATE_KEY); |
| | | PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(bytes); |
| | | KeyFactory keyFactory; |