API接入

代码描述:基于JAVA的千游互娱API服务接口调用示例

关联数据:寄售查询API服务

接口地址:

http://api.qianyou.cn:11140/queryConsignSaleCardOrder


 qianyou

     

 2018-04-12 16:04

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

package game.qianyou.user.order.controller;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.httpclient.params.HttpMethodParams;

import java.security.MessageDigest;

import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

/**

* 寄售查询示例代码

*

* @Author 千游互娱 www.qianyou.cn

*/

public class QianyouQueryOrderDemo {

//配置您申请的KEY

private static final String SIGNKEY = "";

//寄售查询请求接口地址

private static final String REQUESTURL = "http://api.qianyou.cn:11140/
queryConsignSaleCardOrder";

public static void main(String[] args) {

requestQueryConsignmentOrder();

}

/**

* 查询请求方法

*/

private static void requestQueryConsignmentOrder() {

//1.组装请求参数

Map<String, String> originalRequestParam = new LinkedHashMap();//请求参数

originalRequestParam.put("userNo", "");//用户编号,注册www.qianyou.cn的手机号码

originalRequestParam.put("orderId", "");//用户订单号

//2.生成签名

String signKey = getSinkey(originalRequestParam);//生成签名

originalRequestParam.put("sign", signKey);

//3.组装请求参数

NameValuePair[] requestParams = combineRequestParam(originalRequestParam);

//4.发起请求

String response = PostWithCharset(REQUESTURL, requestParams, "UTF-8", 30 * 1000, 30 * 1000, true);

ObjectMapper objectMapper=new ObjectMapper();

try{

JsonNode jsonNode = objectMapper.readTree(response);

if(StringUtils.equals(jsonNode.get("code").asText(),"1008")){

System.out.println(jsonNode.get("orderState").asInt());

return;

}

System.out.println(jsonNode.get("code")+":"+jsonNode.get("msg"));

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 生成签名

*

* @param requestParams 请求参数

* @return

*/

private static String getSinkey(Map requestParams) {

StringBuffer source = new StringBuffer(50);

requestParams.forEach((key, value) -> source.append(key).append(value));

source.append(SIGNKEY);

return getMd5(source.toString(), true, "UTF-8");

}

/**

* 组装请求参数

*

* @param requestParams 请求参数

* @return

*/

private static NameValuePair[] combineRequestParam(Map requestParams) {

List nameValuePairs = new ArrayList<>();

requestParams.forEach((key, value) -> nameValuePairs.add(new NameValuePair(key, value)));

return nameValuePairs.toArray(new NameValuePair[nameValuePairs.size()]);

}

/**

* 发送Http请求工具

*

* @param requestUrl 请求地址

* @param requestParams 请求数据

* @param charset 编码格式

* @param conntimeout 连接超时时间(毫秒)

* @param sotimeout 读取超时时间(毫秒)

* @param fag 是否启用多线程

* @return

*/

private static String PostWithCharset(String requestUrl, NameValuePair[] requestParams, String charset, int conntimeout, int sotimeout, boolean fag) {

String returnStr = "";

PostMethod postMethod = null;

try {

HttpClient client;

if (fag) {

MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();

client = new HttpClient(connectionManager);

} else {

client = new HttpClient();

}

postMethod = new PostMethod(requestUrl);

postMethod.setRequestBody(requestParams);

client.getHttpConnectionManager().getParams().setConnectionTimeout(conntimeout);

postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charset);

client.getHttpConnectionManager().getParams().setSoTimeout(sotimeout);

client.executeMethod(postMethod);

returnStr = postMethod.getResponseBodyAsString();

} catch (Exception e) {

e.printStackTrace();

} finally {

postMethod.releaseConnection();

}

return returnStr;

}

/**

* *

* MD5工具类

*

* @param plainText 需要加密的字符串

* @param md5Format true 32位,false 16 位

* @param charset 字符集格式

* @return

*/

private static String getMd5(String plainText, boolean md5Format, String charset) {

String md5Str = "";

try {

MessageDigest messageDigest = MessageDigest.getInstance("MD5");

messageDigest.update(plainText.trim().getBytes(charset));

byte hashBytes[] = messageDigest.digest();

int i;

StringBuffer tempStr = new StringBuffer(32);

for (int offset = 0; offset < hashBytes.length; offset++) {

i = hashBytes[offset];

if (i < 0)

i += 256;

if (i < 16)

tempStr.append("0");

tempStr.append(Integer.toHexString(i));

}

if (md5Format) {

md5Str = tempStr.toString().toUpperCase();

} else {

md5Str = tempStr.toString().substring(8, 24).toUpperCase();

}

} catch (Exception e) {

e.printStackTrace();

}

return md5Str;

}

}

千游互娱平台-游戏点卡充值 视频会员直充 卡密购买 API接口