View Javadoc
1   package com.foxinmy.weixin4j.api;
2   
3   import java.util.Map;
4   
5   import com.alibaba.fastjson.TypeReference;
6   import com.foxinmy.weixin4j.exception.WeixinException;
7   import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
8   import com.foxinmy.weixin4j.model.WeixinPayAccount;
9   import com.foxinmy.weixin4j.payment.coupon.CouponDetail;
10  import com.foxinmy.weixin4j.payment.coupon.CouponResult;
11  import com.foxinmy.weixin4j.payment.coupon.CouponStock;
12  import com.foxinmy.weixin4j.util.StringUtil;
13  import com.foxinmy.weixin4j.xml.XmlStream;
14  
15  /**
16   * 代金券API
17   *
18   * @className CouponApi
19   * @author jinyu(foxinmy@gmail.com)
20   * @date 2015年3月25日
21   * @since JDK 1.6
22   * @see <a href=
23   *      "https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_1">代金券</a>
24   * @deprecated 商户平台API迁移到子模块weixin4j-pay
25   */
26  @Deprecated
27  public class CouponApi extends MchApi {
28  
29  	public CouponApi(WeixinPayAccount weixinAccount) {
30  		super(weixinAccount);
31  	}
32  
33  	/**
34  	 * 发放代金券(需要证书)
35  	 *
36  	 * @param couponStockId
37  	 *            代金券批次id
38  	 * @param partnerTradeNo
39  	 *            商户发放凭据号(格式:商户id+日期+流水号),商户侧需保持唯一性
40  	 * @param openId
41  	 *            用户的openid
42  	 * @param opUserId
43  	 *            操作员帐号, 默认为商户号 可在商户平台配置操作员对应的api权限 可为空
44  	 * @return 发放结果
45  	 * @see com.foxinmy.weixin4j.payment.coupon.CouponResult
46  	 * @see <a href=
47  	 *      "https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_3">发放代金券接口</a>
48  	 * @throws WeixinException
49  	 */
50  	public CouponResult sendCoupon(String couponStockId, String partnerTradeNo,
51  			String openId, String opUserId) throws WeixinException {
52  		Map<String, String> map = createBaseRequestMap(null);
53  		map.put("coupon_stock_id", couponStockId);
54  		map.put("partner_trade_no", partnerTradeNo);
55  		map.put("openid", openId);
56  		// openid记录数(目前支持num=1)
57  		map.put("openid_count", "1");
58  		// 操作员帐号, 默认为商户号 可在商户平台配置操作员对应的api权限
59  		if (StringUtil.isBlank(opUserId)) {
60  			opUserId = weixinAccount.getMchId();
61  		}
62  		map.put("op_user_id", opUserId);
63  		map.put("version", "1.0");
64  		map.put("type", "XML");
65  		map.put("sign", weixinSignature.sign(map));
66  		String param = XmlStream.map2xml(map);
67  		WeixinResponse response = getWeixinSSLExecutor().post(
68  				getRequestUri("coupon_send_uri"), param);
69  		return response.getAsObject(new TypeReference<CouponResult>() {
70  		});
71  	}
72  
73  	/**
74  	 * 查询代金券批次
75  	 *
76  	 * @param couponStockId
77  	 *            代金券批次ID
78  	 * @return 代金券批次信息
79  	 * @see com.foxinmy.weixin4j.payment.coupon.CouponStock
80  	 * @see <a href=
81  	 *      "https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_4">查询代金券批次信息接口</a>
82  	 * @throws WeixinException
83  	 */
84  	public CouponStock queryCouponStock(String couponStockId)
85  			throws WeixinException {
86  		Map<String, String> map = createBaseRequestMap(null);
87  		map.put("coupon_stock_id", couponStockId);
88  		map.put("sign", weixinSignature.sign(map));
89  		String param = XmlStream.map2xml(map);
90  		WeixinResponse response = weixinExecutor.post(
91  				getRequestUri("couponstock_query_uri"), param);
92  		return response.getAsObject(new TypeReference<CouponStock>() {
93  		});
94  	}
95  
96  	/**
97  	 * 查询代金券详细
98  	 *
99  	 * @param openId
100 	 *            用户ID
101 	 * @param couponId
102 	 *            代金券ID
103 	 * @param stockId
104 	 *            代金劵对应的批次号
105 	 * @return 代金券详细信息
106 	 * @see com.foxinmy.weixin4j.payment.coupon.CouponDetail
107 	 * @see <a href=
108 	 *      "https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_5">查询代金券详细信息接口</a>
109 	 * @throws WeixinException
110 	 */
111 	public CouponDetail queryCouponDetail(String openId, String couponId,
112 			String stockId) throws WeixinException {
113 		Map<String, String> map = createBaseRequestMap(null);
114 		map.put("openid", openId);
115 		map.put("coupon_id", couponId);
116 		map.put("stock_id", stockId);
117 		map.put("sign", weixinSignature.sign(map));
118 		String param = XmlStream.map2xml(map);
119 		WeixinResponse response = weixinExecutor.post(
120 				getRequestUri("coupondetail_query_uri"), param);
121 		return response.getAsObject(new TypeReference<CouponDetail>() {
122 		});
123 	}
124 }