商户授权
1.准备工作
1.确保已经以平台服务商身份登录闪送开放平台,获得了appKey和appSecret,查询路径:登录闪送开放平台 -> 账号中心 -> 应用信息;
2.确保你的账号配置了redirectUrl(用来授权商户之后进行跳转,获取code等信息),检查路径:登录闪送开放平台 -> 账号中心 -> 应用信息;
3.确保https://open.ishansong.com/auth和 http://open.s.bingex.com/auth能正常访问,这两个页面分别是闪送开放平台提供的正式环境和测试环境的授权页面
2.开发授权功能
平台服务商需要在自己的系统中开发授权功能供客户使用,可以添加「闪送授权」按钮,并实现相应的功能,以下是推荐的步骤
2.1 规划授权方式
平台服务商根据自己的业务规划需要,选择合适的授权方式
闪送开放平台的授权方式有两种:
商户授权:授权后能为商户下所有门店发单
门店授权:授权后只能为授权时选择的门店发单
2.2 拼接授权地址
规划授权方式完毕,需要拼接「闪送授权」按钮的跳转地址,
1.「商户授权」和「门店授权」均需要拼接isAllStoreAuth、response_type、client_id、scope、state、redirect_uri
2.「商户授权」需要将isAllStoreAuth的值配置为true
3.「门店授权」需要将isAllStoreAuth的值配置为false,且需要额外拼接thirdStoreId,可将thirdStoreId的值设置为您平台上店铺的id
注意:
1. response_type为固定值code
2. scope为固定值shop_open_api
3. state值是接入方根据需要定义的,一般用于标记您平台上的用户,您可以根据需要填写
4. client_id换成您的开发者ID(App Key),如果不知道,可以登录闪送开放平台进行查询,路径:登录闪送开放平台 -> 账号中心 -> 应用信息
5. redirect_uri和闪送开放平台应用中心维护的redirectUrl一致,其值需要进行URLEncode编码
6. isAllStoreAuth用来标识「商户授权」和「门店授权」,isAllStoreAuth=true为「商户授权」,isAllStoreAuth=false为「门店授权」
7. thirdStoreId为非必传项,「门店授权」时必须传入,代表第您平台的门店id
以下是商户授权和门店授权的授权地址示例
2.2.1 商户授权示例
生产环境的和测试环境的商户授权示例如下:
【生产环境】pc,h5商户授权页面地址
https://open.ishansong.com/auth?isAllStoreAuth=true&response_type=code&scope=shop_open_api&state=10583&client_id=sseYlPL1Qo3j0lNfT&redirect_uri=http://open.s.bingex.com/openqatest/index
【测试环境】pc,h5商户授权页面地址
http://open.s.bingex.com/auth?isAllStoreAuth=true&response_type=code&scope=shop_open_api&state=10583&client_id=ss2xpXL5NGhXIP7L2&redirect_uri=http%3a%2f%2flanyinbin.cn%2faa%2fcallBack
2.2.1 门店授权示例
生产环境的和测试环境的门店授权示例如下:
【生产环境】pc,h5门店授权页面地址
https://open.ishansong.com/auth?isAllStoreAuth=false&thirdStoreId=312313&response_type=code&scope=shop_open_api&state=10583&client_id=sseYlPL1Qo3j0lNfT&redirect_uri=http://open.s.bingex.com/openqatest/index
【测试环境】pc,h5门店授权页面地址
http://open.s.bingex.com/auth?isAllStoreAuth=false&thirdStoreId=312313&response_type=code&scope=shop_open_api&state=10583&client_id=ss2xpXL5NGhXIP7L2&redirect_uri=http%3a%2f%2flanyinbin.cn%2faa%2fcallBack
2.2 获取授权code
在上述「商户授权」和「门店授权」授权页面,填写审核通过的闪送的商户账号进行授权,授权完毕,都会生成授权code,即Authorization Code,您可以使用该code的值换取token(注意code会在1分钟内过期,且只能使用1次)。
注意:在闪送的测试环境授权时,商户账号使用 "开放平台应用中心提供的授权账号密码",如果看不到测试授权的商户账号密码,点击 "同步测试环境",
同步测试环境后就可以看到授权账号和授权账号密码了
1.「商户授权」时,输入闪送商家账号点击“登录并授权”按钮可直接完成授权,此种授权方式是账号维度的,所有门店均被授权(包括授权后新增的门店),所有门店都能发单;
2.「商户授权」时,授权完毕会跳转到您配置的redirect_uri地址上,该地址会挂载参数isAllStoreAuth、code、state、shopId(商户ID)(其中isAllStoreAuth=true)
3.「门店授权」时,输入闪送商家账号点击“登录并授权”按钮,登录后弹框展示当前账号的的所有门店列表,可选择需要的门店进行授权,门店授权时只有授过权的门店能发单
4.「门店授权」时,授权完毕会跳转到您配置的redirect_uri地址上,该地址会挂载参数isAllStoreAuth、thirdStoreId(三方门店ID) 、code、state、shopId(商户ID)、storeId(闪送门店ID)(其中isAllStoreAuth=false),您可以根据返回的thirdStoreId和storeId记录门店对应关系,闪送不记录thirdStoreId和storeId的对应关系
例如:
若redirect_uri是:http://open.s.bingex.com/openqatest/index,则跳转地址为:
门店授权时为:
http://open.s.bingex.com/openqatest/index?code=520DD&state=10583&thirdStoreId=312313&isAllStoreAuth=false&storeId=1331275&shopId=20000000000000348
商户授权时为:
http://open.s.bingex.com/openqatest/index?code=520DD&state=10583&isAllStoreAuth=true&shopId=20000000000000348
pc版页面
h5授权页面
门店授权确认页面
3.授权接口
3.1 获取AccessToken
- 请求url:
- /openapi/oauth/token
- 请求方式
- post请求
- Content-Type:application/x-www-form-urlencoded
- 入参说明
参数 | 字段描述 | 类型/是否必传 | 说明 |
---|---|---|---|
clientId | ss6DzHy9GvHB46Jgo | String/YES | 开发者ID |
code | M7DGxf | String/YES | 授权到跳转页获取的code |
- 入参示例
clientId:ss6DzHy9GvHB46Jgo
code:M7DGxf
- 出参示例
{
"status": 200,
"msg": "获取成功",
"data": {
"access_token": "64850c4c-06fe-46fa-b30a-f680b193fe15",
"refresh_token": "53521dad-60d2-4bf7-a81e-3882c2721bf1",
"expires_in": 2592000
}
}
3.2 RefreshToken刷新AccessToken
请求url:
- /openapi/oauth/refresh_token
请求方式
- post请求
- Content-Type:application/x-www-form-urlencoded
签名计算
入参说明
参数 | 字段描述 | 类型/是否必传 | 说明 |
---|---|---|---|
clientId | ss6DzHy9GvHB46Jgo | String/YES | 开发者ID |
sign | DFD2439A1CBC3007C084562C398FC61B | String/YES | 签名 |
timestamp | 1631862240982 | String/YES | 时间戳 |
data | {"refreshToken":"53521dad-60d2-4bf7-a81e-3882c2721bf1"} | String/YES | 业务参数 |
- 入参示例
clientId:ss6DzHy9GvHB46Jgo timestamp:1631862240982 data:{"refreshToken":"53521dad-60d2-4bf7-a81e-3882c2721bf1"} sign:DFD2439A1CBC3007C084562C398FC61B
- 出参示例
{
"status": 200,
"msg": null,
"data": {
"access_token": "64850c4c-06fe-46fa-b30a-f680b193fe15",
"expires_in": 2591769
}
}
### 3.3 取消授权接口
- 请求url:
- /openapi/oauth/cancel
- 请求方式
* post请求
* Content-Type:application/x-www-form-urlencoded
- 签名计算
- [请参考开发指南](https://open.ishansong.com/documentCenter/326)
- 入参说明
|参数|字段描述|类型/是否必传|说明|
| ------------- |:-------------:| -----:|-----:|
| clientId | ss6DzHy9GvHB46Jgo |String/YES|开发者ID|
| sign | 6355317A7C5047FA13C0ECC7E58B2C72 |String/YES|签名|
| timestamp | 1631862240982 |String/YES|时间戳|
| data |{"accessToken":"64850c4c-06fe-46fa-b30a-f680b193fe15"}|String/YES|业务参数|
- 入参示例
clientId:ss6DzHy9GvHB46Jgo
timestamp:1631862240982
data:{"accessToken":"64850c4c-06fe-46fa-b30a-f680b193fe15"}
sign:6355317A7C5047FA13C0ECC7E58B2C72
- 出参示例
{
"status": 200,
"msg": "取消授权成功",
"data": null
}