View Javadoc
1   package com.foxinmy.weixin4j.mp.oldpayment;
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.util.DateUtil;
13  
14  /**
15   * V2支付的订单详情
16   *
17   * @className PayPackageV2
18   * @author jinyu(foxinmy@gmail.com)
19   * @date 2014年8月17日
20   * @since JDK 1.6
21   * @see
22   */
23  @XmlRootElement
24  @XmlAccessorType(XmlAccessType.FIELD)
25  public class PayPackageV2 extends PayPackage {
26  
27  	private static final long serialVersionUID = 5557542103637795834L;
28  
29  	/**
30  	 * 银行通道类型 固定为"WX" 非空
31  	 */
32  	@XmlElement(name = "bank_type")
33  	@JSONField(name = "bank_type")
34  	private String bankType;
35  	/**
36  	 * 商户号 注册时分配的财付通商户号 非空
37  	 */
38  	private String partner;
39  	/**
40  	 * 支付币种 默认值是"1" 非空
41  	 */
42  	@XmlElement(name = "fee_type")
43  	@JSONField(name = "fee_type")
44  	private String feeType;
45  	/**
46  	 * 物流费用 可为空 如果有值,必须保 证 transport_fee + product_fee=total_fee
47  	 */
48  	@XmlElement(name = "transport_fee")
49  	@JSONField(name = "transport_fee")
50  	private Integer transportFee;
51  	/**
52  	 * 商品费用 可为空 商品费用,单位为分。如果有值,必须保 证 transport_fee +product_fee=total_fee;
53  	 */
54  	@XmlElement(name = "product_fee")
55  	@JSONField(name = "product_fee")
56  	private Integer productFee;
57  	/**
58  	 * 传入参数字符编码 取值范围:"GBK"、"UTF-8",默认:"GBK" 可为空
59  	 */
60  	@XmlElement(name = "input_charset")
61  	@JSONField(name = "input_charset")
62  	private String inputCharset;
63  
64  	protected PayPackageV2() {
65  		// jaxb required
66  	}
67  
68  	/**
69  	 * 支付信息
70  	 *
71  	 * @param partner
72  	 *            商户号 <font color="red">必填</font>
73  	 * @param body
74  	 *            支付详情 <font color="red">必填</font>
75  	 * @param outTradeNo
76  	 *            订单号 <font color="red">必填</font>
77  	 * @param totalFee
78  	 *            订单总额(元) <font color="red">必填</font>
79  	 * @param notifyUrl
80  	 *            支付回调URL <font color="red">必填</font>
81  	 * @param createIp
82  	 *            订单生成的机器 IP <font color="red">必填</font>
83  	 */
84  	public PayPackageV2(String partner, String body, String outTradeNo,
85  			double totalFee, String notifyUrl, String createIp) {
86  		this(partner, body, outTradeNo, totalFee, notifyUrl, createIp, null,
87  				null, null, 0d, 0d, null);
88  	}
89  
90  	/**
91  	 * 支付信息 完整参数
92  	 *
93  	 * @param partner
94  	 *            商户号 <font color="red">必填</font>
95  	 * @param body
96  	 *            支付详情 <font color="red">必填</font>
97  	 * @param outTradeNo
98  	 *            订单号 <font color="red">必填</font>
99  	 * @param totalFee
100 	 *            订单总额(元) <font color="red">必填</font>
101 	 * @param notifyUrl
102 	 *            支付回调URL <font color="red">必填</font>
103 	 * @param createIp
104 	 *            订单生成的机器 IP <font color="red">必填</font>
105 	 * @param attach
106 	 *            附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
107 	 * @param timeStart
108 	 *            订单生成时间,格式为yyyyMMddHHmmss
109 	 * @param timeExpire
110 	 *            订单失效时间,格式为yyyyMMddHHmmss;注意:最短失效时间间隔必须大于5分钟
111 	 * @param transportFee
112 	 *            物流费用 如有值 必须保证 transportFee+productFee=totalFee
113 	 * @param transportFee
114 	 *            商品费用 如有值 必须保证 transportFee+productFee=totalFee
115 	 * @param goodsTag
116 	 *            商品标记,代金券或立减优惠功能的参数
117 	 */
118 	public PayPackageV2(String partner, String body, String outTradeNo,
119 			double totalFee, String notifyUrl, String createIp, String attach,
120 			Date timeStart, Date timeExpire, double transportFee,
121 			double productFee, String goodsTag) {
122 		setBody(body);
123 		setOutTradeNo(outTradeNo);
124 		setTotalFee(totalFee);
125 		setNotifyUrl(notifyUrl);
126 		setCreateIp(createIp);
127 		setAttach(attach);
128 		setTimeStart(timeStart);
129 		setTimeExpire(timeExpire);
130 		setGoodsTag(goodsTag);
131 		this.bankType = "WX";
132 		this.feeType = "1";
133 		this.inputCharset = "UTF-8";
134 		this.partner = partner;
135 		this.transportFee = transportFee > 0d ? DateUtil
136 				.formatYuan2Fen(transportFee) : null;
137 		this.productFee = productFee > 0 ? DateUtil.formatYuan2Fen(productFee)
138 				: null;
139 	}
140 
141 	public String getBankType() {
142 		return bankType;
143 	}
144 
145 	public String getPartner() {
146 		return partner;
147 	}
148 
149 	public void setPartner(String partner) {
150 		this.partner = partner;
151 	}
152 
153 	public String getFeeType() {
154 		return feeType;
155 	}
156 
157 	public Integer getTransportFee() {
158 		return transportFee;
159 	}
160 	
161 	/**
162 	 * <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
163 	 * 
164 	 * @return 元单位
165 	 */
166 	@JSONField(serialize = false)
167 	public double getFormatTransportFee() {
168 		return transportFee != null ? transportFee / 100d : 0d;
169 	}
170 
171 	/**
172 	 * <font color="red">单位为元,自动格式化为分</font>
173 	 *
174 	 * @param transportFee
175 	 *            物流费用 单位为元
176 	 */
177 	public void setTransportFee(double transportFee) {
178 		this.transportFee = DateUtil.formatYuan2Fen(transportFee);
179 	}
180 
181 	public Integer getProductFee() {
182 		return productFee;
183 	}
184 	
185 	/**
186 	 * <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
187 	 * 
188 	 * @return 元单位
189 	 */
190 	@JSONField(serialize = false)
191 	public double getFormatProductFee() {
192 		return productFee != null ? productFee / 100d : 0d;
193 	}
194 
195 	/**
196 	 * <font color="red">单位为元,自动格式化为分</font>
197 	 *
198 	 * @param productFee
199 	 *            商品 单位为元
200 	 */
201 	public void setProductFee(double productFee) {
202 		this.productFee = DateUtil.formatYuan2Fen(productFee);
203 	}
204 
205 	public String getInputCharset() {
206 		return inputCharset;
207 	}
208 
209 	@Override
210 	public String toString() {
211 		return "PayPackageV2 [bankType=" + bankType + ", partner=" + partner
212 				+ ", feeType=" + feeType + ", transportFee=" + transportFee
213 				+ ", productFee=" + productFee + ", inputCharset="
214 				+ inputCharset + ", " + super.toString() + "]";
215 	}
216 }