Browse Source

feat:0 支付工程

master
yang_shj 4 years ago
parent
commit
db8371f2d3
  1. 10
      payment-base-app/src/main/java/com/base/springcloud/bo/OrderBO.java
  2. 3
      payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java
  3. 3
      payment-base-app/src/main/java/com/base/springcloud/dao/MerchantConfigMapper.java
  4. 2
      payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java
  5. 11
      payment-base-app/src/main/java/com/base/springcloud/handle/RBSQueueHandler.java
  6. 4
      payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java
  7. 7
      payment-base-app/src/main/java/com/base/springcloud/service/MerchantService.java
  8. 4
      payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java
  9. 13
      payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java
  10. 15
      payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java
  11. 13
      payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java
  12. 38
      payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java
  13. 103
      payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java
  14. 3
      payment-base-app/src/main/java/com/base/springcloud/service/orderService.java
  15. 11
      payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml
  16. 6
      payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml

10
payment-base-app/src/main/java/com/base/springcloud/bo/OrderBO.java

@ -4,8 +4,16 @@ import com.base.springcloud.entity.Order;
import com.base.springcloud.entity.SaleBill; import com.base.springcloud.entity.SaleBill;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
@Data @Data
public class OrderBO { public class OrderBO implements Serializable {
// 商户编号
private String mchId;
// 商户私钥
private String mchPrivateKey;
// 销售单据号 // 销售单据号
private String billNo; private String billNo;

3
payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java

@ -33,9 +33,10 @@ public class PaymentController {
@ApiOperation(value = "native下单", notes = "微信native下单") @ApiOperation(value = "native下单", notes = "微信native下单")
@GetMapping("/nativePlaceOrder") @GetMapping("/nativePlaceOrder")
public ReportResult nativePlaceOrder(@RequestParam String salesBill) { public ReportResult nativePlaceOrder(@RequestParam String salesBill,@RequestParam String mchId) {
OrderBO orderBO = new OrderBO(); OrderBO orderBO = new OrderBO();
orderBO.setBillNo(salesBill); orderBO.setBillNo(salesBill);
orderBO.setMchId(mchId);
String codeUrl = paymentService.placeOrder(orderBO); String codeUrl = paymentService.placeOrder(orderBO);
List<NativePlaceOrderDTO> array = new ArrayList<>(); List<NativePlaceOrderDTO> array = new ArrayList<>();
NativePlaceOrderDTO nativePlaceOrderDTO = new NativePlaceOrderDTO(); NativePlaceOrderDTO nativePlaceOrderDTO = new NativePlaceOrderDTO();

3
payment-base-app/src/main/java/com/base/springcloud/dao/MerchantConfigMapper.java

@ -1,6 +1,7 @@
package com.base.springcloud.dao; package com.base.springcloud.dao;
import com.base.springcloud.entity.MerchantConfig; import com.base.springcloud.entity.MerchantConfig;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@ -24,4 +25,6 @@ public interface MerchantConfigMapper {
int removeMerchantConfig(String mchId); int removeMerchantConfig(String mchId);
List<MerchantConfig> queryMerchantConfig(MerchantConfig merchantConfig); List<MerchantConfig> queryMerchantConfig(MerchantConfig merchantConfig);
MerchantConfig claimMerchantConfig(@Param("mchId") String mchId);
} }

2
payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java

@ -22,4 +22,6 @@ public interface OrderMapper {
int updateByPrimaryKey(Order record); int updateByPrimaryKey(Order record);
List<Order> queryOrder(Date date); List<Order> queryOrder(Date date);
int updateOrderSuccess(String orderNo);
} }

11
payment-base-app/src/main/java/com/base/springcloud/handle/RBSQueueHandler.java

@ -1,8 +1,7 @@
package com.base.springcloud.handle; package com.base.springcloud.handle;
import com.base.springcloud.aspect.annotation.Rlock; import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.entity.Order; import com.base.springcloud.entity.Order;
import com.base.springcloud.schedule.OrderTask;
import com.base.springcloud.service.PaymentService; import com.base.springcloud.service.PaymentService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -10,6 +9,9 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.awt.font.OpenType;
import java.util.Optional;
@Component @Component
public class RBSQueueHandler { public class RBSQueueHandler {
@ -19,8 +21,9 @@ public class RBSQueueHandler {
private PaymentService paymentService; private PaymentService paymentService;
@RabbitListener(queues = "order_queue") @RabbitListener(queues = "order_queue")
public void orderInfo(Order order) { public void orderInfo(OrderBO orderBO) {
paymentService.queryOrder(order); logger.info("正在获取订单: {} 状态", Optional.ofNullable(orderBO.getOrder()).map(o->o.getOrderNo()).orElse("无效单据"));
paymentService.queryOrder(orderBO);
} }
} }

4
payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java

@ -17,8 +17,8 @@ public class OrderTask {
@Autowired @Autowired
private PaymentService paymentService; private PaymentService paymentService;
/*@Scheduled(cron = "0/10 * * * * ?") @Scheduled(fixedDelay = 30 * 6000)
public void syncOrderInfo(){ public void syncOrderInfo(){
paymentService.syncOrderInfo(new Date()); paymentService.syncOrderInfo(new Date());
}*/ }
} }

7
payment-base-app/src/main/java/com/base/springcloud/service/MerchantService.java

@ -1,6 +1,7 @@
package com.base.springcloud.service; package com.base.springcloud.service;
import com.base.springcloud.bo.MerchantConfigBO; import com.base.springcloud.bo.MerchantConfigBO;
import com.base.springcloud.bo.OrderBO;
import java.util.List; import java.util.List;
@ -28,4 +29,10 @@ public interface MerchantService {
* 支付信息配置查询 * 支付信息配置查询
*/ */
List<MerchantConfigBO> queryMerchantConfig(MerchantConfigBO merchantConfigBO); List<MerchantConfigBO> queryMerchantConfig(MerchantConfigBO merchantConfigBO);
/**
* 获取商户支付信息配置
* @param orderBO
*/
void claimMerchantConfig(OrderBO orderBO);
} }

4
payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java

@ -21,7 +21,7 @@ public interface PaymentService {
/** /**
* 订单信息同步 * 订单信息同步
* @param order * @param orderBO
*/ */
void queryOrder(Order order); void queryOrder(OrderBO orderBO);
} }

