PinganUtil.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. package com.kmall.common.utils.pingan;
  2. import com.kmall.common.utils.DateUtils;
  3. import com.kmall.common.utils.MapUtils;
  4. import com.kmall.common.utils.StringUtils;
  5. import com.kmall.common.utils.pingan.dto.PinganPayOrderDto;
  6. import com.kmall.common.utils.pingan.dto.PinganResponseDto;
  7. import com.kmall.common.utils.pingan.properties.PinganPayPropertiesBuilder;
  8. import com.kmall.common.utils.pingan.utils.InterfaceParams;
  9. import com.kmall.common.utils.pingan.utils.TLinx2Util;
  10. import com.kmall.common.utils.pingan.utils.TLinxAESCoder;
  11. import com.kmall.common.utils.pingan.utils.TLinxSHA1;
  12. import com.kmall.common.utils.wechat.WechatRefundQueryResult;
  13. import net.sf.json.JSONObject;
  14. import org.apache.commons.logging.Log;
  15. import org.apache.commons.logging.LogFactory;
  16. import org.apache.log4j.Logger;
  17. import java.util.Date;
  18. import java.util.TreeMap;
  19. public class PinganUtil {
  20. private static final String SUCCESS_CODE = "0";
  21. private static Log logger = LogFactory.getLog(PinganUtil.class);
  22. /**
  23. * 构建平安支付订单信息
  24. */
  25. public static PinganPayOrderDto buildPayOrderDto(JSONObject dataObject) {
  26. PinganPayOrderDto payorder = new PinganPayOrderDto();
  27. payorder.setOutNo(StringUtils.isNullOrEmpty(MapUtils.getString("out_no", dataObject)) || MapUtils.getString("out_no", dataObject).equals("null") ? null : MapUtils.getString("out_no", dataObject));
  28. payorder.setPmtName(StringUtils.isNullOrEmpty(MapUtils.getString("pmt_name", dataObject)) || MapUtils.getString("pmt_name", dataObject).equals("null") ? null : MapUtils.getString("pmt_name", dataObject));
  29. payorder.setPmtTag(StringUtils.isNullOrEmpty(MapUtils.getString("pmt_tag", dataObject)) || MapUtils.getString("pmt_tag", dataObject).equals("null") ? null : MapUtils.getString("pmt_tag", dataObject));
  30. payorder.setOrdMctId(MapUtils.getInteger("ord_mct_id", dataObject));
  31. payorder.setOrdShopId(MapUtils.getInteger("ord_shop_id", dataObject));
  32. payorder.setOrdCurrency(StringUtils.isNullOrEmpty(MapUtils.getString("ord_currency", dataObject)) || MapUtils.getString("ord_currency", dataObject).equals("null") ? null : MapUtils.getString("ord_currency", dataObject));
  33. payorder.setCurrencySign(StringUtils.isNullOrEmpty(MapUtils.getString("currency_sign", dataObject)) || MapUtils.getString("currency_sign", dataObject).equals("null") ? null : MapUtils.getString("currency_sign", dataObject));
  34. payorder.setOrdNo(StringUtils.isNullOrEmpty(MapUtils.getString("ord_no", dataObject)) || MapUtils.getString("ord_no", dataObject).equals("null") ? null : MapUtils.getString("ord_no", dataObject));
  35. payorder.setOrdType(MapUtils.getInteger("ord_type", dataObject));
  36. payorder.setOriginalAmount(MapUtils.getInteger("original_amount", dataObject));
  37. payorder.setDiscountAmount(MapUtils.getInteger("discount_amount", dataObject));
  38. payorder.setIgnoreAmount(MapUtils.getInteger("ignore_amount", dataObject));
  39. payorder.setTradeAccount(StringUtils.isNullOrEmpty(MapUtils.getString("trade_account", dataObject)) || MapUtils.getString("trade_account", dataObject).equals("null") ? null : MapUtils.getString("trade_account", dataObject));
  40. payorder.setTradeNo(StringUtils.isNullOrEmpty(MapUtils.getString("trade_no", dataObject)) || MapUtils.getString("trade_no", dataObject).equals("null") ? null : MapUtils.getString("trade_no", dataObject));
  41. payorder.setTradeAmount(MapUtils.getInteger("trade_amount", dataObject));
  42. payorder.setTradeQrcode(StringUtils.isNullOrEmpty(MapUtils.getString("trade_qrcode", dataObject)) || MapUtils.getString("trade_qrcode", dataObject).equals("null") ? null : MapUtils.getString("trade_qrcode", dataObject));
  43. payorder.setAmount(StringUtils.isNullOrEmpty(MapUtils.getString("amount", dataObject)) || MapUtils.getString("amount", dataObject).equals("null") ? null : MapUtils.getString("amount", dataObject));
  44. payorder.setTradeTime(StringUtils.isNullOrEmpty(MapUtils.getString("trade_time", dataObject)) || MapUtils.getString("trade_time", dataObject) == null || MapUtils.getString("trade_time", dataObject).equals("null") ? null : DateUtils.strToDate(MapUtils.getString("trade_time", dataObject)));
  45. payorder.setTradePayTime(StringUtils.isNullOrEmpty(MapUtils.getString("trade_pay_time", dataObject)) || MapUtils.getString("trade_pay_time", dataObject) == null || MapUtils.getString("trade_pay_time", dataObject).equals("null") ? null : DateUtils.strToDate(MapUtils.getString("trade_pay_time", dataObject)));
  46. payorder.setPayTime(StringUtils.isNullOrEmpty(MapUtils.getString("pay_time", dataObject)) || MapUtils.getString("pay_time", dataObject).equals("null") ? null : MapUtils.getString("pay_time", dataObject));
  47. payorder.setStatus(MapUtils.getInteger("status", dataObject));
  48. payorder.setTradeResult(StringUtils.isNullOrEmpty(MapUtils.getString("trade_result", dataObject)) || MapUtils.getString("trade_result", dataObject).equals("null") ? null : MapUtils.getString("trade_result", dataObject));
  49. payorder.setJsapiPayUrl(StringUtils.isNullOrEmpty(MapUtils.getString("jsapi_pay_url", dataObject)) || MapUtils.getString("jsapi_pay_url", dataObject).equals("null") ? null : MapUtils.getString("jsapi_pay_url", dataObject));
  50. payorder.setJsapiPayUrl(StringUtils.isNullOrEmpty(MapUtils.getString("rand_str", dataObject)) || MapUtils.getString("rand_str", dataObject).equals("null") ? null : MapUtils.getString("rand_str", dataObject));
  51. payorder.setAppid(StringUtils.isNullOrEmpty(MapUtils.getString("appId", dataObject)) || MapUtils.getString("appId", dataObject).equals("null") ? null : MapUtils.getString("appId", dataObject));
  52. payorder.setNoncestr(StringUtils.isNullOrEmpty(MapUtils.getString("nonceStr", dataObject)) || MapUtils.getString("nonceStr", dataObject).equals("null") ? null : MapUtils.getString("nonceStr", dataObject));
  53. payorder.setSigntype(StringUtils.isNullOrEmpty(MapUtils.getString("signType", dataObject)) || MapUtils.getString("signType", dataObject).equals("null") ? null : MapUtils.getString("signType", dataObject));
  54. payorder.setPrepayId(StringUtils.isNullOrEmpty(MapUtils.getString("package", dataObject)) || MapUtils.getString("package", dataObject).equals("null") ? null : MapUtils.getString("package", dataObject));
  55. payorder.setPaysign(StringUtils.isNullOrEmpty(MapUtils.getString("paySign", dataObject)) || MapUtils.getString("paySign", dataObject).equals("null") ? null : MapUtils.getString("paySign", dataObject));
  56. payorder.setTimeStamp(StringUtils.isNullOrEmpty(MapUtils.getString("timeStamp", dataObject)) || MapUtils.getString("timeStamp", dataObject).equals("null") ? null : MapUtils.getString("timeStamp", dataObject));
  57. return payorder;
  58. }
  59. public static WechatRefundQueryResult buildWechatRefundQueryResult(JSONObject tradeResult, int count) {
  60. WechatRefundQueryResult refundQueryResult = new WechatRefundQueryResult();
  61. refundQueryResult.setOut_refund_no(StringUtils.isNullOrEmpty(MapUtils.getString("out_refund_no_" + (count), tradeResult)) || MapUtils.getString("out_refund_no_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("out_refund_no_" + (count), tradeResult));
  62. refundQueryResult.setRefund_account(StringUtils.isNullOrEmpty(MapUtils.getString("refund_account_" + (count), tradeResult)) || MapUtils.getString("refund_account_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("refund_account_" + (count), tradeResult));
  63. refundQueryResult.setRefund_channel(StringUtils.isNullOrEmpty(MapUtils.getString("refund_channel_" + (count), tradeResult)) || MapUtils.getString("refund_channel_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("refund_channel_" + (count), tradeResult));
  64. refundQueryResult.setRefund_fee(StringUtils.isNullOrEmpty(MapUtils.getString("refund_fee_" + (count), tradeResult)) || MapUtils.getString("refund_fee_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("refund_fee_" + (count), tradeResult));
  65. refundQueryResult.setRefund_id(StringUtils.isNullOrEmpty(MapUtils.getString("refund_id_" + (count), tradeResult)) || MapUtils.getString("refund_id_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("refund_id_" + (count), tradeResult));
  66. refundQueryResult.setRefund_recv_accout(StringUtils.isNullOrEmpty(MapUtils.getString("refund_recv_accout_" + (count), tradeResult)) || MapUtils.getString("refund_recv_accout_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("refund_recv_accout_" + (count), tradeResult));
  67. refundQueryResult.setRefund_status(StringUtils.isNullOrEmpty(MapUtils.getString("refund_status_" + (count), tradeResult)) || MapUtils.getString("refund_status_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("refund_status_" + (count), tradeResult));
  68. refundQueryResult.setRefund_success_time(StringUtils.isNullOrEmpty(MapUtils.getString("refund_success_time_" + (count), tradeResult)) || MapUtils.getString("refund_success_time_" + (count), tradeResult).equals("null") ? null : MapUtils.getString("refund_success_time_" + (count), tradeResult));
  69. return refundQueryResult;
  70. }
  71. public static WechatRefundQueryResult buildWechatRefundQueryResult(JSONObject tradeResult) {
  72. WechatRefundQueryResult refundQueryResult = new WechatRefundQueryResult();
  73. refundQueryResult.setOut_refund_no(StringUtils.isNullOrEmpty(MapUtils.getString("out_refund_no", tradeResult)) || MapUtils.getString("out_refund_no", tradeResult).equals("null") ? null : MapUtils.getString("out_refund_no", tradeResult));
  74. refundQueryResult.setRefund_account(StringUtils.isNullOrEmpty(MapUtils.getString("refund_account", tradeResult)) || MapUtils.getString("refund_account", tradeResult).equals("null") ? null : MapUtils.getString("refund_account", tradeResult));
  75. refundQueryResult.setRefund_channel(StringUtils.isNullOrEmpty(MapUtils.getString("refund_channel", tradeResult)) || MapUtils.getString("refund_channel", tradeResult).equals("null") ? null : MapUtils.getString("refund_channel", tradeResult));
  76. refundQueryResult.setRefund_fee(StringUtils.isNullOrEmpty(MapUtils.getString("refund_fee", tradeResult)) || MapUtils.getString("refund_fee", tradeResult).equals("null") ? null : MapUtils.getString("refund_fee", tradeResult));
  77. refundQueryResult.setRefund_id(StringUtils.isNullOrEmpty(MapUtils.getString("refund_id", tradeResult)) || MapUtils.getString("refund_id", tradeResult).equals("null") ? null : MapUtils.getString("refund_id", tradeResult));
  78. refundQueryResult.setRefund_recv_accout(StringUtils.isNullOrEmpty(MapUtils.getString("refund_recv_accout", tradeResult)) || MapUtils.getString("refund_recv_accout", tradeResult).equals("null") ? null : MapUtils.getString("refund_recv_accout", tradeResult));
  79. refundQueryResult.setRefund_status(StringUtils.isNullOrEmpty(MapUtils.getString("refund_status", tradeResult)) || MapUtils.getString("refund_status", tradeResult).equals("null") ? null : MapUtils.getString("refund_status", tradeResult));
  80. refundQueryResult.setRefund_success_time(StringUtils.isNullOrEmpty(MapUtils.getString("refund_success_time", tradeResult)) || MapUtils.getString("refund_success_time", tradeResult).equals("null") ? null : MapUtils.getString("refund_success_time", tradeResult));
  81. return refundQueryResult;
  82. }
  83. /**
  84. * 平安订单退款接口
  85. */
  86. public static PinganResponseDto pinganPayRefund(String outNo, String refundOutNo, Integer refundAmount, String tradeNo) {
  87. // 初始化参数
  88. String timestamp = new Date().getTime() / 1000 + ""; // 时间
  89. PinganResponseDto response = null;
  90. try {
  91. // 固定参数
  92. TreeMap<String, String> postmap = new TreeMap<String, String>(); // 请求参数的map
  93. postmap.put("open_id", PinganPayPropertiesBuilder.instance().getPayOpenId());
  94. postmap.put("timestamp", timestamp);
  95. TreeMap<String, String> datamap = new TreeMap<String, String>(); // data参数的map
  96. datamap.put("out_no", outNo);
  97. datamap.put("refund_out_no", refundOutNo);
  98. datamap.put("refund_amount", refundAmount + "");
  99. datamap.put("trade_no", tradeNo);
  100. datamap.put("shop_pass", TLinxSHA1.SHA1("123456"));
  101. TLinx2Util.handleEncrypt(datamap, postmap);
  102. postmap.put("sign_type", "RSA");
  103. TLinx2Util.handleSignRSA(postmap);
  104. String rspStr = TLinx2Util.handlePost(postmap, InterfaceParams.PAYREFUND);
  105. System.out.println("返回字符串=" + rspStr);
  106. JSONObject respObject = JSONObject.fromObject(rspStr);
  107. logger.info("返回错误码:【" + MapUtils.getString("errcode", respObject) + "】");
  108. logger.info("返回错误提示【" + MapUtils.getString("msg", respObject) + "】");
  109. logger.info("平安支付下单返回数据:【" + MapUtils.getString("data", respObject) + "】");
  110. logger.info("接口签名【" + MapUtils.getString("sign", respObject) + "】");
  111. response = new PinganResponseDto();
  112. response.setErrcode(MapUtils.getString("errcode", respObject));
  113. response.setMsg(MapUtils.getString("msg", respObject));
  114. response.setData(MapUtils.getString("data", respObject));
  115. response.setSign(MapUtils.getString("sign", respObject));
  116. if (StringUtils.isNotEmpty(MapUtils.getString("timestamp", respObject))) {
  117. Long tstm = Long.parseLong(MapUtils.getString("timestamp", respObject)) * 1000;
  118. response.setTimestamp(new Date(tstm));
  119. }
  120. response.setReqInterface(InterfaceParams.PAYREFUND);
  121. if (SUCCESS_CODE.equals(MapUtils.getString("errcode", respObject))) {
  122. Object dataStr = MapUtils.getString("data", respObject);
  123. if (!rspStr.isEmpty() && (dataStr != null)) {
  124. if (TLinx2Util.verifySign(respObject)) { // 验签成功
  125. String respData = TLinxAESCoder.decrypt(dataStr.toString(), PinganPayPropertiesBuilder.instance().getPayOpenKey());
  126. System.out.println("==================响应data内容:" + respData);
  127. response.setDatajson(respData);
  128. } else {
  129. System.out.println("=====验签失败=====");
  130. }
  131. } else {
  132. System.out.println("=====没有返回data数据=====");
  133. }
  134. }
  135. } catch (Exception e) {
  136. e.printStackTrace();
  137. }
  138. return response;
  139. }
  140. /**
  141. * 平安订单取消接口
  142. * 1、接口适用于所有等待支付的订单。
  143. * 2、已成功支付的只支持“微信刷卡”类型的订单取消。
  144. * 3、仅当日订单可以触发,已支付订单按支付完成时间,未支付订单按订单下单时间。
  145. * 4、下单后,系统会在12分钟后自动取消未支付订单,调用本接口前请先查询订单状态。
  146. */
  147. public static PinganResponseDto pinganPayCancel(String ordNo, String outNo) {
  148. // 初始化参数
  149. String timestamp = new Date().getTime() / 1000 + ""; // 时间
  150. PinganResponseDto response = null;
  151. try {
  152. // 固定参数
  153. TreeMap<String, String> postmap = new TreeMap<String, String>(); // 请求参数的map
  154. postmap.put("open_id", PinganPayPropertiesBuilder.instance().getPayOpenId());
  155. postmap.put("timestamp", timestamp);
  156. TreeMap<String, String> datamap = new TreeMap<String, String>(); // data参数的map
  157. datamap.put("out_no", outNo);
  158. datamap.put("ord_no", ordNo);
  159. TLinx2Util.handleEncrypt(datamap, postmap);
  160. //签名方式
  161. postmap.put("sign_type", "RSA");
  162. System.out.println("postmap---:" + postmap);
  163. TLinx2Util.handleSignRSA(postmap);
  164. String rspStr = TLinx2Util.handlePost(postmap, InterfaceParams.PAYCANCEL);
  165. System.out.println("返回字符串=" + new String(rspStr.getBytes("UTF-8")));
  166. JSONObject respObject = JSONObject.fromObject(rspStr);
  167. logger.info("返回错误码:【" + MapUtils.getString("errcode", respObject) + "】");
  168. logger.info("返回错误提示【" + MapUtils.getString("msg", respObject) + "】");
  169. logger.info("平安支付下单返回数据:【" + MapUtils.getString("data", respObject) + "】");
  170. logger.info("接口签名【" + MapUtils.getString("sign", respObject) + "】");
  171. response = new PinganResponseDto();
  172. response.setErrcode(MapUtils.getString("errcode", respObject));
  173. response.setMsg(MapUtils.getString("msg", respObject));
  174. response.setData(MapUtils.getString("data", respObject));
  175. response.setSign(MapUtils.getString("sign", respObject));
  176. if (StringUtils.isNotEmpty(MapUtils.getString("timestamp", respObject))) {
  177. Long tstm = Long.parseLong(MapUtils.getString("timestamp", respObject)) * 1000;
  178. response.setTimestamp(new Date(tstm));
  179. }
  180. response.setReqInterface(InterfaceParams.PAYCANCEL);
  181. if (SUCCESS_CODE.equals(MapUtils.getString("errcode", respObject))) {
  182. Object dataStr = MapUtils.getString("data", respObject);
  183. if (!rspStr.isEmpty() || (dataStr != null)) {
  184. if (TLinx2Util.verifySign(respObject)) { // 验签成功
  185. String respData = TLinxAESCoder.decrypt(dataStr.toString(), PinganPayPropertiesBuilder.instance().getPayOpenKey());
  186. System.out.println("==================响应data内容:" + respData);
  187. response.setDatajson(respData);
  188. } else {
  189. System.out.println("=====验签失败=====");
  190. }
  191. } else {
  192. System.out.println("=====没有返回data数据=====");
  193. }
  194. }
  195. } catch (Exception e) {
  196. e.printStackTrace();
  197. }
  198. return response;
  199. }
  200. /**
  201. * 平安查询付款状态
  202. */
  203. public static PinganResponseDto pinganPaystatus(String outNo) {
  204. // 初始化参数
  205. String timestamp = new Date().getTime() / 1000 + ""; // 时间
  206. PinganResponseDto response = null;
  207. try {
  208. // 固定参数
  209. TreeMap<String, String> postmap = new TreeMap<String, String>(); // 请求参数的map
  210. postmap.put("open_id", PinganPayPropertiesBuilder.instance().getPayOpenId());
  211. postmap.put("timestamp", timestamp);
  212. TreeMap<String, String> datamap = new TreeMap<String, String>(); // data参数的map
  213. datamap.put("out_no", outNo);
  214. TLinx2Util.handleEncrypt(datamap, postmap);
  215. TLinx2Util.handleSign(postmap);
  216. String rspStr = TLinx2Util.handlePost(postmap, InterfaceParams.QUERYPAYSTATUS);
  217. System.out.println("返回字符串=" + rspStr);
  218. JSONObject respObject = JSONObject.fromObject(rspStr);
  219. logger.info("返回错误码:【" + MapUtils.getString("errcode", respObject) + "】");
  220. logger.info("返回错误提示【" + MapUtils.getString("msg", respObject) + "】");
  221. logger.info("平安支付下单返回数据:【" + MapUtils.getString("data", respObject) + "】");
  222. logger.info("接口签名【" + MapUtils.getString("sign", respObject) + "】");
  223. response = new PinganResponseDto();
  224. response.setErrcode(MapUtils.getString("errcode", respObject));
  225. response.setMsg(MapUtils.getString("msg", respObject));
  226. response.setData(MapUtils.getString("data", respObject));
  227. response.setSign(MapUtils.getString("sign", respObject));
  228. if (StringUtils.isNotEmpty(MapUtils.getString("timestamp", respObject))) {
  229. Long tstm = Long.parseLong(MapUtils.getString("timestamp", respObject)) * 1000;
  230. response.setTimestamp(new Date(tstm));
  231. }
  232. response.setReqInterface(InterfaceParams.QUERYPAYSTATUS);
  233. if (SUCCESS_CODE.equals(MapUtils.getString("errcode", respObject))) {
  234. Object dataStr = MapUtils.getString("data", respObject);
  235. if (!rspStr.isEmpty() || (dataStr != null)) {
  236. if (TLinx2Util.verifySign(respObject)) { // 验签成功
  237. String respData = TLinxAESCoder.decrypt(dataStr.toString(), PinganPayPropertiesBuilder.instance().getPayOpenKey());
  238. System.out.println("==================响应data内容:" + respData);
  239. response.setDatajson(respData);
  240. } else {
  241. System.out.println("=====验签失败=====");
  242. }
  243. } else {
  244. System.out.println("=====没有返回data数据=====");
  245. }
  246. }
  247. } catch (Exception e) {
  248. e.printStackTrace();
  249. }
  250. return response;
  251. }
  252. /**
  253. * 平安订单退款查询
  254. */
  255. public static PinganResponseDto pinganQueryRefund(String refund_out_no, String refund_ord_no) {
  256. // 初始化参数
  257. String timestamp = new Date().getTime() / 1000 + ""; // 时间
  258. PinganResponseDto response = null;
  259. try {
  260. // 固定参数
  261. TreeMap<String, String> postmap = new TreeMap<String, String>(); // 请求参数的map
  262. postmap.put("open_id", PinganPayPropertiesBuilder.instance().getPayOpenId());
  263. postmap.put("timestamp", timestamp);
  264. TreeMap<String, String> datamap = new TreeMap<String, String>(); // data参数的map
  265. datamap.put("refund_out_no", refund_out_no);
  266. datamap.put("refund_ord_no", refund_ord_no);
  267. TLinx2Util.handleEncrypt(datamap, postmap);
  268. TLinx2Util.handleSign(postmap);
  269. String rspStr = TLinx2Util.handlePost(postmap, InterfaceParams.QUERYPAYREFUND);
  270. System.out.println("返回字符串=" + rspStr);
  271. JSONObject respObject = JSONObject.fromObject(rspStr);
  272. logger.info("返回错误码:【" + MapUtils.getString("errcode", respObject) + "】");
  273. logger.info("返回错误提示【" + MapUtils.getString("msg", respObject) + "】");
  274. logger.info("平安支付下单返回数据:【" + MapUtils.getString("data", respObject) + "】");
  275. logger.info("接口签名【" + MapUtils.getString("sign", respObject) + "】");
  276. response = new PinganResponseDto();
  277. response.setErrcode(MapUtils.getString("errcode", respObject));
  278. response.setMsg(MapUtils.getString("msg", respObject));
  279. response.setData(MapUtils.getString("data", respObject));
  280. response.setSign(MapUtils.getString("sign", respObject));
  281. if (StringUtils.isNotEmpty(MapUtils.getString("timestamp", respObject))) {
  282. Long tstm = Long.parseLong(MapUtils.getString("timestamp", respObject)) * 1000;
  283. response.setTimestamp(new Date(tstm));
  284. }
  285. response.setReqInterface(InterfaceParams.QUERYPAYREFUND);
  286. if (SUCCESS_CODE.equals(MapUtils.getString("errcode", respObject))) {
  287. Object dataStr = MapUtils.getString("data", respObject);
  288. if (!rspStr.isEmpty() && (dataStr != null)) {
  289. if (TLinx2Util.verifySign(respObject)) { // 验签成功
  290. String respData = TLinxAESCoder.decrypt(dataStr.toString(), PinganPayPropertiesBuilder.instance().getPayOpenKey());
  291. System.out.println("==================响应data内容:" + respData);
  292. response.setDatajson(respData);
  293. } else {
  294. System.out.println("=====验签失败=====");
  295. }
  296. } else {
  297. System.out.println("=====没有返回data数据=====");
  298. }
  299. }
  300. } catch (Exception e) {
  301. e.printStackTrace();
  302. }
  303. return response;
  304. }
  305. }