|
|
@@ -128,6 +128,12 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
|
|
|
@Override
|
|
|
public VaultsResponse barcodeReverse(RefundReceive refundReceive) {
|
|
|
+
|
|
|
+ PaymentRecords paymentRecords = paymentRecordsService.getPaymentRecords(refundReceive.getPayId());
|
|
|
+ if(paymentRecords == null){
|
|
|
+ return VaultsResponse.failed("支付信息未找到");
|
|
|
+ }
|
|
|
+
|
|
|
BasicConfiguration basicConfig = Basic.getSystemParameter(refundReceive.getOperatorId());
|
|
|
PayReverse payReverse = new PayReverse();
|
|
|
payReverse.setSystem_id(basicConfig.getSystemId());
|
|
|
@@ -136,8 +142,10 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
payReverse.setStore_id(refundReceive.getOperatorId().toString());
|
|
|
payReverse.setPos_seq(refundReceive.getRefundId().toString());
|
|
|
PayReverseDetail detail = new PayReverseDetail();
|
|
|
+ detail.setPay_type(paymentRecords.getPayType());
|
|
|
detail.setTx_amt(refundReceive.getPrice().toString());
|
|
|
detail.setOrg_pos_seq(refundReceive.getPayId().toString());
|
|
|
+ detail.setNotify_url(url+"/payReverseNotify");
|
|
|
payReverse.setBarcode_reverse_request(detail);
|
|
|
PayReverseBack back = null;
|
|
|
try {
|
|
|
@@ -148,6 +156,9 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
}
|
|
|
|
|
|
if(YmUtil.SUCCESS.equals(back.getResult().getId()) || YmUtil.FAIL.equals(back.getResult().getId())){
|
|
|
+ paymentRecords.setRefundSn(refundReceive.getSn());
|
|
|
+ paymentRecords.setRefundId(refundReceive.getRefundId());
|
|
|
+ paymentRecordsService.updateById(paymentRecords);
|
|
|
return VaultsResponse.success(back.getResult().getId());
|
|
|
}
|
|
|
|
|
|
@@ -280,4 +291,69 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
}
|
|
|
return "success";
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String payReverseNotification(PayNotification payNotification) {
|
|
|
+ QueryWrapper<PaymentRecords> queryMapper = new QueryWrapper<>();
|
|
|
+ queryMapper.eq("trade_no",payNotification.getTrade_no());
|
|
|
+ try {
|
|
|
+ PaymentRecords pr = paymentRecordsService.getOne(queryMapper);
|
|
|
+ //退款通知
|
|
|
+ if(!pr.getTransType().equals("2")){
|
|
|
+ pr.setTransType(pr.getTransType());
|
|
|
+ pr.setEndTime(payNotification.getEnd_time());
|
|
|
+ RefundReceive refundReceive = new RefundReceive();
|
|
|
+ refundReceive.setRefundId(pr.getRefundId());
|
|
|
+ refundReceive.setSn(pr.getRefundSn());
|
|
|
+ refundReceive.setOperatorId(pr.getOperatorId());
|
|
|
+ VaultsResponse vaultsResponse = orderFeignClient.changeOrderRefund(refundReceive);
|
|
|
+ if(vaultsResponse.validate()){
|
|
|
+ paymentRecordsService.updateById(pr);
|
|
|
+ }else {
|
|
|
+ return "fail";
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ log.info("重复推送支付成功消息---"+pr.getPaySn());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return "fail";
|
|
|
+ }
|
|
|
+ return "success";
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VaultsResponse<String> scanPayOrder(PaymentRecords records) {
|
|
|
+ BasicConfiguration basicConfig = Basic.getSystemParameter(records.getOperatorId());
|
|
|
+ PayScanOrder payScanOrder = new PayScanOrder();
|
|
|
+ payScanOrder.setPos_seq(records.getPayId().toString());
|
|
|
+ payScanOrder.setPos_id(basicConfig.getCode());
|
|
|
+ payScanOrder.setStore_id(records.getOperatorId().toString());
|
|
|
+ payScanOrder.setDevice_ip(ip);
|
|
|
+ payScanOrder.setSystem_id(basicConfig.getSystemId());
|
|
|
+ payScanOrder.setIsspid(basicConfig.getPid());
|
|
|
+ PayScanRequest payScanRequest = new PayScanRequest();
|
|
|
+ payScanRequest.setTx_amt(records.getTxAmt());
|
|
|
+ payScanRequest.setNotify_url(url+"/payNotify");
|
|
|
+ ExtendParams extendParams = new ExtendParams();
|
|
|
+ extendParams.setPlan_split_date(records.getPlanSplitDate());
|
|
|
+ payScanRequest.setExtend_params(extendParams);
|
|
|
+ payScanOrder.setScanpay_request(payScanRequest);
|
|
|
+ PayScanBack back = null;
|
|
|
+ try {
|
|
|
+ back = (PayScanBack) YmUtil.resultBack(payScanOrder,new PayScanBack());
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return VaultsResponse.failed(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(YmUtil.FAIL.equals(back.getResult().getId())){
|
|
|
+ return VaultsResponse.success(back.getCode_url());
|
|
|
+ }
|
|
|
+
|
|
|
+ return VaultsResponse.failed(back.getResult().getComment());
|
|
|
+ }
|
|
|
}
|