13
payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java

@ -1,8 +1,21 @@
package com.base.springcloud.service; package com.base.springcloud.service;
import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.entity.Order;
public interface WecPaymentService { public interface WecPaymentService {
/**
* Native支付
* @param orderBO
* @return
*/
String nativePay(OrderBO orderBO); String nativePay(OrderBO orderBO);
/**
* 查询微信订单结果
* @param orderBO
* @return true - 成功 false - 未成功
*/
Boolean orderResult(OrderBO orderBO);
} }

15
payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java

@ -1,6 +1,7 @@
package com.base.springcloud.service.imp; package com.base.springcloud.service.imp;
import com.base.springcloud.bo.MerchantConfigBO; import com.base.springcloud.bo.MerchantConfigBO;
import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.dao.MerchantConfigMapper; import com.base.springcloud.dao.MerchantConfigMapper;
import com.base.springcloud.entity.MerchantConfig; import com.base.springcloud.entity.MerchantConfig;
import com.base.springcloud.service.MerchantService; import com.base.springcloud.service.MerchantService;
@ -99,6 +100,20 @@ public class MerchantServiceImp implements MerchantService {
return merchantConfigBOList; return merchantConfigBOList;
} }
@Override
public void claimMerchantConfig(OrderBO orderBO) {
if(!Optional.ofNullable(orderBO).map(o->orderBO.getMchId()).isPresent()){
// TODO 抛出业务异常
return;
}
MerchantConfig merchantConfig = merchantConfigMapper.claimMerchantConfig(orderBO.getMchId());
if(!Optional.ofNullable(merchantConfig).isPresent()){
// TODO 抛出业务异常
return;
}
orderBO.setMchPrivateKey(merchantConfig.getMchPrivateKey());
}
/** /**
* 测试文件上传 * 测试文件上传
*/ */

13
payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java

