ScanPayReqData.java 7.2 KB

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