Browse Source

20260404业绩调整

lijianlin/feature-20260401-现金管理四期
sunjiabei 5 days ago
parent
commit
38c085624f
  1. 34
      pom.xml
  2. 114
      src/main/java/com/example/demo/Util/AppleTokenGenerator.java

34
pom.xml

@ -40,23 +40,23 @@
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
<version>3.12.0</version> <version>3.12.0</version>
</dependency> </dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-api</artifactId>-->
<!-- <version>0.11.5</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-impl</artifactId>-->
<!-- <version>0.11.5</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-jackson</artifactId>-->
<!-- <version>0.11.5</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>com.github.penggle</groupId> <groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId> <artifactId>kaptcha</artifactId>

114
src/main/java/com/example/demo/Util/AppleTokenGenerator.java

@ -1,58 +1,58 @@
package com.example.demo.Util;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.io.Decoders;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Date;
public class AppleTokenGenerator {
// 你提供的真实信息已全部填好
private static final String KEY_ID = "3J2S9VXU3V";
private static final String ISSUER_ID = "69a6de7e-1f9a-47e3-e053-5b8c7c11a4d1";
private static final String P8_FILE_PATH = "E:/Work/newgold/gold-java/src/main/java/com/example/demo/Util/AuthKey_3J2S9VXU3V.p8";
public static String generateToken() {
try {
// 读取 P8 私钥内容
String p8Content = Files.readString(Paths.get(P8_FILE_PATH))
.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "")
.replaceAll("\\s+", "");
// 解码私钥
byte[] keyBytes = Decoders.BASE64.decode(p8Content);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("EC");
PrivateKey privateKey = keyFactory.generatePrivate(spec);
// 生成苹果官方标准 JWT补全typ字段完全符合文档要求
return Jwts.builder()
.setHeaderParam("alg", "ES256")
.setHeaderParam("kid", KEY_ID)
.setHeaderParam("typ", "JWT") // 🔴 苹果官方强制要求之前漏了
.setIssuer(ISSUER_ID)
.setAudience("appstoreconnect-v1")
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 15)) // 15分钟有效期20分钟
.signWith(privateKey, SignatureAlgorithm.ES256)
.compact();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// // 运行直接输出可用 Token
// public static void main(String[] args) {
// String token = generateToken();
// System.out.println("复制下面这一行直接用:");
// System.out.println("Bearer " + token);
//package com.example.demo.Util;
//
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;
//import io.jsonwebtoken.io.Decoders;
//import java.nio.file.Files;
//import java.nio.file.Paths;
//import java.security.KeyFactory;
//import java.security.PrivateKey;
//import java.security.spec.PKCS8EncodedKeySpec;
//import java.util.Date;
//
//public class AppleTokenGenerator {
//
// // 你提供的真实信息已全部填好
// private static final String KEY_ID = "3J2S9VXU3V";
// private static final String ISSUER_ID = "69a6de7e-1f9a-47e3-e053-5b8c7c11a4d1";
// private static final String P8_FILE_PATH = "E:/Work/newgold/gold-java/src/main/java/com/example/demo/Util/AuthKey_3J2S9VXU3V.p8";
//
// public static String generateToken() {
// try {
// // 读取 P8 私钥内容
// String p8Content = Files.readString(Paths.get(P8_FILE_PATH))
// .replace("-----BEGIN PRIVATE KEY-----", "")
// .replace("-----END PRIVATE KEY-----", "")
// .replaceAll("\\s+", "");
//
// // 解码私钥
// byte[] keyBytes = Decoders.BASE64.decode(p8Content);
// PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
// KeyFactory keyFactory = KeyFactory.getInstance("EC");
// PrivateKey privateKey = keyFactory.generatePrivate(spec);
//
// // 生成苹果官方标准 JWT补全typ字段完全符合文档要求
// return Jwts.builder()
// .setHeaderParam("alg", "ES256")
// .setHeaderParam("kid", KEY_ID)
// .setHeaderParam("typ", "JWT") // 🔴 苹果官方强制要求之前漏了
// .setIssuer(ISSUER_ID)
// .setAudience("appstoreconnect-v1")
// .setIssuedAt(new Date())
// .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 15)) // 15分钟有效期20分钟
// .signWith(privateKey, SignatureAlgorithm.ES256)
// .compact();
//
// } catch (Exception e) {
// e.printStackTrace();
// return null;
// }
// } // }
}
//
//// // 运行直接输出可用 Token
//// public static void main(String[] args) {
//// String token = generateToken();
//// System.out.println("复制下面这一行直接用:");
//// System.out.println("Bearer " + token);
//// }
//}
Loading…
Cancel
Save