@ -28,14 +28,13 @@ public class OrderServiceImp implements OrderService {
order.setCreateTime(new Date()); order.setCreateTime(new Date());
order.setExpireTime(new Date()); order.setExpireTime(new Date());
order.setTimeStamp(new Date()); order.setTimeStamp(new Date());
order.setGoodId("1142338242");
order.setGoodName("maomaogongzai");
order.setOrderNo(DateUtil.getDateString(new Date(),25)); order.setOrderNo(DateUtil.getDateString(new Date(),25));
order.setOrderType("AL"); order.setOrderType("AL");
order.setRequestNo(DateUtil.getDateString(new Date(),25)); order.setRequestNo(DateUtil.getDateString(new Date(),25));
order.setGoodName("maomaogongzai");
order.setReserved("memo"); order.setReserved("memo");
order.setTimeStamp(new Date()); order.setTimeStamp(new Date());
order.setMchId("888027018000004"); order.setMchId(orderBO.getMchId());
order.setOrderState(PaymentConstant.WAIT); order.setOrderState(PaymentConstant.WAIT);
order.setOrderAmount(DecimalUtil.divide(orderBO.getSaleBill().getTotalAmount(),new BigDecimal(100))); order.setOrderAmount(DecimalUtil.divide(orderBO.getSaleBill().getTotalAmount(),new BigDecimal(100)));
orderMapper.insert(order); orderMapper.insert(order);
@ -53,7 +52,15 @@ public class OrderServiceImp implements OrderService {
Order order = new Order(); Order order = new Order();
BeanUtils.copyProperties(o,order); BeanUtils.copyProperties(o,order);
orderBO.setOrder(order); orderBO.setOrder(order);
orderBO.setMchId(order.getMchId());
return orderBO; return orderBO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
@Override
public void updateOrderSuccess(String orderNo) {
int count = orderMapper.updateOrderSuccess(orderNo);
if(count > 0) return;
// TODO 抛出业务异常
}
} }

38
payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java

