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