IOS购买订阅通知信息解析说明Java

复制代码
1、IOS 接受通知信息,及对应参数信息 
JSONObject iosNotification(@RequestBody JSONObject request) 

2、获取加密需要解密的字符串

复制代码
String signedPayLoad= request.getString("signedPayload");

3、对JWT密文进行解析

复制代码
JSONObject jsonObject = ApplePayUtil.verifyAndGet(signedPayLoad);

4、对最近一次交易的详细信息进行解析

复制代码
ApplePayUtil.verifyAndGet(signedTransactionInfo);

5、对关于未来续订的信息进行解析

复制代码
ApplePayUtil.verifyAndGet(signedRenewalInfo);

6、解析密文方法:

复制代码
public static JSONObject verifyAndGet(String jws) throws CertificateException {
    DecodedJWT decodedJWT = JWT.decode(jws);
    // 拿到 header 中 x5c 数组中第一个
    String header = new String(java.util.Base64.getDecoder().decode(decodedJWT.getHeader()));
    String x5c = JSONObject.parseObject(header).getJSONArray("x5c").getString(0);
    // 获取公钥
    PublicKey publicKey = getPublicKeyByX5c(x5c);
    // 验证 token
    Algorithm algorithm = Algorithm.ECDSA256((ECPublicKey) publicKey, null);
    try {
        algorithm.verify(decodedJWT);
    } catch (SignatureVerificationException e) {
        throw new RuntimeException("签名验证失败");
    }
    // 解析数据
    return JSONObject.parseObject(new String(java.util.Base64.getDecoder().decode(decodedJWT.getPayload())));
}
相关推荐
寒士obj5 分钟前
Spring容器Bean的创建流程
java·后端·spring
掉鱼的猫17 分钟前
Spring AOP 与 Solon AOP 有什么区别?
java·spring
不是光头 强30 分钟前
axure chrome 浏览器插件的使用
java·chrome
笨蛋不要掉眼泪1 小时前
Spring Boot集成腾讯云人脸识别实现智能小区门禁系统
java·数据库·spring boot
桃源学社(接毕设)1 小时前
云计算下数据隐私保护系统的设计与实现(LW+源码+讲解+部署)
java·云计算·毕业设计·swing·隐私保护
用户0332126663671 小时前
Java 将 Excel 转换为 HTML:解锁数据在线展示的无限可能
java·excel
字节跳跃者2 小时前
SpringBoot + MinIO + kkFile 实现文件预览,这样操作更安全!
java·后端·程序员
天天摸鱼的java工程师2 小时前
OpenFeign 首次调用卡 3 秒?八年老开发扒透 5 个坑,实战优化到 100ms
java·后端·面试
whitepure2 小时前
万字详解Java集合
java·后端
华仔啊2 小时前
乐观锁、悲观锁和分布式锁,你用对了吗?
java·分布式