@ -3,11 +3,9 @@ package com.base.springcloud.service.imp;
import com.base.springcloud.aspect.annotation.Rlock; import com.base.springcloud.aspect.annotation.Rlock;
import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.constant.PaymentConstant; import com.base.springcloud.constant.PaymentConstant;
import com.base.springcloud.entity.MerchantConfig;
import com.base.springcloud.entity.Order; import com.base.springcloud.entity.Order;
import com.base.springcloud.service.BillService; import com.base.springcloud.service.*;
import com.base.springcloud.service.OrderService;
import com.base.springcloud.service.PaymentService;
import com.base.springcloud.service.WecPaymentService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate; import org.springframework.amqp.core.AmqpTemplate;
@ -23,6 +21,9 @@ public class PaymentServiceImp implements PaymentService {
Logger logger = LoggerFactory.getLogger(PaymentServiceImp.class); Logger logger = LoggerFactory.getLogger(PaymentServiceImp.class);
@Autowired
private MerchantService merchantService;
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;
@ -42,6 +43,8 @@ public class PaymentServiceImp implements PaymentService {
parameterCheck(orderBO); parameterCheck(orderBO);
// 销售单据核查 // 销售单据核查
billService.billCheck(orderBO); billService.billCheck(orderBO);
// 查询商户支付信息配置
merchantService.claimMerchantConfig(orderBO);
// 登记订单 // 登记订单
orderService.registerOrder(orderBO); orderService.registerOrder(orderBO);
// 请求微信生成二维码 // 请求微信生成二维码
@ -57,28 +60,31 @@ public class PaymentServiceImp implements PaymentService {
// 获取订单列表 // 获取订单列表
List<OrderBO> orderList = orderService.queryOrder(date); List<OrderBO> orderList = orderService.queryOrder(date);
if(!Optional.ofNullable(orderList).isPresent()) return; if(!Optional.ofNullable(orderList).isPresent()) return;
// 遍历查询第三方订单信息 // 遍历查询第三方订单信息
for (OrderBO orderBO : orderList){ for (OrderBO orderBO : orderList){
// 异步处理数据 // 异步处理数据
amqpTemplate.convertSendAndReceive(PaymentConstant.ORDER_QUEUE,orderBO.getOrder()); amqpTemplate.convertSendAndReceive(PaymentConstant.ORDER_QUEUE,orderBO);
} }
} }
/** /**
* 订单信息查询 * 订单信息查询
* @param order * @param orderBO
*/ */
@Override @Override
@Rlock(prefix = PaymentConstant.ORDER_LOCK_PREFIX, suffix = "#order.orderNo",waitTime = 0,leaseTime = 60) @Rlock(prefix = PaymentConstant.ORDER_LOCK_PREFIX, suffix = "#orderBO.order.orderNo",waitTime = 0,leaseTime = 60)
public void queryOrder(Order order) { public void queryOrder(OrderBO orderBO) {
logger.info("线程 : {} 开始睡觉....",Thread.currentThread().getName()); // 参数检查
try { Order order = Optional.ofNullable(orderBO).map(o->orderBO.getOrder()).orElse(null);
Thread.sleep(10000); if(!Optional.ofNullable(order).isPresent()) return;
}catch (Exception e){ // 获取商户支付配置信息
logger.info(e.getMessage()); merchantService.claimMerchantConfig(orderBO);
} // 查询微信订单结果
logger.info("线程 : {} 结束睡觉....",Thread.currentThread().getName()); Boolean state = wecPaymentService.orderResult(orderBO);
if(!state) return;
// 同步订单状态
String orderNo = order.getOrderNo();
orderService.updateOrderSuccess(orderNo);
} }
// 参数检查 // 参数检查

103
payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java

@ -14,17 +14,25 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException;
@Service @Service
public class WecPaymentServiceImp implements WecPaymentService { public class WecPaymentServiceImp implements WecPaymentService {
Logger logger = LoggerFactory.getLogger(WecPaymentServiceImp.class); Logger logger = LoggerFactory.getLogger(WecPaymentServiceImp.class);
/**
* Native支付
*
* @param orderBO
* @return
*/
@Override @Override
public String nativePay(OrderBO orderBO) { public String nativePay(OrderBO orderBO) {
String res = ""; String res = "";
HiiposmUtil util = new HiiposmUtil(); HiiposmUtil util = new HiiposmUtil();
String merchantId = "888027018000004"; String merchantId = orderBO.getMchId();
String privateKey = "308204bc020100300d06092a864886f70d0101010500048204a6308204a202010002820101008fe86bc46878d127d0bd59b8d0ed81b5dd4066a8af2729ade7df76d4022ee9535de274d0a786e654bea82c6a6450c64cc428a79326583accbcf7724d38b5895dcd9eb542a8078ba0d9d8d2a69bd5890966aacdb6daea387b52ed662c2fef8932bd0f69155d7c1729d9da004920508dd4be72e78a0c33cbf847d3c4bce0cf2e42190e5166fea223544c1c0d7dc0fda964adc1deffce527fb75c13c802c37dd6071f071c220a8f6036c72fae13bf78c02b7fdefdc771298f05b85e341ec7e521d9d7b2d535bc16bae35c6d7b8abc670c5da46b4404ea164915d6cdd102c170c542839b0a386ce9eb46a741a11678320271d53253087c5ca44ac7851507cef9787902030100010282010061d895eda55b005b22029cce9cbfe041d77dc24f4f48417e8cf9d3c1b2fa528aec7add1241d5e72617bc20f6f5de35f65c298846f4fb687f6cbc926b0ef3dfc277dc4142611d4042cddc2ede3976a7064d583526ef11f1f5681d222b492c850c8a9fbfc3571cd8630c4cbd84fb03ca6bac52543bf8afff2f8126ebcdc0cd1d95abc8bc00d310240b16a3afbc5d0ac88a60005a2a0f149246513a4b2375142f2f41d1f84db337e834d65c76ff54291e0d45051be37dceaa7468f4becf3547905dba823ee9b5b449e24c97ea2fd74387a121018e595592735ae7234563bf1c204cd5e523169fb80838f6154c046b01f847f22e348d09210ad737ba1a9b43fbf50102818100de15a6916a0244c461305c8d8f0bd1df1f82279f9b4ae70966f61fc25d310825ccef8305146500f16154674be702f3d5f4ec639e9e03fd040c925ea1df18b19c1255f996045cd5dcd68dc0782b7760f9ce3f4279972a1a49f3a4cb8f0e2d2f2f5698667004cfdeca84335665870d95c2ab625074b73afba33aab1481be5c04dd02818100a5e278390b618190c686e8bbe91a29c2e8e9cdbea419b2725f5f7e59378f6c25fada22ff1cec891d250b75511c866c54f93d3ca05bba9e65eff2f29aab14a7ea3e83c73d9c876eaf6fc11504c5093ada16de6dac3588369ffb11f8154582d4ce3310d5fefdd94a6f18090a4a68e0ef85d4a8898b6b26e020986d0fef81a2ea4d02818036dce65f39ef0189f9f0768cc9efc392f937b00e2fd0db2e696f17fd6e0434dd11b9818679b951f84f71086ba9d002e8b22ecb955db7e283638fad2d13ee07c2648d34b128b6be6665e272cfbcfd2ac9cb77b9364c6fac3ae4a3ab5dd5c4b7c95bfd1e21422f0ffcbb97eb19fdb90f6c1de695b59fa6448fd86877126e3251490281807934611d6518687fecdeb3fc60d49200ed07b022046b163c853d13e7823614122818ec8b348a0ba134e90b5e29967a5f18014b63ebc20e6c73073386194cad67f5277a13a5643b568a342cf460375f3dec89b6dea5fa91d710aecf725368c5aea8173c14e54bb81c36169ce343805ee28d405bc777925f1ed1e0964d2c8e69dd02818073bfa2ced7b2911b5c8f9534bc5b0de8c13afeaf6d60ce5f0e6d3f732eb23a0c98586cbade606181b6c78825605c5d4b600f89aa08624c65dd649ffb093a914afe55b39943d1e10f509c67f5e344c73deaa5a10f94154a0df705942f98d8193675addb33d841a5a09f20c388898fda30b974cb9a4a6a74d5212d11a1f394971d"; String privateKey = orderBO.getMchPrivateKey();
String req_url = "https://ipos.10086.cn/cps/cmpayService"; String req_url = "https://ipos.10086.cn/cps/cmpayService";
String type = "AggregPayAmt"; String type = "AggregPayAmt";
String version = "1.0.0"; String version = "1.0.0";
@ -48,16 +56,22 @@ public class WecPaymentServiceImp implements WecPaymentService {
signDate.append(version); signDate.append(version);
signDate.append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount())); signDate.append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount()));
signDate.append(createDate); signDate.append(createDate);
switch (order.getOrderType()){ switch (order.getOrderType()) {
case PaymentConstant.WEC : signDate.append(PaymentConstant.QRCWC); break; case PaymentConstant.WEC:
case PaymentConstant.AL : signDate.append(PaymentConstant.QRCAL); break; signDate.append(PaymentConstant.QRCWC);
case PaymentConstant.CP : signDate.append(PaymentConstant.QRCCP); break; break;
case PaymentConstant.AL:
signDate.append(PaymentConstant.QRCAL);
break;
case PaymentConstant.CP:
signDate.append(PaymentConstant.QRCCP);
break;
} }
signDate.append(order.getOrderNo()); signDate.append(order.getOrderNo());
signDate.append(order.getGoodName()); signDate.append(order.getGoodName());
signDate.append(order.getReserved()); signDate.append(order.getReserved());
logger.warn("signData:{}",signDate.toString()); logger.warn("signData:{}", signDate.toString());
try{ try {
HiCASignUtil2 rsa = new HiCASignUtil2(privateKey, "111"); HiCASignUtil2 rsa = new HiCASignUtil2(privateKey, "111");
StrBuilder requestParam = new StrBuilder(); StrBuilder requestParam = new StrBuilder();
requestParam.append("hmac=").append(rsa.sign(signDate.toString())); requestParam.append("hmac=").append(rsa.sign(signDate.toString()));
@ -72,10 +86,16 @@ public class WecPaymentServiceImp implements WecPaymentService {
requestParam.append("&amount=").append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount())); requestParam.append("&amount=").append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount()));
requestParam.append("&orderDate=").append(createDate); requestParam.append("&orderDate=").append(createDate);
requestParam.append("&payWay="); requestParam.append("&payWay=");
switch (order.getOrderType()){ switch (order.getOrderType()) {
case PaymentConstant.WEC : requestParam.append(PaymentConstant.QRCWC); break; case PaymentConstant.WEC:
case PaymentConstant.AL : requestParam.append(PaymentConstant.QRCAL); break; requestParam.append(PaymentConstant.QRCWC);
case PaymentConstant.CP : requestParam.append(PaymentConstant.QRCCP); break; break;
case PaymentConstant.AL:
requestParam.append(PaymentConstant.QRCAL);
break;
case PaymentConstant.CP:
requestParam.append(PaymentConstant.QRCCP);
break;
} }
requestParam.append("&orderId=").append(order.getOrderNo()); requestParam.append("&orderId=").append(order.getOrderNo());
requestParam.append("&productName=").append(order.getGoodName()); requestParam.append("&productName=").append(order.getGoodName());
@ -84,15 +104,68 @@ public class WecPaymentServiceImp implements WecPaymentService {
requestParam.append("&spbillCreateIp=").append(spbillCreateIp); requestParam.append("&spbillCreateIp=").append(spbillCreateIp);
requestParam.append("&storeBrand=").append(storeBrand); requestParam.append("&storeBrand=").append(storeBrand);
requestParam.append("&cityBranchNm=").append(cityBranchNm); requestParam.append("&cityBranchNm=").append(cityBranchNm);
logger.warn("requestParam:{}",requestParam.toString()); logger.warn("requestParam:{}", requestParam.toString());
res = util.sendAndRecv(req_url, requestParam.toString(), PaymentConstant.CHARACTER_SET); res = util.sendAndRecv(req_url, requestParam.toString(), PaymentConstant.CHARACTER_SET);
logger.warn(res); logger.warn(res);
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return StringUtils.isNotBlank(res)?util.getValue(res, "sessionId"):""; return StringUtils.isNotBlank(res) ? util.getValue(res, "sessionId") : "";
} }
/**
* 订单状态查询
*
* @param orderBO
* @return
*/
@Override
public Boolean orderResult(OrderBO orderBO) {
Order order = orderBO.getOrder();
String orderId = order.getOrderNo();
String req_url = "https://ipos.10086.cn/cps/cmpayService";
String type = "AggregQueryCPS";
String version = "1.0.0";
String reserved = order.getReserved();
String signType = PaymentConstant.SIGN_TYPE;
String requestId = DateUtil.getDateString(25);
String merchantId = order.getMchId();
String privateKey = orderBO.getMchPrivateKey();
String characterSet = PaymentConstant.CHARACTER_SET;
StringBuilder signData = new StringBuilder();
signData.append(merchantId);
signData.append(requestId);
signData.append(signType);
signData.append(type);
signData.append(version);
signData.append(orderId);
signData.append(reserved);
try {
StrBuilder requestParam = new StrBuilder();
HiCASignUtil2 rsa = new HiCASignUtil2(privateKey, "111");
requestParam.append("hmac=").append(rsa.sign(signData.toString()));
requestParam.append("&characterSet=").append(PaymentConstant.CHARACTER_SET);
requestParam.append("&merchantId=").append(merchantId);
requestParam.append("&requestId=").append(requestId);
requestParam.append("&signType=").append(signType);
requestParam.append("&type=").append(type);
requestParam.append("&version=").append(version);
requestParam.append("&orderId=").append(orderId);
requestParam.append("&reserved1=").append(reserved);
HiiposmUtil util = new HiiposmUtil();
String res = util.sendAndRecv(req_url, requestParam.toString(), characterSet);
if(util.getValue(res, "status").equals("SUCCESS")){
return true;
}
return false;
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
} }

3
payment-base-app/src/main/java/com/base/springcloud/service/orderService.java

@ -13,4 +13,7 @@ public interface OrderService {
// 查询订单 // 查询订单
List<OrderBO> queryOrder(Date date); List<OrderBO> queryOrder(Date date);
// 同步订单状态
void updateOrderSuccess(String orderNo);
} }

11
payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml

@ -83,4 +83,15 @@
mch_id = #{mchId,jdbcType=VARCHAR} mch_id = #{mchId,jdbcType=VARCHAR}
</where> </where>
</update> </update>
<select id="claimMerchantConfig" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from pay_merchant_config
<where>
<if test="mchId != null">
mch_id = #{mchId,jdbcType=VARCHAR}
</if>
</where>
</select>
</mapper> </mapper>

6
payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml

@ -168,4 +168,10 @@
</where> </where>
order by time_stamp desc limit 10 order by time_stamp desc limit 10
</select> </select>
<update id="updateOrderSuccess" parameterType="java.lang.String">
update pay_order
set order_state = 'S'
where order_no = #{orderNo,jdbcType=VARCHAR}
</update>
</mapper> </mapper>
Loading…
Cancel
Save