UnifiedOrderReqData.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. package com.tencent.protocol.pay_protocol;
  2. /**
  3. * User: gaojie
  4. * Date: 2017/05/10
  5. * Time: 16:42
  6. */
  7. import com.tencent.common.Configure;
  8. import com.tencent.common.RandomStringGenerator;
  9. import com.tencent.common.Signature;
  10. import java.lang.reflect.Field;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. /**
  14. * 请求被扫支付API需要提交的数据
  15. */
  16. public class UnifiedOrderReqData {
  17. //每个字段具体的意思请查看API文档
  18. private String appid = "";
  19. private String mch_id = "";
  20. private String device_info = "WEB";
  21. private String nonce_str = "";
  22. private String sign = "";
  23. private String body = "";
  24. private String attach = "";
  25. private String out_trade_no = "";
  26. private int total_fee = 0;
  27. private String spbill_create_ip = "";
  28. private String time_start = "";
  29. private String time_expire = "";
  30. private String goods_tag = "";
  31. private String notify_url = "";
  32. private String trade_type = "";
  33. private String openid = "";
  34. /**
  35. * @param body 要支付的商品的描述信息,用户会在支付成功页面里看到这个信息
  36. * @param attach 支付订单里面可以填的附加数据,API会将提交的这个附加数据原样返回
  37. * @param outTradeNo 商户系统内部的订单号,32个字符内可包含字母, 确保在商户系统唯一
  38. * @param totalFee 订单总金额,单位为“分”,只能整数
  39. * @param deviceInfo 商户自己定义的扫码支付终端设备号,方便追溯这笔交易发生在哪台终端设备上
  40. * @param spBillCreateIP 订单生成的机器IP
  41. * @param timeStart 订单生成时间, 格式为yyyyMMddHHmmss,如2009年12 月25 日9 点10 分10 秒表示为20091225091010。时区为GMT+8 beijing。该时间取自商户服务器
  42. * @param timeExpire 订单失效时间,格式同上
  43. * @param goodsTag 商品标记,微信平台配置的商品标记,用于优惠券或者满减使用
  44. * @param notify_url 异步通知接口
  45. * @param trade_type 交易类型:APP
  46. */
  47. public UnifiedOrderReqData(String body, String attach, String outTradeNo, int totalFee, String deviceInfo, String spBillCreateIP, String timeStart, String timeExpire, String goodsTag, String notify_url, String trade_type, String openid){
  48. //微信分配的公众号ID(开通公众号之后可以获取到)
  49. setAppid(Configure.getAppid());
  50. //微信支付分配的商户号ID(开通公众号的微信支付功能之后可以获取到)
  51. setMch_id(Configure.getMchid());
  52. //要支付的商品的描述信息,用户会在支付成功页面里看到这个信息
  53. setBody(body);
  54. //支付订单里面可以填的附加数据,API会将提交的这个附加数据原样返回,有助于商户自己可以注明该笔消费的具体内容,方便后续的运营和记录
  55. setAttach(attach);
  56. //商户系统内部的订单号,32个字符内可包含字母, 确保在商户系统唯一
  57. setOut_trade_no(outTradeNo);
  58. //订单总金额,单位为“分”,只能整数
  59. setTotal_fee(totalFee);
  60. //商户自己定义的扫码支付终端设备号,方便追溯这笔交易发生在哪台终端设备上
  61. setDevice_info(deviceInfo);
  62. //订单生成的机器IP
  63. setSpbill_create_ip(spBillCreateIP);
  64. //订单生成时间, 格式为yyyyMMddHHmmss,如2009年12 月25 日9 点10 分10 秒表示为20091225091010。时区为GMT+8 beijing。该时间取自商户服务器
  65. setTime_start(timeStart);
  66. //订单失效时间,格式同上
  67. setTime_expire(timeExpire);
  68. //商品标记,微信平台配置的商品标记,用于优惠券或者满减使用
  69. setGoods_tag(goodsTag);
  70. //随机字符串,不长于32 位
  71. setNonce_str(RandomStringGenerator.getRandomStringByLength(32));
  72. setNotify_url(notify_url);
  73. setTrade_type(trade_type);
  74. setOpenid(openid);
  75. //根据API给的签名规则进行签名
  76. String sign = Signature.getSign(toMap());
  77. setSign(sign);//把签名数据设置到Sign这个属性中
  78. }
  79. public String getAppid() {
  80. return appid;
  81. }
  82. public void setAppid(String appid) {
  83. this.appid = appid;
  84. }
  85. public String getMch_id() {
  86. return mch_id;
  87. }
  88. public void setMch_id(String mch_id) {
  89. this.mch_id = mch_id;
  90. }
  91. public String getDevice_info() {
  92. return device_info;
  93. }
  94. public void setDevice_info(String device_info) {
  95. this.device_info = device_info;
  96. }
  97. public String getNonce_str() {
  98. return nonce_str;
  99. }
  100. public void setNonce_str(String nonce_str) {
  101. this.nonce_str = nonce_str;
  102. }
  103. public String getSign() {
  104. return sign;
  105. }
  106. public void setSign(String sign) {
  107. this.sign = sign;
  108. }
  109. public String getBody() {
  110. return body;
  111. }
  112. public void setBody(String body) {
  113. this.body = body;
  114. }
  115. public String getAttach() {
  116. return attach;
  117. }
  118. public void setAttach(String attach) {
  119. this.attach = attach;
  120. }
  121. public String getOut_trade_no() {
  122. return out_trade_no;
  123. }
  124. public void setOut_trade_no(String out_trade_no) {
  125. this.out_trade_no = out_trade_no;
  126. }
  127. public int getTotal_fee() {
  128. return total_fee;
  129. }
  130. public void setTotal_fee(int total_fee) {
  131. this.total_fee = total_fee;
  132. }
  133. public String getSpbill_create_ip() {
  134. return spbill_create_ip;
  135. }
  136. public void setSpbill_create_ip(String spbill_create_ip) {
  137. this.spbill_create_ip = spbill_create_ip;
  138. }
  139. public String getTime_start() {
  140. return time_start;
  141. }
  142. public void setTime_start(String time_start) {
  143. this.time_start = time_start;
  144. }
  145. public String getTime_expire() {
  146. return time_expire;
  147. }
  148. public void setTime_expire(String time_expire) {
  149. this.time_expire = time_expire;
  150. }
  151. public String getGoods_tag() {
  152. return goods_tag;
  153. }
  154. public void setGoods_tag(String goods_tag) {
  155. this.goods_tag = goods_tag;
  156. }
  157. public String getNotify_url() {
  158. return notify_url;
  159. }
  160. public void setNotify_url(String notify_url) {
  161. this.notify_url = notify_url;
  162. }
  163. public String getTrade_type() {
  164. return trade_type;
  165. }
  166. public void setTrade_type(String trade_type){
  167. this.trade_type = trade_type;
  168. }
  169. public String getOpenid() {
  170. return openid;
  171. }
  172. public void setOpenid(String openid) {
  173. this.openid = openid;
  174. }
  175. public Map<String,Object> toMap(){
  176. Map<String,Object> map = new HashMap<String, Object>();
  177. Field[] fields = this.getClass().getDeclaredFields();
  178. for (Field field : fields) {
  179. Object obj;
  180. try {
  181. obj = field.get(this);
  182. if(obj!=null && obj!=""){
  183. map.put(field.getName(), obj);
  184. }
  185. } catch (IllegalArgumentException e) {
  186. e.printStackTrace();
  187. } catch (IllegalAccessException e) {
  188. e.printStackTrace();
  189. }
  190. }
  191. return map;
  192. }
  193. }