/xxpay4spring-boot/src/main/java/org/xxpay/boot/service/impl/PayOrderServiceImpl.java

https://github.com/jmdhappy/xxpay-master · Java · 271 lines · 247 code · 19 blank · 5 comment · 36 complexity · 22e09f920902cbd2ada18bbcd778ed9a MD5 · raw file

  1. package org.xxpay.boot.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import org.apache.commons.lang3.StringUtils;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Service;
  6. import org.xxpay.boot.service.*;
  7. import org.xxpay.common.constant.PayConstant;
  8. import org.xxpay.common.domain.BaseParam;
  9. import org.xxpay.common.enumm.RetEnum;
  10. import org.xxpay.common.util.*;
  11. import org.xxpay.dal.dao.model.PayOrder;
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. /**
  15. * @author: dingzhiwei
  16. * @date: 17/9/8
  17. * @description:
  18. */
  19. @Service
  20. public class PayOrderServiceImpl extends BaseService implements IPayOrderService {
  21. private static final MyLog _log = MyLog.getLog(PayOrderServiceImpl.class);
  22. @Autowired
  23. private INotifyPayService notifyPayService;
  24. @Autowired
  25. private IPayChannel4WxService payChannel4WxService;
  26. @Autowired
  27. private IPayChannel4AliService payChannel4AliService;
  28. public int createPayOrder(JSONObject payOrder) {
  29. Map<String,Object> paramMap = new HashMap<>();
  30. paramMap.put("payOrder", payOrder);
  31. String jsonParam = RpcUtil.createBaseParam(paramMap);
  32. Map<String, Object> result = createPayOrder(jsonParam);
  33. String s = RpcUtil.mkRet(result);
  34. if(s == null) return 0;
  35. return Integer.parseInt(s);
  36. }
  37. public JSONObject queryPayOrder(String mchId, String payOrderId, String mchOrderNo, String executeNotify) {
  38. Map<String,Object> paramMap = new HashMap<>();
  39. Map<String, Object> result;
  40. if(StringUtils.isNotBlank(payOrderId)) {
  41. paramMap.put("mchId", mchId);
  42. paramMap.put("payOrderId", payOrderId);
  43. String jsonParam = RpcUtil.createBaseParam(paramMap);
  44. result = selectPayOrderByMchIdAndPayOrderId(jsonParam);
  45. }else {
  46. paramMap.put("mchId", mchId);
  47. paramMap.put("mchOrderNo", mchOrderNo);
  48. String jsonParam = RpcUtil.createBaseParam(paramMap);
  49. result = selectPayOrderByMchIdAndMchOrderNo(jsonParam);
  50. }
  51. String s = RpcUtil.mkRet(result);
  52. if(s == null) return null;
  53. boolean isNotify = Boolean.parseBoolean(executeNotify);
  54. JSONObject payOrder = JSONObject.parseObject(s);
  55. if(isNotify) {
  56. paramMap = new HashMap<>();
  57. paramMap.put("payOrderId", payOrderId);
  58. String jsonParam = RpcUtil.createBaseParam(paramMap);
  59. result = notifyPayService.sendBizPayNotify(jsonParam);
  60. s = RpcUtil.mkRet(result);
  61. _log.info("业务查单完成,并再次发送业务支付通知.发送结果:{}", s);
  62. }
  63. return payOrder;
  64. }
  65. public String doWxPayReq(String tradeType, JSONObject payOrder, String resKey) {
  66. Map<String,Object> paramMap = new HashMap<>();
  67. paramMap.put("tradeType", tradeType);
  68. paramMap.put("payOrder", payOrder);
  69. String jsonParam = RpcUtil.createBaseParam(paramMap);
  70. Map<String, Object> result = payChannel4WxService.doWxPayReq(jsonParam);
  71. String s = RpcUtil.mkRet(result);
  72. if(s == null) {
  73. return XXPayUtil.makeRetData(XXPayUtil.makeRetMap(PayConstant.RETURN_VALUE_SUCCESS, "", PayConstant.RETURN_VALUE_FAIL, "0111", "调用微信支付失败"), resKey);
  74. }
  75. Map<String, Object> map = XXPayUtil.makeRetMap(PayConstant.RETURN_VALUE_SUCCESS, "", PayConstant.RETURN_VALUE_SUCCESS, null);
  76. map.putAll((Map) result.get("bizResult"));
  77. return XXPayUtil.makeRetData(map, resKey);
  78. }
  79. public String doAliPayReq(String channelId, JSONObject payOrder, String resKey) {
  80. Map<String,Object> paramMap = new HashMap<>();
  81. paramMap.put("payOrder", payOrder);
  82. String jsonParam = RpcUtil.createBaseParam(paramMap);
  83. Map<String, Object> result;
  84. switch (channelId) {
  85. case PayConstant.PAY_CHANNEL_ALIPAY_MOBILE :
  86. result = payChannel4AliService.doAliPayMobileReq(jsonParam);
  87. break;
  88. case PayConstant.PAY_CHANNEL_ALIPAY_PC :
  89. result = payChannel4AliService.doAliPayPcReq(jsonParam);
  90. break;
  91. case PayConstant.PAY_CHANNEL_ALIPAY_WAP :
  92. result = payChannel4AliService.doAliPayWapReq(jsonParam);
  93. break;
  94. case PayConstant.PAY_CHANNEL_ALIPAY_QR :
  95. result = payChannel4AliService.doAliPayQrReq(jsonParam);
  96. break;
  97. default:
  98. result = null;
  99. break;
  100. }
  101. String s = RpcUtil.mkRet(result);
  102. if(s == null) {
  103. return XXPayUtil.makeRetData(XXPayUtil.makeRetMap(PayConstant.RETURN_VALUE_SUCCESS, "", PayConstant.RETURN_VALUE_FAIL, "0111", "调用支付宝支付失败"), resKey);
  104. }
  105. Map<String, Object> map = XXPayUtil.makeRetMap(PayConstant.RETURN_VALUE_SUCCESS, "", PayConstant.RETURN_VALUE_SUCCESS, null);
  106. map.putAll((Map) result.get("bizResult"));
  107. return XXPayUtil.makeRetData(map, resKey);
  108. }
  109. @Override
  110. public Map createPayOrder(String jsonParam) {
  111. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  112. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  113. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  114. _log.warn("新增支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  115. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  116. }
  117. JSONObject payOrderObj = baseParam.isNullValue("payOrder") ? null : JSONObject.parseObject(bizParamMap.get("payOrder").toString());
  118. if(payOrderObj == null) {
  119. _log.warn("新增支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  120. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  121. }
  122. PayOrder payOrder = BeanConvertUtils.map2Bean(payOrderObj, PayOrder.class);
  123. if(payOrder == null) {
  124. _log.warn("新增支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  125. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  126. }
  127. int result = super.baseCreatePayOrder(payOrder);
  128. return RpcUtil.createBizResult(baseParam, result);
  129. }
  130. @Override
  131. public Map selectPayOrder(String jsonParam) {
  132. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  133. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  134. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  135. _log.warn("根据支付订单号查询支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  136. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  137. }
  138. String payOrderId = baseParam.isNullValue("payOrderId") ? null : bizParamMap.get("payOrderId").toString();
  139. if (ObjectValidUtil.isInvalid(payOrderId)) {
  140. _log.warn("根据支付订单号查询支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  141. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  142. }
  143. PayOrder payOrder = super.baseSelectPayOrder(payOrderId);
  144. if(payOrder == null) return RpcUtil.createFailResult(baseParam, RetEnum.RET_BIZ_DATA_NOT_EXISTS);
  145. String jsonResult = JsonUtil.object2Json(payOrder);
  146. return RpcUtil.createBizResult(baseParam, jsonResult);
  147. }
  148. @Override
  149. public Map selectPayOrderByMchIdAndPayOrderId(String jsonParam) {
  150. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  151. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  152. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  153. _log.warn("根据商户号和支付订单号查询支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  154. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  155. }
  156. String mchId = baseParam.isNullValue("mchId") ? null : bizParamMap.get("mchId").toString();
  157. String payOrderId = baseParam.isNullValue("payOrderId") ? null : bizParamMap.get("payOrderId").toString();
  158. if (ObjectValidUtil.isInvalid(mchId, payOrderId)) {
  159. _log.warn("根据商户号和支付订单号查询支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  160. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  161. }
  162. PayOrder payOrder = super.baseSelectPayOrderByMchIdAndPayOrderId(mchId, payOrderId);
  163. if(payOrder == null) return RpcUtil.createFailResult(baseParam, RetEnum.RET_BIZ_DATA_NOT_EXISTS);
  164. String jsonResult = JsonUtil.object2Json(payOrder);
  165. return RpcUtil.createBizResult(baseParam, jsonResult);
  166. }
  167. @Override
  168. public Map selectPayOrderByMchIdAndMchOrderNo(String jsonParam) {
  169. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  170. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  171. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  172. _log.warn("根据商户号和商户订单号查询支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  173. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  174. }
  175. String mchId = baseParam.isNullValue("mchId") ? null : bizParamMap.get("mchId").toString();
  176. String mchOrderNo = baseParam.isNullValue("mchOrderNo") ? null : bizParamMap.get("mchOrderNo").toString();
  177. if (ObjectValidUtil.isInvalid(mchId, mchOrderNo)) {
  178. _log.warn("根据商户号和商户订单号查询支付订单失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  179. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  180. }
  181. PayOrder payOrder = super.baseSelectPayOrderByMchIdAndMchOrderNo(mchId, mchOrderNo);
  182. if(payOrder == null) return RpcUtil.createFailResult(baseParam, RetEnum.RET_BIZ_DATA_NOT_EXISTS);
  183. String jsonResult = JsonUtil.object2Json(payOrder);
  184. return RpcUtil.createBizResult(baseParam, jsonResult);
  185. }
  186. @Override
  187. public Map updateStatus4Ing(String jsonParam) {
  188. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  189. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  190. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  191. _log.warn("修改支付订单状态为支付中失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  192. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  193. }
  194. String payOrderId = baseParam.isNullValue("payOrderId") ? null : bizParamMap.get("payOrderId").toString();
  195. String channelOrderNo = baseParam.isNullValue("channelOrderNo") ? null : bizParamMap.get("channelOrderNo").toString();
  196. if (ObjectValidUtil.isInvalid(payOrderId, channelOrderNo)) {
  197. _log.warn("修改支付订单状态为支付中失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  198. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  199. }
  200. int result = super.baseUpdateStatus4Ing(payOrderId, channelOrderNo);
  201. return RpcUtil.createBizResult(baseParam, result);
  202. }
  203. @Override
  204. public Map updateStatus4Success(String jsonParam) {
  205. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  206. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  207. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  208. _log.warn("修改支付订单状态为支付成功失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  209. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  210. }
  211. String payOrderId = baseParam.isNullValue("payOrderId") ? null : bizParamMap.get("payOrderId").toString();
  212. if (ObjectValidUtil.isInvalid(payOrderId)) {
  213. _log.warn("修改支付订单状态为支付成功失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  214. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  215. }
  216. int result = super.baseUpdateStatus4Success(payOrderId, null);
  217. return RpcUtil.createBizResult(baseParam, result);
  218. }
  219. @Override
  220. public Map updateStatus4Complete(String jsonParam) {
  221. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  222. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  223. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  224. _log.warn("修改支付订单状态为支付完成失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  225. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  226. }
  227. String payOrderId = baseParam.isNullValue("payOrderId") ? null : bizParamMap.get("payOrderId").toString();
  228. if (ObjectValidUtil.isInvalid(payOrderId)) {
  229. _log.warn("修改支付订单状态为支付完成失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  230. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  231. }
  232. int result = super.baseUpdateStatus4Complete(payOrderId);
  233. return RpcUtil.createBizResult(baseParam, result);
  234. }
  235. @Override
  236. public Map updateNotify(String jsonParam) {
  237. BaseParam baseParam = JsonUtil.getObjectFromJson(jsonParam, BaseParam.class);
  238. Map<String, Object> bizParamMap = baseParam.getBizParamMap();
  239. if (ObjectValidUtil.isInvalid(bizParamMap)) {
  240. _log.warn("修改支付订单通知次数失败, {}. jsonParam={}", RetEnum.RET_PARAM_NOT_FOUND.getMessage(), jsonParam);
  241. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_NOT_FOUND);
  242. }
  243. String payOrderId = baseParam.isNullValue("payOrderId") ? null : bizParamMap.get("payOrderId").toString();
  244. Byte count = baseParam.isNullValue("count") ? null : Byte.parseByte(bizParamMap.get("count").toString());
  245. if (ObjectValidUtil.isInvalid(payOrderId, count)) {
  246. _log.warn("修改支付订单通知次数失败, {}. jsonParam={}", RetEnum.RET_PARAM_INVALID.getMessage(), jsonParam);
  247. return RpcUtil.createFailResult(baseParam, RetEnum.RET_PARAM_INVALID);
  248. }
  249. int result = super.baseUpdateNotify(payOrderId, count);
  250. return RpcUtil.createBizResult(baseParam, result);
  251. }
  252. }