CheckPayFinishCmd.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.java110.acct.cmd.payment;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.acct.smo.IQrCodePaymentSMO;
  4. import com.java110.core.annotation.Java110Cmd;
  5. import com.java110.core.context.ICmdDataFlowContext;
  6. import com.java110.core.event.cmd.AbstractServiceCmdListener;
  7. import com.java110.core.event.cmd.CmdEvent;
  8. import com.java110.core.factory.CallApiServiceFactory;
  9. import com.java110.core.factory.GenerateCodeFactory;
  10. import com.java110.utils.constant.CommonConstant;
  11. import com.java110.utils.exception.CmdException;
  12. import com.java110.utils.factory.ApplicationContextFactory;
  13. import com.java110.utils.util.Assert;
  14. import com.java110.utils.util.StringUtil;
  15. import com.java110.vo.ResultVo;
  16. import org.springframework.http.HttpStatus;
  17. import org.springframework.http.ResponseEntity;
  18. /**
  19. * 扫码付
  20. */
  21. @Java110Cmd(serviceCode = "payment.checkPayFinish")
  22. public class CheckPayFinishCmd extends AbstractServiceCmdListener {
  23. private IQrCodePaymentSMO qrCodePaymentSMOImpl;
  24. @Override
  25. public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
  26. Assert.hasKeyAndValue(reqJson, "authCode", "未包含授权码");
  27. }
  28. @Override
  29. public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  30. String orderId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId);
  31. double receivedAmount = Double.parseDouble(reqJson.getString("receivedAmount"));
  32. String authCode = reqJson.getString("authCode");
  33. if (StringUtil.isEmpty(authCode) || authCode.length() < 2) {
  34. throw new IllegalArgumentException("授权码错误");
  35. }
  36. int pre = Integer.parseInt(authCode.substring(0, 2));
  37. if (pre > 24 && pre < 31) { // 支付宝
  38. qrCodePaymentSMOImpl = ApplicationContextFactory.getBean("qrCodeAliPaymentAdapt", IQrCodePaymentSMO.class);
  39. } else {
  40. qrCodePaymentSMOImpl = ApplicationContextFactory.getBean("qrCodeWechatPaymentAdapt", IQrCodePaymentSMO.class);
  41. }
  42. ResultVo resultVo = null;
  43. try {
  44. resultVo = qrCodePaymentSMOImpl.checkPayFinish(reqJson.getString("communityId"), orderId);
  45. } catch (Exception e) {
  46. cmdDataFlowContext.setResponseEntity(ResultVo.error(e.getLocalizedMessage()));
  47. return;
  48. }
  49. if (ResultVo.CODE_OK != resultVo.getCode()) {
  50. cmdDataFlowContext.setResponseEntity(ResultVo.createResponseEntity(resultVo));
  51. return;
  52. }
  53. String appId = cmdDataFlowContext.getReqHeaders().get(CommonConstant.APP_ID);
  54. String userId = cmdDataFlowContext.getReqHeaders().get(CommonConstant.USER_ID);
  55. String paramOut = CallApiServiceFactory.postForApi(appId, reqJson.toJSONString(), "fee.payFee", String.class, userId);
  56. cmdDataFlowContext.setResponseEntity(new ResponseEntity(paramOut, HttpStatus.OK));
  57. }
  58. }