1
0

CusPayDataSender.java 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.kmall.common.manager.tocus;
  2. import com.kmall.common.constant.Dict;
  3. import com.kmall.common.entity.CusReqRecordEntity;
  4. import com.kmall.common.entity.pay.data.open.PayExInfo;
  5. import com.kmall.common.entity.pay.data.open.ResponseMsg;
  6. import com.kmall.common.utils.JacksonUtils;
  7. import com.kmall.common.utils.OkHttpUtils;
  8. import com.kmall.common.utils.pay.data.open.cus.CusPropertiesBuilder;
  9. import com.kmall.common.utils.pay.data.open.websocket.WebsocketPropertiesBuilder;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import java.util.Date;
  14. import java.util.HashMap;
  15. import java.util.Map;
  16. /**
  17. * 向海关发送支付原始数据
  18. *
  19. * @author Scott Chen
  20. * @since 1.0
  21. * 2018-12-25
  22. */
  23. public class CusPayDataSender {
  24. private static final Logger logger = LoggerFactory.getLogger(CusPayDataSender.class);
  25. /**
  26. * 发送海关数据
  27. * @param payExInfo
  28. * @param signValue
  29. * @return
  30. */
  31. public static String send(PayExInfo payExInfo, String signValue) {
  32. // 发送数据中增加证书序号和签名值
  33. payExInfo.setCertNo(WebsocketPropertiesBuilder.instance().getCardNo());
  34. payExInfo.setSignValue(signValue);
  35. String payExInfoStr = JacksonUtils.toJson(payExInfo);
  36. //payExInfoStr = "{\"sessionID\":\"7c73b9-962f45c2-348439e5\",\"payExchangeInfoHead\":{\"guid\":\"C4B0E1DB-7EFE-4C9D-9CE8-2FFB3884619A\",\"initalRequest\":\"request data\",\"initalResponse\":\"response data\",\"ebpCode\":\"4403160Z3Y\",\"payCode\":\"440316T004\",\"payTransactionId\":\"EMATO201812200305\",\"totalAmount\":100.01,\"currency\":\"142\",\"verDept\":\"3\",\"payType\":\"1\",\"tradingTime\":\"2018-12-20 13:33:20\",\"note\":\"批量订单,测试订单优化,生成多个so订单\"},\"payExchangeInfoLists\":[{\"orderNo\":\"EMATO201812200305\",\"goodsInfo\":[{\"gname\":\"Nivea90g\",\"itemLink\":\"http://ai.k1net.com/search/index.htm?key=aaa\"},{\"gname\":\"Nivea2100g\",\"itemLink\":\"http://ai.k1net.com/search/index.htm?key=bbb\"}],\"recpAccount\":\"20000032506200012146872\",\"recpCode\":\"91440300MA5DGG1J0R\",\"recpName\":\"abccc\"}],\"serviceTime\":\"1545646340365\",\"certNo\":\"00f2f3e3\",\"signValue\":\"" + signValue + "\"}";
  37. logger.debug("payExInfoStr: {}", payExInfoStr);
  38. Map<String, Object> map = new HashMap<>();
  39. map.put("payExInfoStr", payExInfoStr);
  40. String contents = JacksonUtils.toJson(map);
  41. logger.debug("send pay data: {}", contents);
  42. String resp = OkHttpUtils.post(map, CusPropertiesBuilder.instance().getPayDateUrl(), "SSL");
  43. return resp;
  44. }
  45. /**
  46. * 处理海关返回消息
  47. * @param result
  48. */
  49. public static CusReqRecordEntity response(String result, CusReqRecordEntity record) {
  50. if (StringUtils.isBlank(result)) {
  51. String str = "发送海关支付原始数据返回空";
  52. logger.error(str);
  53. // 更新状态
  54. record.setStatus(Dict.cusDateOpenStatus.item_20000.getItem());
  55. record.setMessage(str);
  56. record.setModTime(new Date());
  57. return record;
  58. }
  59. ResponseMsg resp = JacksonUtils.fromStringJson(result, ResponseMsg.class);
  60. String code = resp.getCode();
  61. if (ResponseMsg.SUCCESS_CODE.equals(code)) {
  62. logger.info("发送海关成功,返回消息: {}", result);
  63. // 更新状态
  64. record.setStatus(Dict.cusDateOpenStatus.item_10000.getItem());
  65. record.setMessage(resp.getMessage());
  66. record.setModTime(new Date());
  67. return record;
  68. } else {
  69. logger.error("发送海关失败,返回消息: {}", result);
  70. // 更新状态
  71. record.setStatus(code);
  72. record.setMessage(resp.getMessage());
  73. record.setModTime(new Date());
  74. return record;
  75. }
  76. }
  77. }