forked from foxinmy/weixin4j
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQRParameter.java
139 lines (123 loc) · 4.17 KB
/
QRParameter.java
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
package com.foxinmy.weixin4j.mp.model;
import java.io.Serializable;
import com.foxinmy.weixin4j.type.QRType;
/**
* 二维码参数对象
* <p>
* 目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--
* 100000)
* </p>
*
* @className QRParameter
* @author jinyu([email protected])
* @date 2014年4月8日
* @since JDK 1.6
* @see #createPermanenceInt(int) 创建整型永久二维码
* @see #createPermanenceStr(String) 创建字符串型永久二维码
* @see #createTemporary(long) 创建整型默认30秒有效期临时二维码
* @see #createTemporary(int, long) 创建整型有效期临时二维码
*/
public class QRParameter implements Serializable {
private static final long serialVersionUID = 6611187606558274253L;
private static final int DEFAULT_TEMPORARY_EXPIRE_SECONDS = 30;
/**
* 临时二维码的有效时间, 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒
*/
private int expireSeconds;
/**
* 二维码类型
*
* @see com.foxinmy.weixin4j.type.QRType
*/
private QRType qrType;
/**
* 场景值I 根据qrType参数而定
*/
private String sceneValue;
private QRParameter() {
}
public int getExpireSeconds() {
return expireSeconds;
}
public QRType getQrType() {
return qrType;
}
public String getSceneValue() {
return sceneValue;
}
private String content;
public String getContent() {
return content;
}
/**
* 创建临时二维码
*
* @param expireSeconds
* 有效时间
* @param sceneValue
* 二维码的场景值 <font color="red">临时二维码最大值为无符号32位非0整型</font>
* @return 二维码参数
*/
public static QRParameter createTemporary(int expireSeconds, long sceneValue) {
QRParameter qr = new QRParameter();
qr.qrType = QRType.QR_SCENE;
qr.expireSeconds = expireSeconds;
qr.sceneValue = Long.toString(sceneValue);
qr.content = String.format(
"{\"expire_seconds\": %s, \"action_name\": \"%s\", \"action_info\": {\"scene\": {\"scene_id\": %s}}}",
expireSeconds, QRType.QR_SCENE.name(), sceneValue);
return qr;
}
/**
* 创建临时二维码(默认有效期为30秒)
*
* @param sceneValue
* 二维码的场景值 <font color="red">临时二维码最大值为无符号32位非0整型</font>
* @return 二维码参数
*/
public static QRParameter createTemporary(long sceneValue) {
QRParameter qr = new QRParameter();
qr.qrType = QRType.QR_SCENE;
qr.expireSeconds = DEFAULT_TEMPORARY_EXPIRE_SECONDS;
qr.sceneValue = Long.toString(sceneValue);
qr.content = String.format(
"{\"expire_seconds\": %s, \"action_name\": \"%s\", \"action_info\": {\"scene\": {\"scene_id\": %s}}}",
DEFAULT_TEMPORARY_EXPIRE_SECONDS, QRType.QR_SCENE.name(), sceneValue);
return qr;
}
/**
* 创建永久二维码(场景值为int)
*
* @param sceneValue
* 场景值 最大值为100000
* @return 二维码参数
*/
public static QRParameter createPermanenceInt(int sceneValue) {
QRParameter qr = new QRParameter();
qr.qrType = QRType.QR_LIMIT_SCENE;
qr.sceneValue = Integer.toString(sceneValue);
qr.content = String.format("{\"action_name\": \"%s\", \"action_info\": {\"scene\": {\"scene_id\": %s}}}",
QRType.QR_LIMIT_SCENE.name(), sceneValue);
return qr;
}
/**
* 创建永久二维码(场景值为string)
*
* @param sceneValue
* 场景值
* @return 二维码参数
*/
public static QRParameter createPermanenceStr(String sceneValue) {
QRParameter qr = new QRParameter();
qr.qrType = QRType.QR_LIMIT_STR_SCENE;
qr.sceneValue = sceneValue;
qr.content = String.format("{\"action_name\": \"%s\", \"action_info\": {\"scene\": {\"scene_str\": \"%s\"}}}",
QRType.QR_LIMIT_STR_SCENE, sceneValue);
return qr;
}
@Override
public String toString() {
return "QRParameter [expireSeconds=" + expireSeconds + ", qrType=" + qrType + ", sceneValue=" + sceneValue
+ "]";
}
}