View Javadoc
1   package com.foxinmy.weixin4j.pay.payment.mch;
2   
3   import com.alibaba.fastjson.annotation.JSONField;
4   import com.foxinmy.weixin4j.pay.payment.PayPackage;
5   import com.foxinmy.weixin4j.pay.type.CurrencyType;
6   import com.foxinmy.weixin4j.pay.type.TradeType;
7   
8   import javax.xml.bind.annotation.XmlAccessType;
9   import javax.xml.bind.annotation.XmlAccessorType;
10  import javax.xml.bind.annotation.XmlElement;
11  import javax.xml.bind.annotation.XmlRootElement;
12  import java.util.Date;
13  
14  /**
15   * 支付订单详情
16   *
17   * @className MchPayPackage
18   * @author jinyu(foxinmy@gmail.com)
19   * @date 2014年10月21日
20   * @since JDK 1.6
21   * @see
22   */
23  @XmlRootElement
24  @XmlAccessorType(XmlAccessType.FIELD)
25  public class MchPayPackage extends PayPackage {
26  
27  	private static final long serialVersionUID = 8944928173669656177L;
28  
29  	/**
30  	 * 交易类型JSAPI、NATIVE、APP 必须
31  	 */
32  	@XmlElement(name = "trade_type")
33  	@JSONField(name = "trade_type")
34  	private String tradeType;
35  	/**
36  	 * 符合ISO 4217标准的三位字母代码,默认人民币:CNY 非必须
37  	 */
38  	@XmlElement(name = "fee_type")
39  	@JSONField(name = "fee_type")
40  	private String feeType;
41  	/**
42  	 * 用户在商户 appid 下的唯一 标识, trade_type 为 JSAPI 时,此参数必传
43  	 */
44  	@XmlElement(name = "openid")
45  	@JSONField(name = "openid")
46  	private String openId;
47  
48  	/**
49  	 * 只在 trade_type 为 NATIVE 且【模式一】 时需要填写 非必须
50  	 */
51  	@XmlElement(name = "product_id")
52  	@JSONField(name = "product_id")
53  	private String productId;
54  
55  	/**
56  	 * 扫码支付授权码 ,设备读取用户微信中的条码或者二维码信息
57  	 */
58  	@XmlElement(name = "auth_code")
59  	@JSONField(name = "auth_code")
60  	private String authCode;
61  	/**
62  	 * 指定支付方式:no_credit--指定不能使用信用卡支付
63  	 */
64  	@XmlElement(name = "limit_pay")
65  	@JSONField(name = "limit_pay")
66  	private String limitPay;
67  	/**
68  	 * 服务商下的用户子标识 非必须
69  	 */
70  	@XmlElement(name = "sub_openid")
71  	@JSONField(name = "sub_openid")
72  	private String subOpenId;
73  	/**
74  	 * 场景信息
75  	 */
76  	@XmlElement(name = "scene_info")
77  	@JSONField(name = "scene_info")
78  	private String sceneInfo;
79  
80  	/**
81  	 * 电子发票入口开放标识
82  	 */
83  	private String receipt;
84  	/**
85  	 * 是否押金人脸支付,Y-是,N-普通人脸支付
86  	 */
87  	private String deposit;
88  
89  	/**
90  	 * 是否需要分帐,非必传,默认为不分帐
91  	 * Y-是,需要分账,N-否,不分账
92  	 */
93  	@XmlElement(name = "profit_sharing")
94  	@JSONField(name = "profit_sharing")
95  	private String profitSharing;
96  
97  	protected MchPayPackage() {
98  		// jaxb required
99  	}
100 
101 	/**
102 	 * 微信支付
103 	 *
104 	 * @param body
105 	 *            支付详情 必填
106 	 * @param outTradeNo
107 	 *            商户侧订单号 必填
108 	 * @param totalFee
109 	 *            支付金额(单位元) 必填
110 	 * @param notifyUrl
111 	 *            支付回调URL 必填
112 	 * @param createIp
113 	 *            发起支付的IP地址 必填
114 	 * @param tradeType
115 	 *            支付类型 必填
116 	 * @param openId
117 	 *            用户唯一标识 公众号JSAPI支付必填
118 	 * @param authCode
119 	 *            支付授权码 刷卡MICROPAY支付必填
120 	 * @param productId
121 	 *            商品ID 扫码NATIVE支付必填
122 	 * @param attach
123 	 *            支付时附加信息 非必填
124 	 */
125 	public MchPayPackage(String body, String outTradeNo, double totalFee,
126 			String notifyUrl, String createIp, TradeType tradeType,
127 			String openId, String authCode, String productId, String attach) {
128 		this(body, null, outTradeNo, totalFee, CurrencyType.CNY, notifyUrl,
129 				createIp, tradeType, openId, authCode, productId, attach, null,
130 				null, null, null, null, null, null, null);
131 	}
132 
133 	/**
134 	 * 完整参数
135 	 *
136 	 * @param body
137 	 *            商品描述 <font color="red">必填项</font>
138 	 * @param detial
139 	 *            商品名称明细列表 非必填项
140 	 * @param outTradeNo
141 	 *            商户内部唯一订单号 <font color="red">必填项</font>
142 	 * @param totalFee
143 	 *            商品总额 单位元 <font color="red">必填项</font>
144 	 * @param notifyUrl
145 	 *            支付回调URL <font color="red">必填项</font>
146 	 * @param createIp
147 	 *            订单生成的机器IP <font color="red">必填项</font>
148 	 * @param tradeType
149 	 *            交易类型 <font color="red">必填项</font>
150 	 * @param feeType
151 	 *            货币类型 非必填项
152 	 * @param openId
153 	 *            用户ID <font color="red">tradeType=JSAPI时必填</font>
154 	 * @param authCode
155 	 *            刷卡支付授权码 <font color="red">tradeType=MICROPAY时必填</font>
156 	 * @param productId
157 	 *            产品ID <font color="red">tradeType=NATIVE时必填</font>
158 	 * @param attach
159 	 *            附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 非必填项
160 	 * @param timeStart
161 	 *            订单生成时间,格式为yyyyMMddHHmmss 非必填项
162 	 * @param timeExpire
163 	 *            订单失效时间,格式为yyyyMMddHHmmss;注意:最短失效时间间隔必须大于5分钟 非必填项
164 	 * @param goodsTag
165 	 *            商品标记,代金券或立减优惠功能的参数 非必填项
166 	 * @param limitPay
167 	 *            指定支付方式:no_credit--指定不能使用信用卡支付 非必填项
168 	 * @param subOpenId
169 	 *            用户在子商户appid下的唯一标识 非必填
170 	 *            openid和sub_openid可以选传其中之一,如果选择传sub_openid ,则必须传sub_appid
171 	 * @param receipt
172 	 * 			  电子发票入口开放标识
173 	 * @param deposit
174 	 * 			  是否押金支付
175 	 * @param profitSharing
176 	 * 			  是否需要分账
177 	 */
178 	public MchPayPackage(String body, String detial, String outTradeNo,
179 			double totalFee, CurrencyType feeType, String notifyUrl,
180 			String createIp, TradeType tradeType, String openId,
181 			String authCode, String productId, String attach, Date timeStart,
182 			Date timeExpire, String goodsTag, String limitPay, String subOpenId, String receipt,
183 			String deposit, String profitSharing) {
184 		super(body, detial, outTradeNo, totalFee, notifyUrl, createIp, attach,
185 				timeStart, timeExpire, goodsTag);
186 		this.tradeType = tradeType != null ? tradeType.name() : null;
187 		this.feeType = feeType == null ? CurrencyType.CNY.name() : feeType.name();
188 		this.openId = openId;
189 		this.authCode = authCode;
190 		this.productId = productId;
191 		this.limitPay = limitPay;
192 		this.subOpenId = subOpenId;
193 		this.receipt = receipt;
194 		this.deposit = deposit;
195 		this.profitSharing = profitSharing;
196 	}
197 
198 	public String getTradeType() {
199 		return tradeType;
200 	}
201 
202 	public void setTradeType(String tradeType) {
203 		this.tradeType = tradeType;
204 	}
205 
206 	public String getFeeType() {
207 		return feeType;
208 	}
209 
210 	public void setFeeType(String feeType) {
211 		this.feeType = feeType;
212 	}
213 
214 	public String getOpenId() {
215 		return openId;
216 	}
217 
218 	public void setOpenId(String openId) {
219 		this.openId = openId;
220 	}
221 
222 	public String getAuthCode() {
223 		return authCode;
224 	}
225 
226 	public void setAuthCode(String authCode) {
227 		this.authCode = authCode;
228 	}
229 
230 	public String getProductId() {
231 		return productId;
232 	}
233 
234 	public void setProductId(String productId) {
235 		this.productId = productId;
236 	}
237 
238 	public String getLimitPay() {
239 		return limitPay;
240 	}
241 
242 	public void setLimitPay(String limitPay) {
243 		this.limitPay = limitPay;
244 	}
245 
246 	public String getSubOpenId() {
247 		return subOpenId;
248 	}
249 
250 	public void setSubOpenId(String subOpenId) {
251 		this.subOpenId = subOpenId;
252 	}
253 
254 	public String getSceneInfo() {
255 		return sceneInfo;
256 	}
257 
258 	public void setSceneInfo(String sceneInfo) {
259 		this.sceneInfo = sceneInfo;
260 	}
261 
262 	public String getReceipt() {
263 		return receipt;
264 	}
265 
266 	public void setReceipt(String receipt) {
267 		this.receipt = receipt;
268 	}
269 
270 	public String getDeposit() {
271 		return deposit;
272 	}
273 
274 	public void setDeposit(String deposit) {
275 		this.deposit = deposit;
276 	}
277 
278 	public String getProfitSharing() {
279 		return profitSharing;
280 	}
281 
282 	public void setProfitSharing(String profitSharing) {
283 		this.profitSharing = profitSharing;
284 	}
285 
286 	@Override
287 	public String toString() {
288 		return "MchPayPackage{" +
289 				"tradeType='" + tradeType + '\'' +
290 				", feeType='" + feeType + '\'' +
291 				", openId='" + openId + '\'' +
292 				", productId='" + productId + '\'' +
293 				", authCode='" + authCode + '\'' +
294 				", limitPay='" + limitPay + '\'' +
295 				", subOpenId='" + subOpenId + '\'' +
296 				", sceneInfo='" + sceneInfo + '\'' +
297 				", receipt='" + receipt + '\'' +
298 				", deposit=" + deposit +
299 				", profitSharing=" + profitSharing +
300 				'}';
301 	}
302 }