1 package com.foxinmy.weixin4j.pay.api;
2
3 import com.alibaba.fastjson.JSON;
4 import com.alibaba.fastjson.JSONObject;
5 import com.alibaba.fastjson.TypeReference;
6 import com.foxinmy.weixin4j.exception.WeixinException;
7 import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
8 import com.foxinmy.weixin4j.pay.model.WeixinPayAccount;
9 import com.foxinmy.weixin4j.pay.payment.mch.CustomsOrder;
10 import com.foxinmy.weixin4j.pay.payment.mch.CustomsOrderRecord;
11 import com.foxinmy.weixin4j.pay.payment.mch.CustomsOrderResult;
12 import com.foxinmy.weixin4j.pay.type.CustomsCity;
13 import com.foxinmy.weixin4j.pay.type.IdQuery;
14 import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
15 import com.foxinmy.weixin4j.xml.XmlStream;
16
17
18
19
20
21
22
23
24
25
26 public class CustomsApi extends MchApi {
27
28 public CustomsApi(WeixinPayAccount weixinAccount) {
29 super(weixinAccount);
30 }
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public CustomsOrderResult declareCustomsOrder(CustomsOrder customsOrder)
45 throws WeixinException {
46 JSONObject para = (JSONObject) JSON.toJSON(customsOrder);
47 para.put("appid", weixinAccount.getId());
48 para.put("mch_id", weixinAccount.getMchId());
49 para.put("sign", weixinSignature.sign(para));
50 String param = XmlStream.map2xml(para);
51 WeixinResponse response = weixinExecutor.post(
52 getRequestUri("customsorder_declare_uri"), param);
53 return response.getAsObject(new TypeReference<CustomsOrderResult>() {
54 });
55 }
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 public CustomsOrderRecord queryCustomsOrder(IdQuery idQuery,
71 CustomsCity customsCity) throws WeixinException {
72 JSONObject para = new JSONObject();
73 para.put("appid", weixinAccount.getId());
74 para.put("mch_id", weixinAccount.getMchId());
75 para.put(idQuery.getType().getName(), idQuery.getId());
76 para.put("customs", customsCity.name());
77 para.put("sign", weixinSignature.sign(para));
78 String param = XmlStream.map2xml(para);
79 WeixinResponse response = weixinExecutor.post(
80 getRequestUri("customsorder_query_uri"), param);
81 return ListsuffixResultDeserializer.deserialize(response.getAsString(),
82 CustomsOrderRecord.class);
83 }
84 }