|
|
@@ -1,359 +1,361 @@
|
|
|
-package com.poteviohealth.ym.ipos.service.impl;
|
|
|
-
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
-import com.poteviohealth.cgp.common.filter.TokenContext;
|
|
|
-import com.poteviohealth.cgp.common.integrated.order.OrderFeignClient;
|
|
|
-import com.poteviohealth.cgp.common.integrated.order.model.PayInfoAppOutDTO;
|
|
|
-import com.poteviohealth.cgp.common.integrated.order.model.PayReceive;
|
|
|
-import com.poteviohealth.cgp.common.integrated.order.model.RefundReceive;
|
|
|
-import com.poteviohealth.cgp.common.model.VaultsResponse;
|
|
|
-import com.poteviohealth.ym.ipos.common.Basic;
|
|
|
-import com.poteviohealth.ym.ipos.model.BasicConfiguration;
|
|
|
-import com.poteviohealth.ym.ipos.model.payment.*;
|
|
|
-import com.poteviohealth.ym.ipos.model.payment.back.*;
|
|
|
-import com.poteviohealth.ym.ipos.model.payment.detail.*;
|
|
|
-import com.poteviohealth.ym.ipos.model.payment.dto.BindDto;
|
|
|
-import com.poteviohealth.ym.ipos.service.IPaymentRecordsService;
|
|
|
-import com.poteviohealth.ym.ipos.service.IPaymentService;
|
|
|
-import com.poteviohealth.ym.ipos.utils.YmUtil;
|
|
|
-import lombok.extern.log4j.Log4j2;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
-import javax.annotation.Resource;
|
|
|
-
|
|
|
-/**
|
|
|
- * 支付
|
|
|
- * @author Qin
|
|
|
- */
|
|
|
-@Service
|
|
|
-@Log4j2
|
|
|
-public class PaymentServiceImpl implements IPaymentService {
|
|
|
-
|
|
|
- @Value("${pay.field.ip}")
|
|
|
- private String ip;
|
|
|
-
|
|
|
- @Value("${pay.field.url}")
|
|
|
- private String url;
|
|
|
-
|
|
|
- @Resource
|
|
|
- private IPaymentRecordsService paymentRecordsService;
|
|
|
- @Resource
|
|
|
- private OrderFeignClient orderFeignClient;
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public VaultsResponse bindPos(BindDto dto) {
|
|
|
- BasicConfiguration basicConfig = Basic.getSystemParameter(TokenContext.cureOperatorId());
|
|
|
- BindPos pos = new BindPos();
|
|
|
- pos.setPos_id(dto.getPosId());
|
|
|
- pos.setSystem_id(basicConfig.getSystemId());
|
|
|
- pos.setIsspid(basicConfig.getPid());
|
|
|
- StoreInfo storeInfo = new StoreInfo();
|
|
|
- storeInfo.setStore_id(dto.getStoreId());
|
|
|
- storeInfo.setStore_name(dto.getName());
|
|
|
- pos.setStore_info(storeInfo);
|
|
|
-
|
|
|
- PayParams payParams = new PayParams();
|
|
|
- Wxapp app = new Wxapp();
|
|
|
- app.setMch_id(basicConfig.getMchId());
|
|
|
- app.setAppid(dto.getAppId());
|
|
|
- payParams.setWxapp(app);
|
|
|
- pos.setPay_params(payParams);
|
|
|
- BindPosBack back = null;
|
|
|
- try {
|
|
|
- back = (BindPosBack) YmUtil.resultBack(pos,new BindPosBack());
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- return VaultsResponse.failed(e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
|
|
|
- return VaultsResponse.success(back.getPos_id());
|
|
|
- }
|
|
|
-
|
|
|
- return VaultsResponse.failed(back.getResult().getComment());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public VaultsResponse changeBindPos(BindDto dto) {
|
|
|
- ChangeBindPos pos = new ChangeBindPos();
|
|
|
- pos.setStore_id(dto.getStoreId());
|
|
|
- BasicConfiguration basicConfig = Basic.getSystemParameter(TokenContext.cureOperatorId());
|
|
|
- pos.setSystem_id(basicConfig.getSystemId());
|
|
|
- pos.setIsspid(basicConfig.getPid());
|
|
|
- StoreInfoChange storeInfo = new StoreInfoChange();
|
|
|
- storeInfo.setStore_name(dto.getName());
|
|
|
- pos.setStore_info(storeInfo);
|
|
|
- ChangeBingPosBack back = null;
|
|
|
- try {
|
|
|
- back = (ChangeBingPosBack) YmUtil.resultBack(pos,new ChangeBingPosBack());
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- return VaultsResponse.failed(e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
|
|
|
- return VaultsResponse.success(back.getStore_id());
|
|
|
- }
|
|
|
-
|
|
|
- return VaultsResponse.failed(back.getResult().getComment());
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public VaultsResponse<PayQueryBack> barcodeQuery(String transactionId) {
|
|
|
- //此方法暂不可用,没有operatorId
|
|
|
- //BasicConfiguration basicConfig = Basic.getSystemParameter(records.getOperatorId());
|
|
|
- PayQuery payQuery = new PayQuery();
|
|
|
- payQuery.setPos_id(TokenContext.curePosId());
|
|
|
- payQuery.setStore_id(TokenContext.cureStoreId());
|
|
|
- PayQueryDetail detail = new PayQueryDetail();
|
|
|
- detail.setOrg_pos_seq(transactionId);
|
|
|
- payQuery.setBarcode_query_request(detail);
|
|
|
- PayQueryBack back = null;
|
|
|
- try {
|
|
|
- back = (PayQueryBack) YmUtil.resultBack(payQuery,new PayQueryBack());
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- return VaultsResponse.failed(e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
|
|
|
- return VaultsResponse.success();
|
|
|
- }
|
|
|
-
|
|
|
- return VaultsResponse.failed(back.getResult().getComment());
|
|
|
- }
|
|
|
-
|
|
|
- @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());
|
|
|
- payReverse.setIsspid(basicConfig.getPid());
|
|
|
- payReverse.setPos_id(basicConfig.getCode());
|
|
|
- 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 {
|
|
|
- back = (PayReverseBack) YmUtil.resultBack(payReverse,new PayReverseBack());
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- return VaultsResponse.failed(e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- 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());
|
|
|
- }
|
|
|
-
|
|
|
- return VaultsResponse.failed(back.getResult().getComment());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public VaultsResponse barcodeRefundQuery(String transactionId,String operatorId) {
|
|
|
- BasicConfiguration basicConfig = Basic.getSystemParameter(Integer.parseInt(operatorId));
|
|
|
- PayRefundQuery payRefundQuery = new PayRefundQuery();
|
|
|
- payRefundQuery.setPos_id(basicConfig.getCode());
|
|
|
- payRefundQuery.setStore_id(operatorId);
|
|
|
- payRefundQuery.setSystem_id(basicConfig.getSystemId());
|
|
|
- payRefundQuery.setIsspid(basicConfig.getPid());
|
|
|
- PayQueryDetail detail = new PayQueryDetail();
|
|
|
- detail.setOrg_pos_seq(transactionId);
|
|
|
- payRefundQuery.setBarcode_refundquery_request(detail);
|
|
|
-
|
|
|
- PayRefundQueryBack back = null;
|
|
|
- try {
|
|
|
- back = (PayRefundQueryBack) YmUtil.resultBack(payRefundQuery,new PayRefundQueryBack());
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- return VaultsResponse.failed(e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- if(YmUtil.SUCCESS.equals(back.getResult().getId()) || YmUtil.FAIL.equals(back.getResult().getId())){
|
|
|
- return VaultsResponse.success(back.getResult().getId());
|
|
|
- }
|
|
|
-
|
|
|
- return VaultsResponse.failed(back.getResult().getComment());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public VaultsResponse<PayInfoAppOutDTO> unifiedOrder(PaymentRecords records) {
|
|
|
- BasicConfiguration basicConfig = Basic.getSystemParameter(records.getOperatorId());
|
|
|
- PayInfoAppOutDTO dto = new PayInfoAppOutDTO();
|
|
|
- PayOrder payOrder = new PayOrder();
|
|
|
- payOrder.setPos_seq(records.getPayId().toString());
|
|
|
- payOrder.setPos_id(basicConfig.getCode());
|
|
|
- payOrder.setStore_id(records.getOperatorId().toString());
|
|
|
- payOrder.setDevice_ip(ip);
|
|
|
- payOrder.setSystem_id(basicConfig.getSystemId());
|
|
|
- payOrder.setIsspid(basicConfig.getPid());
|
|
|
- PayDetail detail = new PayDetail();
|
|
|
- detail.setBuyer_id(records.getOpenid());
|
|
|
- detail.setTx_amt(records.getTxAmt());
|
|
|
- detail.setNotify_url(url+"/payNotify");
|
|
|
- ExtendParams extendParams = new ExtendParams();
|
|
|
- extendParams.setPlan_split_date(records.getPlanSplitDate());
|
|
|
- detail.setExtend_params(extendParams);
|
|
|
- payOrder.setUnifiedorder_request(detail);
|
|
|
- PayBack back = null;
|
|
|
- try {
|
|
|
- back = (PayBack) YmUtil.resultBack(payOrder,new PayBack());
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- return VaultsResponse.failed(e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- if(YmUtil.FAIL.equals(back.getResult().getId())){
|
|
|
- dto.setAppId(records.getAppId());
|
|
|
- dto.setTimeStamp(back.getTime_stamp());
|
|
|
- dto.setNonceStr(back.getNonce_str());
|
|
|
- dto.setPackages("prepay_id="+back.getPay_id());
|
|
|
- dto.setSignType(back.getSign_type());
|
|
|
- dto.setPaySign(back.getPay_sign());
|
|
|
- dto.setPaySn(records.getPaySn());
|
|
|
- return VaultsResponse.success(dto);
|
|
|
- }
|
|
|
-
|
|
|
- return VaultsResponse.failed(back.getResult().getComment());
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String payNotification(PayNotification payNotification) {
|
|
|
-
|
|
|
- QueryWrapper<PaymentRecords> queryMapper = new QueryWrapper<>();
|
|
|
- queryMapper.eq("pay_id",payNotification.getPos_seq());
|
|
|
- try {
|
|
|
- PaymentRecords pr = paymentRecordsService.getOne(queryMapper);
|
|
|
- if(payNotification.getNotify_type().equals("1")){
|
|
|
- //支付通知
|
|
|
- if(pr.getStatus() == -1){
|
|
|
- pr.setStatus(Integer.parseInt(payNotification.getStatus()));
|
|
|
- pr.setEndTime(payNotification.getEnd_time());
|
|
|
- pr.setSource(payNotification.getSource());
|
|
|
- pr.setPosId(payNotification.getPos_id());
|
|
|
- pr.setStoreId(payNotification.getStore_id());
|
|
|
- pr.setPayType(payNotification.getPay_type());
|
|
|
- pr.setTransType(payNotification.getTrans_type());
|
|
|
- pr.setTradeNo(payNotification.getTrade_no());
|
|
|
- pr.setChargeAmount(payNotification.getCharge_amount());
|
|
|
- pr.setFundFreezeStat(payNotification.getFund_freeze_stat());
|
|
|
- pr.setNotifyType(payNotification.getNotify_type());
|
|
|
- PayReceive payReceive = new PayReceive();
|
|
|
- payReceive.setPayId(pr.getPayId());
|
|
|
- payReceive.setPaySn(pr.getPaySn());
|
|
|
- payReceive.setOperatorId(pr.getOperatorId());
|
|
|
- payReceive.setTradeNo(payNotification.getPos_seq());
|
|
|
- VaultsResponse vaultsResponse = orderFeignClient.changeOrderPay(payReceive);
|
|
|
- if(vaultsResponse.validate()){
|
|
|
- paymentRecordsService.updateById(pr);
|
|
|
- }else {
|
|
|
- return "fail";
|
|
|
- }
|
|
|
-
|
|
|
- }else{
|
|
|
- log.info("重复推送支付成功消息---"+pr.getPaySn());
|
|
|
- }
|
|
|
- }else{
|
|
|
- //解冻通知
|
|
|
- if(pr.getFundFreezeStat().equals("01")){
|
|
|
- pr.setFundFreezeStat(payNotification.getFund_freeze_stat());
|
|
|
- pr.setFreezeTime(payNotification.getFreeze_time());
|
|
|
- pr.setUnfreezeAmt(payNotification.getUnfreeze_amt());
|
|
|
- pr.setUnfreezeTime(payNotification.getUnfreeze_time());
|
|
|
- //调用分账通知
|
|
|
- paymentRecordsService.updateById(pr);
|
|
|
- }else{
|
|
|
- log.info("重复推送解冻消息---"+pr.getPaySn());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- return "fail";
|
|
|
- }
|
|
|
- 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());
|
|
|
- }
|
|
|
-}
|
|
|
+package com.poteviohealth.ym.ipos.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.poteviohealth.cgp.common.filter.TokenContext;
|
|
|
+import com.poteviohealth.cgp.common.integrated.order.OrderFeignClient;
|
|
|
+import com.poteviohealth.cgp.common.integrated.order.model.PayInfoAppOutDTO;
|
|
|
+import com.poteviohealth.cgp.common.integrated.order.model.PayReceive;
|
|
|
+import com.poteviohealth.cgp.common.integrated.order.model.RefundReceive;
|
|
|
+import com.poteviohealth.cgp.common.model.VaultsResponse;
|
|
|
+import com.poteviohealth.ym.ipos.common.Basic;
|
|
|
+import com.poteviohealth.ym.ipos.model.BasicConfiguration;
|
|
|
+import com.poteviohealth.ym.ipos.model.payment.*;
|
|
|
+import com.poteviohealth.ym.ipos.model.payment.back.*;
|
|
|
+import com.poteviohealth.ym.ipos.model.payment.detail.*;
|
|
|
+import com.poteviohealth.ym.ipos.model.payment.dto.BindDto;
|
|
|
+import com.poteviohealth.ym.ipos.service.IPaymentRecordsService;
|
|
|
+import com.poteviohealth.ym.ipos.service.IPaymentService;
|
|
|
+import com.poteviohealth.ym.ipos.utils.YmUtil;
|
|
|
+import lombok.extern.log4j.Log4j2;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 支付
|
|
|
+ * @author Qin
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Log4j2
|
|
|
+public class PaymentServiceImpl implements IPaymentService {
|
|
|
+
|
|
|
+ @Value("${pay.field.ip}")
|
|
|
+ private String ip;
|
|
|
+
|
|
|
+ @Value("${pay.field.url}")
|
|
|
+ private String url;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IPaymentRecordsService paymentRecordsService;
|
|
|
+ @Resource
|
|
|
+ private OrderFeignClient orderFeignClient;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VaultsResponse bindPos(BindDto dto) {
|
|
|
+ BasicConfiguration basicConfig = Basic.getSystemParameter(TokenContext.cureOperatorId());
|
|
|
+ BindPos pos = new BindPos();
|
|
|
+ pos.setPos_id(dto.getPosId());
|
|
|
+ pos.setSystem_id(basicConfig.getSystemId());
|
|
|
+ pos.setIsspid(basicConfig.getPid());
|
|
|
+ StoreInfo storeInfo = new StoreInfo();
|
|
|
+ storeInfo.setStore_id(dto.getStoreId());
|
|
|
+ storeInfo.setStore_name(dto.getName());
|
|
|
+ pos.setStore_info(storeInfo);
|
|
|
+
|
|
|
+ PayParams payParams = new PayParams();
|
|
|
+ Wxapp app = new Wxapp();
|
|
|
+ app.setMch_id(basicConfig.getMchId());
|
|
|
+ app.setAppid(dto.getAppId());
|
|
|
+ payParams.setWxapp(app);
|
|
|
+ pos.setPay_params(payParams);
|
|
|
+ BindPosBack back;
|
|
|
+ try {
|
|
|
+ back = (BindPosBack) YmUtil.resultBack(pos,new BindPosBack());
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return VaultsResponse.failed(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(YmUtil.SUCCESS.equals(back.getResult().getId())){
|
|
|
+ return VaultsResponse.success(back.getPos_id());
|
|
|
+ }
|
|
|
+
|
|
|
+ return VaultsResponse.failed(back.getResult().getComment());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VaultsResponse changeBindPos(BindDto dto) {
|
|
|
+ ChangeBindPos pos = new ChangeBindPos();
|
|
|
+ pos.setStore_id(dto.getStoreId());
|
|
|
+ BasicConfiguration basicConfig = Basic.getSystemParameter(TokenContext.cureOperatorId());
|
|
|
+ pos.setSystem_id(basicConfig.getSystemId());
|
|
|
+ pos.setIsspid(basicConfig.getPid());
|
|
|
+ StoreInfoChange storeInfo = new StoreInfoChange();
|
|
|
+ storeInfo.setStore_name(dto.getName());
|
|
|
+ pos.setStore_info(storeInfo);
|
|
|
+ ChangeBingPosBack back;
|
|
|
+ try {
|
|
|
+ back = (ChangeBingPosBack) YmUtil.resultBack(pos,new ChangeBingPosBack());
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return VaultsResponse.failed(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(YmUtil.SUCCESS.equals(back.getResult().getId())){
|
|
|
+ return VaultsResponse.success(back.getStore_id());
|
|
|
+ }
|
|
|
+
|
|
|
+ return VaultsResponse.failed(back.getResult().getComment());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VaultsResponse<PayQueryBack> barcodeQuery(String transactionId) {
|
|
|
+ //此方法暂不可用,没有operatorId
|
|
|
+ //BasicConfiguration basicConfig = Basic.getSystemParameter(records.getOperatorId());
|
|
|
+ PayQuery payQuery = new PayQuery();
|
|
|
+ payQuery.setPos_id(TokenContext.curePosId());
|
|
|
+ payQuery.setStore_id(TokenContext.cureStoreId());
|
|
|
+ PayQueryDetail detail = new PayQueryDetail();
|
|
|
+ detail.setOrg_pos_seq(transactionId);
|
|
|
+ payQuery.setBarcode_query_request(detail);
|
|
|
+ PayQueryBack back;
|
|
|
+ try {
|
|
|
+ back = (PayQueryBack) YmUtil.resultBack(payQuery,new PayQueryBack());
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return VaultsResponse.failed(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(YmUtil.SUCCESS.equals(back.getResult().getId())){
|
|
|
+ return VaultsResponse.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ return VaultsResponse.failed(back.getResult().getComment());
|
|
|
+ }
|
|
|
+
|
|
|
+ @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());
|
|
|
+ payReverse.setIsspid(basicConfig.getPid());
|
|
|
+ payReverse.setPos_id(basicConfig.getCode());
|
|
|
+ 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;
|
|
|
+ try {
|
|
|
+ back = (PayReverseBack) YmUtil.resultBack(payReverse,new PayReverseBack());
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return VaultsResponse.failed(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+
|
|
|
+ return VaultsResponse.failed(back.getResult().getComment());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VaultsResponse barcodeRefundQuery(String transactionId,String operatorId) {
|
|
|
+ BasicConfiguration basicConfig = Basic.getSystemParameter(Integer.parseInt(operatorId));
|
|
|
+ PayRefundQuery payRefundQuery = new PayRefundQuery();
|
|
|
+ payRefundQuery.setPos_id(basicConfig.getCode());
|
|
|
+ payRefundQuery.setStore_id(operatorId);
|
|
|
+ payRefundQuery.setSystem_id(basicConfig.getSystemId());
|
|
|
+ payRefundQuery.setIsspid(basicConfig.getPid());
|
|
|
+ PayQueryDetail detail = new PayQueryDetail();
|
|
|
+ detail.setOrg_pos_seq(transactionId);
|
|
|
+ payRefundQuery.setBarcode_refundquery_request(detail);
|
|
|
+
|
|
|
+ PayRefundQueryBack back;
|
|
|
+ try {
|
|
|
+ back = (PayRefundQueryBack) YmUtil.resultBack(payRefundQuery,new PayRefundQueryBack());
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return VaultsResponse.failed(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(YmUtil.SUCCESS.equals(back.getResult().getId()) || YmUtil.FAIL.equals(back.getResult().getId())){
|
|
|
+ return VaultsResponse.success(back.getResult().getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ return VaultsResponse.failed(back.getResult().getComment());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VaultsResponse<PayInfoAppOutDTO> unifiedOrder(PaymentRecords records) {
|
|
|
+ BasicConfiguration basicConfig = Basic.getSystemParameter(records.getOperatorId());
|
|
|
+ PayInfoAppOutDTO dto = new PayInfoAppOutDTO();
|
|
|
+ PayOrder payOrder = new PayOrder();
|
|
|
+ payOrder.setPos_seq(records.getPayId().toString());
|
|
|
+ payOrder.setPos_id(basicConfig.getCode());
|
|
|
+ payOrder.setStore_id(records.getOperatorId().toString());
|
|
|
+ payOrder.setDevice_ip(ip);
|
|
|
+ payOrder.setSystem_id(basicConfig.getSystemId());
|
|
|
+ payOrder.setIsspid(basicConfig.getPid());
|
|
|
+ PayDetail detail = new PayDetail();
|
|
|
+ detail.setBuyer_id(records.getOpenid());
|
|
|
+ detail.setTx_amt(records.getTxAmt());
|
|
|
+ detail.setNotify_url(url+"/payNotify");
|
|
|
+ ExtendParams extendParams = new ExtendParams();
|
|
|
+ extendParams.setPlan_split_date(records.getPlanSplitDate());
|
|
|
+ detail.setExtend_params(extendParams);
|
|
|
+ payOrder.setUnifiedorder_request(detail);
|
|
|
+ PayBack back;
|
|
|
+ try {
|
|
|
+ back = (PayBack) YmUtil.resultBack(payOrder,new PayBack());
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return VaultsResponse.failed(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(YmUtil.FAIL.equals(back.getResult().getId())){
|
|
|
+ dto.setAppId(records.getAppId());
|
|
|
+ dto.setTimeStamp(back.getTime_stamp());
|
|
|
+ dto.setNonceStr(back.getNonce_str());
|
|
|
+ dto.setPackages("prepay_id="+back.getPay_id());
|
|
|
+ dto.setSignType(back.getSign_type());
|
|
|
+ dto.setPaySign(back.getPay_sign());
|
|
|
+ dto.setPaySn(records.getPaySn());
|
|
|
+ return VaultsResponse.success(dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ return VaultsResponse.failed(back.getResult().getComment());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String payNotification(PayNotification payNotification) {
|
|
|
+
|
|
|
+ QueryWrapper<PaymentRecords> queryMapper = new QueryWrapper<>();
|
|
|
+ queryMapper.eq("pay_id",payNotification.getPos_seq());
|
|
|
+ try {
|
|
|
+ PaymentRecords pr = paymentRecordsService.getOne(queryMapper);
|
|
|
+ if(payNotification.getNotify_type().equals("1")){
|
|
|
+ //支付通知
|
|
|
+ if(pr.getStatus() == -1){
|
|
|
+ pr.setStatus(Integer.parseInt(payNotification.getStatus()));
|
|
|
+ pr.setEndTime(payNotification.getEnd_time());
|
|
|
+ pr.setSource(payNotification.getSource());
|
|
|
+ pr.setPosId(payNotification.getPos_id());
|
|
|
+ pr.setStoreId(payNotification.getStore_id());
|
|
|
+ pr.setPayType(payNotification.getPay_type());
|
|
|
+ pr.setTransType(payNotification.getTrans_type());
|
|
|
+ pr.setTradeNo(payNotification.getTrade_no());
|
|
|
+ pr.setChargeAmount(payNotification.getCharge_amount());
|
|
|
+ pr.setFundFreezeStat(payNotification.getFund_freeze_stat());
|
|
|
+ pr.setNotifyType(payNotification.getNotify_type());
|
|
|
+ PayReceive payReceive = new PayReceive();
|
|
|
+ payReceive.setPayId(pr.getPayId());
|
|
|
+ payReceive.setPaySn(pr.getPaySn());
|
|
|
+ payReceive.setOperatorId(pr.getOperatorId());
|
|
|
+ payReceive.setTradeNo(payNotification.getPos_seq());
|
|
|
+ payReceive.setStatus(payNotification.getStatus());
|
|
|
+ VaultsResponse vaultsResponse = orderFeignClient.changeOrderPay(payReceive);
|
|
|
+ if(vaultsResponse.validate()){
|
|
|
+ paymentRecordsService.updateById(pr);
|
|
|
+ }else {
|
|
|
+ return "fail";
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ log.info("重复推送支付成功消息---"+pr.getPaySn());
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ //解冻通知
|
|
|
+ if(pr.getFundFreezeStat().equals("01")){
|
|
|
+ pr.setFundFreezeStat(payNotification.getFund_freeze_stat());
|
|
|
+ pr.setFreezeTime(payNotification.getFreeze_time());
|
|
|
+ pr.setUnfreezeAmt(payNotification.getUnfreeze_amt());
|
|
|
+ pr.setUnfreezeTime(payNotification.getUnfreeze_time());
|
|
|
+ //调用分账通知
|
|
|
+ paymentRecordsService.updateById(pr);
|
|
|
+ }else{
|
|
|
+ log.info("重复推送解冻消息---"+pr.getPaySn());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return "fail";
|
|
|
+ }
|
|
|
+ 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());
|
|
|
+ refundReceive.setStatus(payNotification.getStatus());
|
|
|
+ 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;
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+}
|