ReportReqData.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package com.tencent.common.report.protocol;
  2. import com.tencent.common.Configure;
  3. import com.tencent.common.RandomStringGenerator;
  4. import com.tencent.common.Signature;
  5. import java.lang.reflect.Field;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. /**
  9. * User: rizenguo
  10. * Date: 2014/11/12
  11. * Time: 17:05
  12. */
  13. public class ReportReqData {
  14. //每个字段具体的意思请查看API文档
  15. private String appid;
  16. private String mch_id;
  17. private String sub_mch_id;
  18. private String device_info;
  19. private String nonce_str;
  20. private String sign;
  21. //上报对应的接口的完整URL,类似:https://api.mch.weixin.qq.com/pay/unifiedorder
  22. private String interface_url;
  23. //接口耗时情况,单位为毫秒
  24. private int execute_time_cost;
  25. //发起接口调用时的机器IP
  26. private String user_ip;
  27. //上报该统计请求时的系统时间,格式为yyyyMMddHHmmss
  28. private String time;
  29. //以下是API接口返回的对应数据
  30. private String return_code;
  31. private String return_msg;
  32. private String result_code;
  33. private String err_code;
  34. private String err_code_des;
  35. private String out_trade_no;
  36. /**
  37. * 请求统计上报API
  38. * @param deviceInfo 微信支付分配的终端设备号,商户自定义
  39. * @param interfaceUrl 上报对应的接口的完整URL,类似: https://api.mch.weixin.qq.com/pay/unifiedorder
  40. * @param executeTimeCost 接口耗时情况,单位为毫秒
  41. * @param returnCode API返回的对应字段
  42. * @param returnMsg API返回的对应字段
  43. * @param resultCode API返回的对应字段
  44. * @param errCode API返回的对应字段
  45. * @param errCodeDes API返回的对应字段
  46. * @param outTradeNo API返回的对应字段
  47. * @param userIp 发起接口调用时的机器IP
  48. */
  49. public ReportReqData(String deviceInfo, String interfaceUrl,int executeTimeCost, String returnCode,String returnMsg,String resultCode,String errCode,String errCodeDes, String outTradeNo,String userIp){
  50. //微信分配的公众号ID(开通公众号之后可以获取到)
  51. setAppid(Configure.getAppid());
  52. //商户系统自己生成的唯一的订单号
  53. setOut_trade_no(outTradeNo);
  54. //微信支付分配的商户号ID(开通公众号的微信支付功能之后可以获取到)
  55. setMch_id(Configure.getMchid());
  56. setSub_mch_id(Configure.getSubMchid());
  57. setDevice_info(deviceInfo);
  58. setInterface_url(interfaceUrl);
  59. setExecute_time_cost(executeTimeCost);
  60. setReturn_code(returnCode);
  61. setReturn_msg(returnMsg);
  62. setResult_code(resultCode);
  63. setErr_code(errCode);
  64. setErr_code_des(errCodeDes);
  65. setUser_ip(userIp);
  66. setTime(getTime());
  67. //随机字符串,不长于32 位
  68. setNonce_str(RandomStringGenerator.getRandomStringByLength(32));
  69. //根据API给的签名规则进行签名
  70. String sign = Signature.getSign(toMap());
  71. setSign(sign);//把签名数据设置到Sign这个属性中
  72. }
  73. public String getAppid() {
  74. return appid;
  75. }
  76. public void setAppid(String appid) {
  77. this.appid = appid;
  78. }
  79. public String getMch_id() {
  80. return mch_id;
  81. }
  82. public void setMch_id(String mch_id) {
  83. this.mch_id = mch_id;
  84. }
  85. public String getSub_mch_id() {
  86. return sub_mch_id;
  87. }
  88. public void setSub_mch_id(String sub_mch_id) {
  89. this.sub_mch_id = sub_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 getInterface_url() {
  110. return interface_url;
  111. }
  112. public void setInterface_url(String interface_url) {
  113. this.interface_url = interface_url;
  114. }
  115. public int getExecute_time_cost() {
  116. return execute_time_cost;
  117. }
  118. public void setExecute_time_cost(int execute_time) {
  119. this.execute_time_cost = execute_time;
  120. }
  121. public String getReturn_code() {
  122. return return_code;
  123. }
  124. public void setReturn_code(String return_code) {
  125. this.return_code = return_code;
  126. }
  127. public String getReturn_msg() {
  128. return return_msg;
  129. }
  130. public void setReturn_msg(String return_msg) {
  131. this.return_msg = return_msg;
  132. }
  133. public String getResult_code() {
  134. return result_code;
  135. }
  136. public void setResult_code(String result_code) {
  137. this.result_code = result_code;
  138. }
  139. public String getErr_code() {
  140. return err_code;
  141. }
  142. public void setErr_code(String err_code) {
  143. this.err_code = err_code;
  144. }
  145. public String getErr_code_des() {
  146. return err_code_des;
  147. }
  148. public void setErr_code_des(String err_code_des) {
  149. this.err_code_des = err_code_des;
  150. }
  151. public String getOut_trade_no() {
  152. return out_trade_no;
  153. }
  154. public void setOut_trade_no(String out_trade_no) {
  155. this.out_trade_no = out_trade_no;
  156. }
  157. public String getUser_ip() {
  158. return user_ip;
  159. }
  160. public void setUser_ip(String user_ip) {
  161. this.user_ip = user_ip;
  162. }
  163. public String getTime() {
  164. return time;
  165. }
  166. public void setTime(String time) {
  167. this.time = time;
  168. }
  169. public Map<String,Object> toMap(){
  170. Map<String,Object> map = new HashMap<String, Object>();
  171. Field[] fields = this.getClass().getDeclaredFields();
  172. for (Field field : fields) {
  173. Object obj;
  174. try {
  175. obj = field.get(this);
  176. if(obj!=null){
  177. map.put(field.getName(), obj);
  178. }
  179. } catch (IllegalArgumentException e) {
  180. e.printStackTrace();
  181. } catch (IllegalAccessException e) {
  182. e.printStackTrace();
  183. }
  184. }
  185. return map;
  186. }
  187. }