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())));
}
相关推荐
好大哥呀19 分钟前
Java Web的学习路径
java·前端·学习
f***147721 分钟前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
on the way 12322 分钟前
day06-SpringDI 依赖注入
java·spring
odoo中国1 小时前
Odoo 19 模块结构概述
开发语言·python·module·odoo·核心组件·py文件按
C***11501 小时前
Spring aop 五种通知类型
java·前端·spring
BD_Marathon1 小时前
SpringBoot——多环境开发配置
java·spring boot·后端
代码N年归来仍是新手村成员1 小时前
【Java转Go】即时通信系统代码分析(一)基础Server 构建
java·开发语言·golang
Z1Jxxx2 小时前
01序列01序列
开发语言·c++·算法
沐知全栈开发2 小时前
C语言中的强制类型转换
开发语言
关于不上作者榜就原神启动那件事2 小时前
Java中大量数据Excel导入导出的实现方案
java·开发语言·excel