PoiApi.java
11.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
/**
* Copyright (c) 2011-2017, fuyong (859050943@qq.com).
*
* Licensed under the Apache License, Version 2.0 (the "License");
*/
package com.jfinal.weixin.sdk.api;
import java.util.HashMap;
import java.util.Map;
import com.jfinal.weixin.sdk.api.bean.Poi;
import com.jfinal.weixin.sdk.kit.ParaMap;
import com.jfinal.weixin.sdk.utils.HttpUtils;
import com.jfinal.weixin.sdk.utils.JsonUtils;
/**
* 微信门店接口
* 门店poiid体系已做改造,poiid自创建后立刻分配,不再受审核影响发生变化。
* @author fuyong
*/
public class PoiApi {
private static String addPoi = "http://api.weixin.qq.com/cgi-bin/poi/addpoi?access_token=";
private static String getPoi = "http://api.weixin.qq.com/cgi-bin/poi/getpoi?access_token=";
private static String getPoiList = "https://api.weixin.qq.com/cgi-bin/poi/getpoilist?access_token=";
private static String updatePoi = "https://api.weixin.qq.com/cgi-bin/poi/updatepoi?access_token=";
private static String delPoi = "https://api.weixin.qq.com/cgi-bin/poi/delpoi?access_token=";
private static String getWxCategory = "http://api.weixin.qq.com/cgi-bin/poi/getwxcategory";
/**
* 创建门店
* @param jsonStr json字符串
* @return ApiResult
发送json数据示例:
{
"business" : {
"base_info" : {
"address" : "门店所在的详细街道地址(不要填写省市信息):不超过80个字",
"avg_price" : 35,
"branch_name" : "不超过10个字,不能含有括号和特殊字符",
"business_name" : "15个汉字或30个英文字符内",
"categories" : [ "美食,小吃快餐" ],
"city" : "不超过30个字",
"district" : "不超过10个字",
"introduction" : "不超过300字。麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。\n\n主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、 水果等快餐食品",
"latitude" : 25.0974860,
"longitude" : 115.323750,
"offset_type" : 1,
"open_time" : "8:00-20:00",
"photo_list" : [
{
"photo_url" : "https:// 不超过20张.com"
},
{
"photo_url" : "https://XXX.com"
}
],
"province" : "不超过10个字",
"recommend" : "不超过200字。麦辣鸡腿堡套餐,麦乐鸡,全家桶",
"sid" : "33788392",
"special" : "不超过200字。免费wifi,外卖服务",
"telephone" : "不超53个字符(不可以出现文字)"
}
}
}
*/
public static ApiResult addPoi(String jsonStr) {
String jsonResult = HttpUtils.post(addPoi + AccessTokenApi.getAccessTokenStr(), jsonStr);
return new ApiResult(jsonResult);
}
/**
* 创建门店
* @param poi 门店数据实体
* @return ApiResult
*/
public static ApiResult addPoi(Poi poi) {
Map<String, Map<String, Poi>> business = new HashMap<String, Map<String, Poi>>();
Map<String, Poi> base_info = new HashMap<String, Poi>();
base_info.put("base_info", poi);
business.put("business", base_info);
return addPoi(JsonUtils.toJson(business));
}
/**
* 获取单个门店
* @param poiId 门店poi_id
* @return ApiResult
*/
public static ApiResult getPoi(String poiId) {
String url = getPoi + AccessTokenApi.getAccessTokenStr();
Map<String, String> poi_id = new HashMap<String, String>();
poi_id.put("poi_id", poiId);
String jsonResult = HttpUtils.post(url, JsonUtils.toJson(poi_id));
return new ApiResult(jsonResult);
}
/**
* 获取门店列表
* @param begin 开始位置,0 即为从第一条开始查询, 必填
* @param limit 返回数据条数,最大允许50,默认为20, 必填
* @return ApiResult
返回数据示例:
{
"business_list" : [
{
"base_info" : {
"address" : "艺苑路11号",
"available_state" : 3,
"avg_price" : 35,
"branch_name" : "艺苑路店",
"business_name" : "麦当劳",
"categories" : [ "美食,快餐小吃" ],
"city" : "广州市",
"district" : "海珠区",
"introduction" : "麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、水果等快餐食品",
"latitude" : 25.0974860,
"longitude" : 115.323750,
"offset_type" : 1,
"open_time" : "8:00-20:00",
"photo_list" : [
{
"photo_url" : "http: ...."
}
],
"poi_id" : "285633617",
"province" : "广东省",
"recommend" : "麦辣鸡腿堡套餐,麦乐鸡,全家桶",
"sid" : "101",
"special" : "免费wifi,外卖服务",
"telephone" : "020-12345678",
"update_status" : 0
}
},
{
"base_info" : {
"address" : "北京路12号",
"available_state" : 4,
"avg_price" : 35,
"branch_name" : "北京路店",
"business_name" : "麦当劳",
"categories" : [ "美食,快餐小吃" ],
"city" : "广州市",
"district" : "越秀区",
"introduction" : "麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、水果等快餐食品",
"latitude" : 25.0923860,
"longitude" : 115.32350,
"offset_type" : 1,
"open_time" : "8:00-20:00",
"photo_list" : [
{
"photo_url" : "http: ...."
}
],
"poi_id" : "285633618",
"province" : "广东省",
"recommend" : "麦辣鸡腿堡套餐,麦乐鸡,全家桶",
"sid" : "101",
"special" : "免费wifi,外卖服务",
"telephone" : "020-12345689",
"update_status" : 0
}
},
{
"base_info" : {
"address" : "迎龙路122号",
"available_state" : 2,
"avg_price" : 35,
"branch_name" : "龙洞店",
"business_name" : "麦当劳",
"categories" : [ "美食,快餐小吃" ],
"city" : "广州市",
"district" : "天河区",
"introduction" : "麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、水果等快餐食品",
"latitude" : 25.0566860,
"longitude" : 115.323450,
"offset_type" : 1,
"open_time" : "8:00-20:00",
"photo_list" : [
{
"photo_url" : "http: ...."
}
],
"poi_id" : "285633619",
"province" : "广东省",
"recommend" : "麦辣鸡腿堡套餐,麦乐鸡,全家桶",
"sid" : "101",
"special" : "免费wifi,外卖服务",
"telephone" : "020-12345659",
"update_status" : 0
}
}
],
"errcode" : 0,
"errmsg" : "ok",
"total_count" : "3"
}
*/
public static ApiResult getPoiList(int begin, int limit) {
String url = getPoiList + AccessTokenApi.getAccessTokenStr();
Map<String, Integer> poiListPara = new HashMap<String, Integer>();
poiListPara.put("begin", begin);
poiListPara.put("limit", limit);
String jsonResult = HttpUtils.post(url, JsonUtils.toJson(poiListPara));
return new ApiResult(jsonResult);
}
/**
* 修改门店信息
* 商户可以通过该接口,修改门店的服务信息,包括:sid、图片列表、营业时间、推荐、特色服务、简介、人均价格、电话8个字段(名称、坐标、地址等不可修改)修改后需要人工审核。
*
* 特别注意:以上8个字段,若有填写内容则为覆盖更新,若无内容则视为不修改,维持原有内容。
* photo_list 字段为全列表覆盖,若需要增加图片,需将之前图片同样放入list 中,
* 在其后增加新增图片。如:已有A、B、C 三张图片,又要增加D、E 两张图,则需要调用该接口,
* photo_list 传入A、B、C、D、E 五张图片的链接。
*
* @param jsonStr json字符串
* @return ApiResult
发送json数据示例:
{
"business " : {
"base_info" : {
"avg_price" : 35,
"introduction" : "麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、水果等快餐食品",
"open_time" : "8:00-20:00",
"photo_list" : [
{
"photo_url" : "https:// XXX.com"
},
{
"photo_url" : "https://XXX.com"
}
],
"poi_id " : "271864249",
"recommend" : "麦辣鸡腿堡套餐,麦乐鸡,全家桶",
"sid" : "A00001",
"special" : "免费wifi,外卖服务",
"telephone " : "020-12345678"
}
}
}
*/
public static ApiResult updatePoi(String jsonStr) {
String jsonResult = HttpUtils.post(updatePoi + AccessTokenApi.getAccessTokenStr(), jsonStr);
return new ApiResult(jsonResult);
}
/**
* 修改门店信息
* 商户可以通过该接口,修改门店的服务信息,包括:sid、图片列表、营业时间、推荐、特色服务、简介、人均价格、电话8个字段(名称、坐标、地址等不可修改)修改后需要人工审核。
* @param poi 门店数据实体
* @return ApiResult
*/
public static ApiResult updatePoi(Poi poi) {
Map<String, Map<String, Poi>> business = new HashMap<String, Map<String, Poi>>();
Map<String, Poi> base_info = new HashMap<String, Poi>();
base_info.put("base_info", poi);
business.put("business", base_info);
return addPoi(JsonUtils.toJson(business));
}
/**
* 删除单个门店
* @param poiId 门店poi_id
* @return ApiResult
*/
public static ApiResult delPoi(String poiId) {
String url = delPoi + AccessTokenApi.getAccessTokenStr();
Map<String, String> poi_id = new HashMap<String, String>();
poi_id.put("poi_id", poiId);
String jsonResult = HttpUtils.post(url, JsonUtils.toJson(poi_id));
return new ApiResult(jsonResult);
}
/**
* 获取微信门店类目表
* 类目名称接口是为商户提供自己门店类型信息的接口。门店类目定位的越规范,能够精准的吸引更多用户,提高曝光率。
* @return ApiResult
*/
public static ApiResult getCategory() {
ParaMap pm = ParaMap.create("access_token", AccessTokenApi.getAccessTokenStr());
return new ApiResult(HttpUtils.get(getWxCategory, pm.getData()));
}
}