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())));
}
相关推荐
毕设源码-邱学长4 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
rookieﻬ°4 小时前
PHP框架漏洞
开发语言·php
炸膛坦客5 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
兑生5 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
daidaidaiyu5 小时前
一文学习 Spring 声明式事务源码全流程总结
java·spring
炸膛坦客7 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲7 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin7 小时前
Quarto与Python集成使用
开发语言·python·markdown
2401_831824967 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~8 小时前
【C++小游戏】2048
开发语言·c++