高德商家调用高德服务
1 商家调用高德服务准备工作
商家调用高德的地址是固定的,不会随着商家接入不同的SPI而发生变化。请求地址统一定义如下:
测试联调地址,该地址在联调以及沙箱验证阶段使用:https://restapi.amap.com/rest/openmp/devgw?key=高德云店秘钥key
线上地址,该地址在上线后生产阶段使用:https://restapi.amap.com/rest/openmp/gw?key=高德云店秘钥key
高德云店秘钥key查看路径:
商家登录「高德云店平台」,进入「控制台」->「商家中心」->「商家信息」页面(如果尚未完成主体认证和行业认证,请先参考https://x-one.amap.com/docs/public/sop 完成认证后继续),点击对应行业接入准备配置进入「接入准备及配置」页面。
预览
进入「接入准备及配置」页面,即可获取高德云店秘钥
预览
2 商家调用高德接口协议规范
2.1 调用接口协议
网络传输协议 https
数据提交方法 POST
请求Content-Type application/x-www-form-urlencoded
响应Content-Type application/json;charset=UTF-8
签名算法 RSA2
字符集 UTF-8
_
2.2 请求参数格式
规格
参数名 类型 是否必传 默认值 备注
utc_timestamp String 是 时间戳(毫秒),需要取近5分钟内的时间戳
version String 是 1.0 版本号
charset String 是 UTF-8 编码
method String 是 SPI名称,请根据具体接口传值
sign String 是 签名内容
sign_type String 是 RSA2 签名类型
app_id String 是 商家应用id,商家登录云店可查看
biz_content String 是 商家业务数据,Json字符串
need_encrypt boolean 否 false 非必填,仅商家确定需要对请求biz_content内容加密传输时为true
_
注:参数中的app_id需要商家先通过云店进行主体和行业认证,认证后即可在「接入准备及配置」页面查看appId,详情请参考 https://x-one.amap.com/docs/public/sop
预览
postman示例
预览
curl(可以导入postman参考)
1curl --location --request POST 'https://restapi.amap.com/rest/openmp/devgw?key=77ff5350723d29901fa859515f553644' \
2--header 'Content-Type: application/x-www-form-urlencoded' \
3--data-urlencode 'utc_timestamp=1667963073983' \
4--data-urlencode 'version=1.0' \
5--data-urlencode 'charset=UTF-8' \
6--data-urlencode 'method=amap.brand.merchant.createShop' \
7--data-urlencode 'sign=B1NBL2wk0zsre4U61yctniqvI1hBfxZptyO73oTE7cwOsL14q3qGbccGBUrw/1Jc3Nk3FMfFnuRs9qqkej7iFdBS0YQ8HkT1JSc58M4/HfMC14roaCnGTJMH76zScjSNRvckBtiJ9jmvxWBNpiJKXT3lr0Wvad+aw5yUO44H1WmneMsWJzXoh9q4ABEoZr1c2T3NNIBiE/lJD3tnSeANUoWycQQLantIlbVfeTA5h4b/iILlSx7YrRRvrJk9d3JqDzTMkx1UAFAmFoyIcYA1lIaNOHS3TxFPbgEahDuqEImc6OeszS9J+phYkD7I/b1gOGR0vWYYAG1t9lAe3MUNUw==' \
8--data-urlencode 'sign_type=RSA2' \
9--data-urlencode 'app_id=202210130194031937' \
10--data-urlencode 'biz_content={"merchantId":"8888777711119999","source":"example_api","shopInfos":[]}'
2.3 响应格式
规格
字段 类型 是否必填 描述
response object 是 json对象,统一返回格式包装
_
response
字段 类型 是否必填 描述
code String 是 状态码,10000表示成功,响应公共错误码请参考https://x-one.amap.com/docs/public/errorcode
msg String 是 描述
data Object 是 请参考具体接口详情文档定义
_
响应示例
1{
2 "response": {
3 "code": "10000", //code值10000.表示接口响应成功
4 "msg": "success",
5 "data": {
6 "name": "lisi"
7 }
8 }
9}
1{
2 "response": {
3 "code": "20000", //code非10000.表示接口响应失败
4 "msg": "Service Currently Unavailable",
5 "sub_code": "isp.unknow-error",
6 "sub_msg": "系统繁忙"
7 }
8}
网关响应公共错误码请参考 https://x-one.amap.com/docs/public/errorcode
3、代码示例
3.1 商家请求高德Java版本示例
1import com.alibaba.fastjson.JSONObject;
2import org.springframework.http.HttpEntity;
3import org.springframework.http.HttpHeaders;
4import org.springframework.http.MediaType;
5import org.springframework.http.ResponseEntity;
6import org.springframework.util.LinkedMultiValueMap;
7import org.springframework.util.MultiValueMap;
8import org.springframework.web.client.RestTemplate;
9
10import java.util.*;
11
12/**
13 * 描述:商家请求高德接口示例,仅供参考
14 * 本示例中使用到Spring原生RestTemplate提供http协议能力,仅作为参考。
15 * 本示例中使用到fastJson提供json序列化能力,仅作为参考
16 *
17 * @authoer 高小德
18 */
19public class CpToAmapDemo {
20
21 private static RestTemplate restTemplate = new RestTemplate();
22
23 /**
24 * 商家请求高德(商家推送数据给高德)
25 */
26 public static void main(String[] args) throws Exception {
27 Map
28
29 // 构造业务参数,内容请参考具体接口文档
30 JSONObject bizContent = new JSONObject();
31 bizContent.put("source", "example_api");
32 bizContent.put("merchantId", "8888777711119999");
33 bizContent.put("shopInfos", new String[]{});
34 paramMap.put("biz_content", JSONObject.toJSONString(bizContent));
35
36 // 构造请求公参
37 //utc_timestamp时间戳需要最近5分钟内生成(毫秒)
38 paramMap.put("utc_timestamp", "1667966931774");
39 //version默认为1.0
40 paramMap.put("version", "1.0");
41 //charset默认为UTF-8
42 paramMap.put("charset", "UTF-8");
43 //method即接口名(spi/api),请参考具体接口文档
44 paramMap.put("method", "amap.brand.merchant.createShop");
45 //请登录高德云店「接入准备及配置」页面获取app_id
46 paramMap.put("app_id", "202210130194031937");
47 //sign为参数签名,需要根据当前请求的参数动态生成,sign生成方法请参考签名验签帮助文档 https://x-one.amap.com/docs/public/sign_verify
48 //paramMap.put("sign", GenerateSignUtils.generateSign(paramMap));
49 paramMap.put("sign", "VsthWdo8yEjdqVgah1vuYAO0dYFifqzFvz0DaSF4SqSwoNU5qgP5zPwp7Vue/c1zFL+QKHMjL9HSAoQeOE+9gPEISjJgu4fZQcVqT/N13+u2tZuMhYolhTUN/P3V07Rbqsz5lX34Sq+pa3usYc43WCsXHy1OrX1qwuEYeQNhpDA/wJe6jzFJ/Pqtr+NZRfZMNPuJuhFnWxfpRkRJ2uWaClmXqPj/6tQjdUNyvOLJj8OASMY8eCeHX39BEF2lOZtH53R9E0SOSdauP36AD/59pBshr/xHMDjsz1mI20UtSdMCHtZ5eD6Yeo9UqFoLpb3/wxRui8wHIFwPG6Fbad+pyA==");
50 //固定默认为RSA2
51 paramMap.put("sign_type", "RSA2");
52
53 // 定义Content-type、初始化HttpEntity
54 HttpHeaders headers = new HttpHeaders();
55 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
56 MultiValueMap
57 HttpEntity
58
59 // 调用高德接口
60 // 线下联调环境:https://restapi.amap.com/rest/openmp/devgw?key=高德云店秘钥key
61 // 线上环境:https://restapi.amap.com/rest/openmp/gw?key=高德云店秘钥key
62 // 高德云店秘钥key请登录高德云店「接入准备及配置」页面查看
63 String url = "https://restapi.amap.com/rest/openmp/devgw?key=77ff5350723d29901fa859515f553644";
64 ResponseEntity
65 if (resp.getBody() != null && !"".equals(resp.getBody())) {
66 JSONObject respObj = JSONObject.parseObject(resp.getBody());
67 System.out.println("高德返回结果:" + respObj);
68 }
69 }
70
71 private static MultiValueMap
72 MultiValueMap multiValueMap = new LinkedMultiValueMap
73 for (Map.Entry
74 multiValueMap.add(entry.getKey(), entry.getValue());
75 }
76 return multiValueMap;
77 }
78}

