restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法

1.
JSONObject可以通用数据的灵活性,类似Map数据,数据字段不清晰。具体返回类,如:AutoPayResultVo
// http响应结果载体
JSONObject result = new JSONObject();
// 业务处理结果载体
JSONObject response = new JSONObject();

response.put("code", "40004");
response.put("msg", "Business Failed");
response.put("sub_code", "ISV-VERIFICATION-FAILED");
response.put("sub_msg", "验签失败");

result.put("response",response);

2.父类实现通用接口设计,以下伪代码。
//2.1使用父类Object
private void saveSpiAndOpenApiService(Object request, Object result) {
//instanceof判断
if(request instanceof CreateRequest) {

}

}

//2.2使用父类BaseOutResponseVo,获取签名方法
private BaseSignResponseVo getSign(BaseOutResponseVo response) throws AlipayApiException {

}

//子类实现类
CreateResponse extends BaseOutResponseVo
ReleaseResponse extends BaseOutResponseVo
SyncResponse extends BaseOutResponseVo

//调用,调用获取签名
getSign(createResponse);
getSign(releaseResponse);
getSign(syncResponse);

3.HttpServletRequest获取header参数 sign
//接口增加 HttpServletRequest request, 参数,也可以不写,如果需要从请求头中获取参数,则需要该request参数。
@RequestMapping(value = "/public/pay/payBatch",method=RequestMethod.POST)
public Response<AutoPayResultVo> pay(@Valid HttpServletRequest request, @RequestBody PayVo payVo,BindingResult result){

//HttpServletRequest获取header参数 sign
Map<String, String> headers = getHeaders(request);
String signStr = headers.get("byte-signature");

}

//从请求头中获取参数
private static Map<String, String> getHeaders(HttpServletRequest request) {
Map<String, String> headerMap = new HashMap<>();
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
String value = request.getHeader(name);
headerMap.put(name, value);
}
return headerMap;
}

4.
支付宝sdk签名和验签,可以按工具类来使用。

compile("com.alipay.sdk:alipay-sdk-java:4.39.70.ALL")

商户 》》支付宝
//商户私钥签名
String sign = AlipaySignature.rsaSign(contentToSignJson, isvPrivateKey, "UTF-8", "RSA2");
//商户公钥验签
boolean isPass = AlipaySignature.rsaCheck(GsonUtils.toJson(request), sign, alipayPublicKey, "UTF-8","RSA2");

支付宝 》》 商户
//支付宝私钥签名
//支付宝公钥解密

restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法的更多相关文章

  1. Python 接口:从协议到抽象基类

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica } 抽象基类的常见用途:实现接口时作为超类使用.然后,说明抽象基类如何检查 ...

  2. SpringBoot Restful 接口实现

    目录 SpringBoot 核心注解 SpringBoot Restful 接口实现 封装响应数据 SpringBoot 核心注解 SpringBoot 基础入门 注解 说明 Component 声明 ...

  3. Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类

    第四部分第11章,接口:从协议到抽象基类(重点讲抽象基类) 接口就是实现特定角色的方法集合. 严格来说,协议是非正式的接口(只由文档约束),正式接口会施加限制(抽象基类对接口一致性的强制). 在Pyt ...

  4. Python抽象基类:ABC谢谢你,因为有你,温暖了四季!

    Python抽象基类:ABC谢谢你,因为有你,温暖了四季! Python抽象基类:ABC谢谢你,因为有你,温暖了四季! 实例方法.类方法和静态方法 抽象类 具名元组 参考资料 最近阅读了<Pyt ...

  5. 【Python】【元编程】【从协议到抽象基类】

    """class Vector2d: typecode = 'd' def __init__(self,x,y): self.__x = float(x) self.__ ...

  6. Python高级主题:Python ABC(抽象基类)

    #抽象类实例 作用统一规范接口,降低使用复杂度.import abcclass Animal(metaclass = abc.ABCMeta): ##只能被继承,不能实例化,实例化会报错 @abc.a ...

  7. Python中的对象行为与特殊方法(二)类型检查与抽象基类

    类型检查 创建类的实例时,该实例的类型为类本身: class Foo(object): pass f = Foo() 要测试实例是否属于某个类,可以使用type()内置函数: >>> ...

  8. SpringBoot中使用切面的每次传的参数,进行解析,验签,并返回解码后的参数

    目的,在每次请求的时候,对每次传的参数,进行解析,验签,并返回解码后的参数, 以json传递: 例子背景: IOT平台提供对外可访问的接口, 需要对所有参数的传递做到 不泄露.认证的目的:所以需要在每 ...

  9. Java中使用JSONTokener判断接口返回字符串是JSONObject还是JSONArray

    今天在接口对接中,遇到一个问题,对方接口返回的JSONString,类型不确定,所以需要先做判断再进行处理.查阅资料后使用JSONTokener可进行处理,特此记录. String ret = ord ...

  10. SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)

    SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂) 一,整合Swagger3.0 随着Spring Boot.Spring Cloud等微服务的 ...

随机推荐

  1. 【ClickHouse 技术系列】- ClickHouse 中的嵌套数据结构

    ​简介:本文翻译自 Altinity 针对 ClickHouse 的系列技术文章.面向联机分析处理(OLAP)的开源分析引擎 ClickHouse,因其优良的查询性能,PB级的数据规模,简单的架构,被 ...

  2. python之Djiango框架简介

    基础 # HTTP响应状态码 10X:服务端已经接受到你的数据了 你可以继续提交数据进行下一步操作 20X:请求成功(200) 30X:重定向(301,302) 40X:请求错误(404) 50X:服 ...

  3. 揭露 FileSystem 引起的线上 JVM 内存溢出问题

    作者:来自 vivo 互联网大数据团队-Ye Jidong 本文主要介绍了由FileSystem类引起的一次线上内存泄漏导致内存溢出的问题分析解决全过程. 内存泄漏定义(memory leak):一个 ...

  4. Solution Set - DP

    CF101E Candies and Stones Link&Submission. DP 的状态设计和转移都是显然的,唯一的问题在于需要输出方案,而这题卡空间.会发现如果用 bitset 存 ...

  5. 最好用的AI换脸软件,rope下载介绍(支持cpu)

    随着AI技术的广泛运用,市面上的换脸软件也多了起来,今天给各位介绍其中的王者Rope! 先上两个动图,给大伙看看效果 rope是如何实现这种自然的效果呢?这得益于机器学习技术的不断发展,rope经过深 ...

  6. git checkout 命令图文详解

    目录 git checkout branchname (切换本地分支) 切换远程分支 放弃修改 git checkout . git checkout – filename git checkout ...

  7. 超级简单实用的CSS3动画,增添网页效果

    有时候做网页,如果都写成静态的没有动态效果,犹如一张张图片,没有视觉感受,没有达到很好的视觉效果. 其实一些简单的CSS3动画,可以增添网页的动态感,使自己设计的网页更有视觉享受.1.图片有一定角度的 ...

  8. postgresql 创建索引

    --查询索引 select * from pg_indexes where tablename='tab1'; --创建索引(查询用到哪几列,就对哪几个字段创建索引) CREATE INDEX ind ...

  9. SpringBoot3集成WebSocket

    标签:WebSocket,Session,Postman. 一.简介 WebSocket通过一个TCP连接在客户端和服务器之间建立一个全双工.双向的通信通道,使得客户端和服务器之间的数据交换变得更加简 ...

  10. java学习之旅(day.10)

    重写 前提:需要有继承关系,是子类重写父类的方法,不是属性 重写特点: 方法名必须相同, 参数列表必须相同,否则就变成重载了 修饰符:范围可以扩大,不能缩小(即父类的private的,可以扩大为pub ...