| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- 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.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.notifyUrl}")
- private String notifyUrl;
- @Value("${pay.field.code}")
- private String code;
- @Resource
- private IPaymentRecordsService paymentRecordsService;
- @Resource
- private OrderFeignClient orderFeignClient;
- @Override
- public VaultsResponse bindPos(BindDto dto) {
- BindPos pos = new BindPos();
- pos.setPos_id(dto.getPosId());
- 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.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<PayQueryBack> barcodeQuery(String transactionId) {
- 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) {
- PayReverse payReverse = new PayReverse();
- payReverse.setPos_id(code);
- payReverse.setStore_id(refundReceive.getOperatorId().toString());
- payReverse.setPos_seq(refundReceive.getRefundId().toString());
- PayReverseDetail detail = new PayReverseDetail();
- detail.setTx_amt(refundReceive.getPrice().toString());
- detail.setOrg_pos_seq(refundReceive.getPayId().toString());
- 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())){
- return VaultsResponse.success(back.getResult().getId());
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public VaultsResponse barcodeRefundQuery(String transactionId,String operatorId) {
- PayRefundQuery payRefundQuery = new PayRefundQuery();
- payRefundQuery.setPos_id(code);
- payRefundQuery.setStore_id(operatorId);
- 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())){
- return VaultsResponse.success();
- }else if(YmUtil.FAIL.equals(back.getResult().getId())){
- return VaultsResponse.success("退款处理中...");
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public VaultsResponse<PayInfoAppOutDTO> unifiedOrder(PaymentRecords records) {
- PayInfoAppOutDTO dto = new PayInfoAppOutDTO();
- PayOrder payOrder = new PayOrder();
- payOrder.setPos_seq(records.getPayId().toString());
- payOrder.setPos_id(code);
- payOrder.setStore_id(records.getOperatorId().toString());
- payOrder.setDevice_ip(ip);
- PayDetail detail = new PayDetail();
- detail.setBuyer_id(records.getOpenid());
- detail.setTx_amt(records.getTxAmt());
- detail.setNotify_url(notifyUrl);
- 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(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());
- 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());
- }
- }catch (Exception e){
- e.printStackTrace();
- return "fail";
- }
- return "success";
- }
- }
|