最近对接了很多开放平台。淘宝、京东、快手、抖音等电商平台开放平台基本已打通。CRUD身体是什么?像这样!!!虽然对接各大开放平台没有什么技术含量,但是我们还是要学点东西的,不行,不能白对接!这几天整理完,脑子里大概有一个开放平台接口的设计套路,所以整理成一篇文章,方便有需要的时候实现自己的开放平台接口。开放平台关注的几点:易用性:接口设计要简洁,请求参数要广为人知,以便服务商能够快速接收并为用户提供服务。安全性:开放平台接口暴露在外网,必须保证用户数据安全稳定:开放平台接口供上游服务商使用,必须保证为服务商应用提供稳定的服务...服务商应用开放平台分为几个部分:接入指南:帮助服务商接入接入开放平台接口文档:帮助服务商的开发者实现业务功能应用:服务商的身份识别标注在开放平台上的应用。服务提供者的身份,这样可以很方便的做限流、权限控制等。serviceproviderapplicationappsecret:服务提供者应用的密钥签名,以及验证身份时使用的授权回调地址:授权时会使用Authorization和authentication。授权不是开放平台对服务商应用的授权,而是开放平台的客户(用户)对服务商应用的授权,比如ERP应用,即淘宝店铺商户授权应用,使他们下单即可拉到商店完成订单履行。因此,授权需要三个角色来完成:开放平台提供授权页面,引导客户完成对服务商应用的授权。在服务商应用授权页面,完成授权服务商申请:接收开放平台回调的授权信息,完成业务应用与客户的绑定关系,并保存授权信息。当然也可以使用appid+appsecret直接对服务商应用进行鉴权这种身份适用于没有第三方,数据属于开放平台,与客户无关的情况,所以有无需客户授权。OAuth2授权机制OAuth2是一套授权标准,现在互联网基本都是用它来进行授权,比如github登录,微信公众号授权等都是基于OAuth2的应用。如果你对OAuth2还不了解,可以参考我之前的文章:本文带你了解OAuth2协议与SpringSecurityOAuth2的整合!请求参数请求参数分为系统参数和业务参数两种:系统参数:每次调用API时必须携带的参数业务参数:开放平台根据不同业务提供的参数。业务参数根据业务确定。一、系统参数一般包括:appid:服务商应用的唯一标识appsecret:服务商的应用密钥timestamp:时间戳标志:请求签名接口中传入的请求参数,比如订单查询接口,在order根据订单状态维度查询订单,那么订单查询接口需要接收status参数,查询数据库后返回订单数据。业务参数的载体,常用的如:application/json、application/x-www-form-urlencode等。业务参数以post请求参数的形式传递,也需要参与签名。后面签名会提到请求签名。请求签名的目的是防止数据被篡改。常见的md5和sha可以作为签名算法。理论只要双方都能生成签名并验证签名,非对称加密在支付宝等高安全性应用中使用。双方生成一对私钥和公钥,然后交换公钥进行签名验证。生成签名的方式由你自己定义。下面是一种常见的签名生成方式:sign=appsecret+appid+timestamp+业务参数(排序后)+appsecret伪码Stringappid="abcd";Stringappsecret="12345";Longtimestamp=948758686//有序映射,按键值排序Map
