jk-GitHub-coder 4 年 前
コミット
a5cc3d254b

+ 117 - 94
YijiaRestful/src/main/java/com/platform/yijia/controller/ElectronicMembershipCardController.java

@@ -66,6 +66,10 @@ public class ElectronicMembershipCardController {
     @Value("${yijia.path.global-prefix}")
     private String globalPrefix;
 
+    @Value("${yijia.domainName}")
+    private String domainName;
+
+
     //查询该油站是否启用电子会员卡
     @RequestMapping(value = "/getStationCardEnabledFlag", method = RequestMethod.GET)
     @ResponseBody
@@ -779,104 +783,118 @@ public class ElectronicMembershipCardController {
             String openId = rechargeBalance.getOpenId();    //公众号的openId
             Integer stationId = rechargeBalance.getStationId();
             String userType = rechargeBalance.getUserType();
-            String subject = rechargeBalance.getSubject();
+            //String subject = rechargeBalance.getSubject();
             String orderNo = rechargeBalance.getOrderNo();
-            //将业务参数存放在 JSON 对象中
-            JSONObject reqData = new JSONObject();
-            Map<String, String> resultMap = stationService.getStationAppIdAndAppSecret(stationId);
-            if(resultMap !=null && resultMap.containsKey("gzhAppId") && resultMap.containsKey("mno")){
-                logger.info("=================================电子会员卡(储蓄卡)充值功能调用随行付接口================================");
-                try {
-                    if(userType.equals("1")){
-                        //1 是微信公众号
-                        reqData.put("payWay", "02"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
-                        reqData.put("userId", openId); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
-                        reqData.put("subAppid", resultMap.get("gzhAppId")); //微信公众号
-                        logger.info("支付子商户:"+ resultMap.get("gzhAppId"));
-                    }else if(userType.equals("2")){
-                        reqData.put("payWay", "03"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
-                        reqData.put("userId", openId); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
-                        reqData.put("subAppid", resultMap.get("appId")); //微信小程序
-                        logger.info("支付子商户:"+ resultMap.get("appId"));
-                    }
-                    reqData.put("mno", resultMap.get("mno")); //商户编号
-                    logger.info("商户编号:"+ resultMap.get("mno"));
-                    reqData.put("ordNo", orderNo); //商户订单号
-                    reqData.put("amt", amt); //订单总金额
-                    reqData.put("payType", "WECHAT"); //支付渠道
-                    reqData.put("subject", subject); //订单标题
-                    reqData.put("tradeSource", "01"); //交易来源 01服务商,02收银台,03硬件
-                    reqData.put("trmIp", "172.16.2.1");//商家ip地址
-                    reqData.put("outFrontFailUrl", ""); //js 支付,前台 事变通知地址
-                    String notifyUrl = "https://www.huijy.net/"+globalPrefix+"/getCardRechargeCallback";
-                    reqData.put("notifyUrl", notifyUrl); //回调地址
-//                    reqData.put("notifyUrl", "https://www.huijy.net/api/getCardRechargeCallback"); //回调地址
-//                    reqData.put("subMechId", ""); //子商户号
-//                    reqData.put("amt", "0.01");
-//                    reqData.put("discountAmt", ""); //参与优惠金额
-//                    reqData.put("unDiscountAmt", ""); //不参与优惠金额
-//                    reqData.put("timeExpire", "10"); //订单失效时间, 以分钟为单位
-//                    reqData.put("limitPay", "00"); //限制卡类型: 00-全部 01-限定不能使 用信用卡支付 默认值 00
-//                    reqData.put("hbFqNum", "6"); //花呗分期数,仅可上送 6 或 12
-//                    reqData.put("customerIp", ""); //持卡人ip地址,银联js支付时必传
-//                    reqData.put("outFrontUrl", ""); //js 支付,前台 成功通知地址
-//                    reqData.put("needReceipt", "00"); //电子发票功能 微信开具电子 发票使用
-//                    reqData.put("ledgerAccountFlag", "00"); //是否做分账 分账交易使 用;00:做; 01:不做;不传默认为不做分账
-//                    reqData.put("ledgerAccountEffectTime", "00"); //分账有效时间 单位为天;是 否做分账选择 00 时该字段必传
-//                    reqData.put("ruleId", "00"); //同 步 分 账 规 则 id
-//                    reqData.put("fusruleId", "00"); //同步分账规则
-//                    reqData.put("ylTrmNo", ""); //银联终端号
-//                    reqData.put("terminalId", ""); //TQ机具编号
-//                    reqData.put("deviceNo ", "1111"); //设备号
-//                    reqData.put("identityFlag", ""); //是否是实名支付
-//                    reqData.put("buyerIdType", "IDCARD"); //证件类型
-//                    reqData.put("buyerIdNo", "410523198701054018"); //证件号
-//                    reqData.put("buyerName", "张三"); //买家姓名
-//                    reqData.put("mobileNum", ""); //手机号
-//                    reqData.put("extend", ""); //备用
-                    String req= SXFPaySign.getSXFPay(reqData);
-                    logger.debug("参数信息:"+req);
-                    System.out.println("req:" + req);
-                    //此处不要改变reqData里面值的顺序用LinkedHashMap
-                    HashMap reqMap = JSON.parseObject(req, LinkedHashMap.class, Feature.OrderedField);
-                    //组装加密串
-                    String signContent = RSASignature.getOrderContent(reqMap);
-                    System.out.println("拼接后的参数:" + signContent);
-                    logger.debug("拼接后的参数:"+signContent);
-                    //sign
-                    String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
-                    System.out.println("============签名:" + sign);
-                    reqMap.put("sign", sign);
-                    String reqStr = JSON.toJSONString(reqMap);
-                    System.out.println("请求参数:" + reqMap);
-                    System.out.println("请求参数:" + reqStr);
-                    //调用第三方接口地址
-                    //String url = "https://openapi-test.tianquetech.com/order/jsapiScan";//测试地址
-                    String url = "https://openapi.suixingpay.com/order/jsapiScan";//生产地址
-                    String resultJson = HttpUtils.connectPostUrl(url, reqStr);
-                    System.out.println("返回信息:" + resultJson);
-                    //   logger.debug("返回信息:"+resultJson);
-                    //不要对reqData排序 所以用LinkedHashMap
-                    HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
-                    if ("0000".equals(result.get("code"))) {
-                        //验签
-                        String signResult = result.get("sign").toString();
-                        result.remove("sign");
-                        String resultStr = RSASignature.getOrderContent(result);
-                        System.out.println(resultStr);
-                        //sign
-                        String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
-                        System.out.println("resultSign:" + resultSign);
-                        //组装加密串
-                        if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
-                            System.out.println("===================验签成功==============");
+
+            CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord();
+            customerCardUseRecord.setOrderNo(orderNo);
+            CustomerCardUseRecord cardRecordByOrderNo = electronicMembershipCardService.getCardRecordByOrderNo(customerCardUseRecord);
+            if(cardRecordByOrderNo !=null ){
+                if(cardRecordByOrderNo.getStatus() !=null && customerCardUseRecord.getStatus().equals("0")){
+                    //将业务参数存放在 JSON 对象中
+                    JSONObject reqData = new JSONObject();
+                    Map<String, String> resultMap = stationService.getStationAppIdAndAppSecret(stationId);
+                    if(resultMap !=null && resultMap.containsKey("gzhAppId") && resultMap.containsKey("mno")){
+                        logger.info("=================================电子会员卡(储蓄卡)充值功能调用随行付接口================================");
+                        try {
+                            if(userType.equals("1")){
+                                //1 是微信
+                                reqData.put("payType", "WECHAT"); //支付渠道 WECHAT:微信;ALIPAY:支付宝;UNIONPAY:银联
+                                reqData.put("payWay", "02"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
+                                reqData.put("userId", openId); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
+                                reqData.put("subAppid", resultMap.get("gzhAppId")); //微信公众号
+                                logger.info("支付子商户:"+ resultMap.get("gzhAppId"));
+                            }else if(userType.equals("2")){
+                                //2 支付宝
+                                reqData.put("payType", "ALIPAY"); //支付渠道 WECHAT:微信;ALIPAY:支付宝;UNIONPAY:银联
+                                reqData.put("payWay", "02"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
+                                reqData.put("userId", openId); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
+                                reqData.put("subAppid", resultMap.get("aliAppId")); //支付宝服务号appid
+                                logger.info("支付子商户:"+ resultMap.get("aliAppId"));
+                            }
+                            reqData.put("mno", resultMap.get("mno")); //商户编号
+                            logger.info("商户编号:"+ resultMap.get("mno"));
+                            reqData.put("ordNo", orderNo); //商户订单号
+                            reqData.put("amt", amt); //订单总金额
+                            reqData.put("subject", cardRecordByOrderNo.getOilsCardName()+ "电子卡" + " - " +cardRecordByOrderNo.getStationName()); //订单标题
+                            reqData.put("tradeSource", "01"); //交易来源 01服务商,02收银台,03硬件
+                            reqData.put("trmIp", "172.16.2.1");//商家ip地址
+                            reqData.put("outFrontFailUrl", ""); //js 支付,前台 事变通知地址
+                            String notifyUrl = "https://"+domainName+"/"+globalPrefix+"/getCardRechargeCallback";
+                            reqData.put("notifyUrl", notifyUrl); //回调地址
+//                            reqData.put("notifyUrl", "https://www.huijy.net/api/getCardRechargeCallback"); //回调地址
+//                            reqData.put("subMechId", ""); //子商户号
+//                            reqData.put("amt", "0.01");
+//                            reqData.put("discountAmt", ""); //参与优惠金额
+//                            reqData.put("unDiscountAmt", ""); //不参与优惠金额
+//                            reqData.put("timeExpire", "10"); //订单失效时间, 以分钟为单位
+//                            reqData.put("limitPay", "00"); //限制卡类型: 00-全部 01-限定不能使 用信用卡支付 默认值 00
+//                            reqData.put("hbFqNum", "6"); //花呗分期数,仅可上送 6 或 12
+//                            reqData.put("customerIp", ""); //持卡人ip地址,银联js支付时必传
+//                            reqData.put("outFrontUrl", ""); //js 支付,前台 成功通知地址
+//                            reqData.put("needReceipt", "00"); //电子发票功能 微信开具电子 发票使用
+//                            reqData.put("ledgerAccountFlag", "00"); //是否做分账 分账交易使 用;00:做; 01:不做;不传默认为不做分账
+//                            reqData.put("ledgerAccountEffectTime", "00"); //分账有效时间 单位为天;是 否做分账选择 00 时该字段必传
+//                            reqData.put("ruleId", "00"); //同 步 分 账 规 则 id
+//                            reqData.put("fusruleId", "00"); //同步分账规则
+//                            reqData.put("ylTrmNo", ""); //银联终端号
+//                            reqData.put("terminalId", ""); //TQ机具编号
+//                            reqData.put("deviceNo ", "1111"); //设备号
+//                            reqData.put("identityFlag", ""); //是否是实名支付
+//                            reqData.put("buyerIdType", "IDCARD"); //证件类型
+//                            reqData.put("buyerIdNo", "410523198701054018"); //证件号
+//                            reqData.put("buyerName", "张三"); //买家姓名
+//                            reqData.put("mobileNum", ""); //手机号
+//                            reqData.put("extend", ""); //备用
+                            String req= SXFPaySign.getSXFPay(reqData);
+                            logger.debug("参数信息:"+req);
+                            System.out.println("req:" + req);
+                            //此处不要改变reqData里面值的顺序用LinkedHashMap
+                            HashMap reqMap = JSON.parseObject(req, LinkedHashMap.class, Feature.OrderedField);
+                            //组装加密串
+                            String signContent = RSASignature.getOrderContent(reqMap);
+                            System.out.println("拼接后的参数:" + signContent);
+                            logger.debug("拼接后的参数:"+signContent);
+                            //sign
+                            String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
+                            System.out.println("============签名:" + sign);
+                            reqMap.put("sign", sign);
+                            String reqStr = JSON.toJSONString(reqMap);
+                            System.out.println("请求参数:" + reqMap);
+                            System.out.println("请求参数:" + reqStr);
+                            //调用第三方接口地址
+                            //String url = "https://openapi-test.tianquetech.com/order/jsapiScan";//测试地址
+                            String url = "https://openapi.suixingpay.com/order/jsapiScan";//生产地址
+                            String resultJson = HttpUtils.connectPostUrl(url, reqStr);
+                            System.out.println("返回信息:" + resultJson);
+                            //   logger.debug("返回信息:"+resultJson);
+                            //不要对reqData排序 所以用LinkedHashMap
+                            HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
+                            if ("0000".equals(result.get("code"))) {
+                                //验签
+                                String signResult = result.get("sign").toString();
+                                result.remove("sign");
+                                String resultStr = RSASignature.getOrderContent(result);
+                                System.out.println(resultStr);
+                                //sign
+                                String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
+                                System.out.println("resultSign:" + resultSign);
+                                //组装加密串
+                                if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
+                                    System.out.println("===================验签成功==============");
+                                }
+                            }
+                            resultData=ResultData.success(result);
+                        }catch (Exception e){
+                            resultData=ResultData.error(CodeMsg.YEWU_FAIL,"订单支付失败");
+                            e.printStackTrace();
                         }
                     }
-                    resultData=ResultData.success(result);
-                }catch (Exception e){
-                    resultData=ResultData.error(CodeMsg.YEWU_FAIL,"订单支付失败");
-                    e.printStackTrace();
+                }else {
+                    resultData = ResultData.error(CodeMsg.ALREADY_PAY);
                 }
+            }else {
+                resultData=ResultData.error(CodeMsg.YEWU_FAIL,"未查询到订单");
             }
         }else {
             resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
@@ -1039,6 +1057,11 @@ public class ElectronicMembershipCardController {
                     customerCardUseRecord.setStatus("1");
                     customerCardUseRecord.setBalance(customerElectronicCard.getAmt());
                     customerCardUseRecord.setOrderNo(ordNo);
+                    if(payType.equals("WECHAT")){
+                        customerCardUseRecord.setPayType("1");
+                    }else if(payType.equals("ALIPAY")){
+                        customerCardUseRecord.setPayType("2");
+                    }
                     //更新充值记录的状态和余额
                     electronicMembershipCardService.updateCardRecordStatusByOrderNo(customerCardUseRecord);
                     logger.info("===========客户电子会员卡充值成功已到账====");

+ 98 - 92
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -55,6 +55,8 @@ public class PayController {
     private  CustomerManagerService customerManagerService;
     @Value("${yijia.path.global-prefix}")
     private String globalPrefix;
+    @Value("${yijia.domainName}")
+    private String domainName;
 
 
 
@@ -168,106 +170,110 @@ public class PayController {
             try{
                 //根据订单号查询订单信息
                 PayOrder payOrder=payOrderService.selectOrderInfoByOrdNo(ordNo);
-                if(payOrder!=null){
-                    //将业务参数存放在 JSON 对象中
-                    JSONObject reqData = new JSONObject();
-                    reqData.put("ordNo", payOrder.getOrderNo()); //商户订单号
-                    //reqData.put("subMechId", ""); //子商户号
-                    reqData.put("amt", payOrder.getAmt()); //订单总金额
-                    //reqData.put("amt", "0.01");
-                    //reqData.put("discountAmt", ""); //参与优惠金额
-                    //reqData.put("unDiscountAmt", ""); //不参与优惠金额
-                    Map<String, String> stationAppIdAndAppSecret = stationService.getStationAppIdAndAppSecret(Integer.valueOf(payInfoRequest.getStationId()));
-                    if(stationAppIdAndAppSecret !=null && stationAppIdAndAppSecret.containsKey("appId") && stationAppIdAndAppSecret.containsKey("mno")){
+                if(payOrder!=null ){
+                    if(payOrder.getStatus() !=null && payOrder.getStatus().equals("0")){
+                        //将业务参数存放在 JSON 对象中
+                        JSONObject reqData = new JSONObject();
+                        reqData.put("ordNo", payOrder.getOrderNo()); //商户订单号
+                        //reqData.put("subMechId", ""); //子商户号
+                        reqData.put("amt", payOrder.getAmt()); //订单总金额
+                        //reqData.put("amt", "0.01");
+                        //reqData.put("discountAmt", ""); //参与优惠金额
+                        //reqData.put("unDiscountAmt", ""); //不参与优惠金额
+                        Map<String, String> stationAppIdAndAppSecret = stationService.getStationAppIdAndAppSecret(Integer.valueOf(payInfoRequest.getStationId()));
+                        if(stationAppIdAndAppSecret !=null && stationAppIdAndAppSecret.containsKey("appId") && stationAppIdAndAppSecret.containsKey("mno")){
+                            if(userType.equals("1")){
+                                reqData.put("subAppid", stationAppIdAndAppSecret.get("appId")); //微信小程序
+                                logger.info("支付子商户:"+ stationAppIdAndAppSecret.get("appId"));
+                            }else if(userType.equals("2")){
+                                reqData.put("subAppid", stationAppIdAndAppSecret.get("aliAppId")); //支付宝小程序
+                                logger.info("支付子商户:"+ stationAppIdAndAppSecret.get("aliAppId"));
+                            }
+                            reqData.put("mno", stationAppIdAndAppSecret.get("mno")); //商户编号
+                            logger.info("商户编号:"+ stationAppIdAndAppSecret.get("mno"));
+                        }
                         if(userType.equals("1")){
-                            reqData.put("subAppid", stationAppIdAndAppSecret.get("appId")); //微信小程序
-                            logger.info("支付子商户:"+ stationAppIdAndAppSecret.get("appId"));
+                            //1 是微信小程序
+                            reqData.put("payType", "WECHAT"); //支付渠道 WECHAT:微信;ALIPAY:支付宝;UNIONPAY:银联
+                            reqData.put("payWay", "03"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
+                            reqData.put("userId", appUserInfos.getMinaOpenid()); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
                         }else if(userType.equals("2")){
-                            reqData.put("subAppid", stationAppIdAndAppSecret.get("aliAppId")); //支付宝小程序
-                            logger.info("支付子商户:"+ stationAppIdAndAppSecret.get("aliAppId"));
+                            //2 是支付宝
+                            reqData.put("payType", "ALIPAY"); //支付渠道 WECHAT:微信;ALIPAY:支付宝;UNIONPAY:银联
+                            reqData.put("payWay", "03"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
+                            reqData.put("userId", appUserInfos.getALiId()); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
                         }
-                        reqData.put("mno", stationAppIdAndAppSecret.get("mno")); //商户编号
-                        logger.info("商户编号:"+ stationAppIdAndAppSecret.get("mno"));
-                    }
-                    if(userType.equals("1")){
-                        //1 是微信小程序
-                        reqData.put("payType", "WECHAT"); //支付渠道 WECHAT:微信;ALIPAY:支付宝;UNIONPAY:银联
-                        reqData.put("payWay", "03"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
-                        reqData.put("userId", appUserInfos.getMinaOpenid()); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
-                    }else if(userType.equals("2")){
-                        //2 是支付宝
-                        reqData.put("payType", "ALIPAY"); //支付渠道 WECHAT:微信;ALIPAY:支付宝;UNIONPAY:银联
-                        reqData.put("payWay", "03"); //支付方式  02 公众号/服 务窗/js支付 03 小程序
-                        reqData.put("userId", appUserInfos.getALiId()); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
-                    }
-                    //reqData.put("timeExpire", "10"); //订单失效时间, 以分钟为单位
-                    //reqData.put("limitPay", "00"); //限制卡类型: 00-全部 01-限定不能使 用信用卡支付 默认值 00
+                        //reqData.put("timeExpire", "10"); //订单失效时间, 以分钟为单位
+                        //reqData.put("limitPay", "00"); //限制卡类型: 00-全部 01-限定不能使 用信用卡支付 默认值 00
 
-                    reqData.put("subject", payOrder.getOilName() + " - " +payOrder.getStationName()); //订单标题
-                    //reqData.put("hbFqNum", "6"); //花呗分期数,仅可上送 6 或 12
-                    reqData.put("tradeSource", "01"); //交易来源 01服务商,02收银台,03硬件
-                    reqData.put("trmIp", "172.16.2.1");//商家ip地址
-                    // reqData.put("customerIp", ""); //持卡人ip地址,银联js支付时必传
+                        reqData.put("subject", payOrder.getOilName() + " - " +payOrder.getStationName()); //订单标题
+                        //reqData.put("hbFqNum", "6"); //花呗分期数,仅可上送 6 或 12
+                        reqData.put("tradeSource", "01"); //交易来源 01服务商,02收银台,03硬件
+                        reqData.put("trmIp", "172.16.2.1");//商家ip地址
+                        // reqData.put("customerIp", ""); //持卡人ip地址,银联js支付时必传
 
-                    //reqData.put("outFrontUrl", ""); //js 支付,前台 成功通知地址
-                    reqData.put("outFrontFailUrl", ""); //js 支付,前台 事变通知地址
-                    //globalPrefix
-                    String notifyUrl = "https://www.huijy.net/"+globalPrefix+"/getCallback";
-                    //reqData.put("notifyUrl", "https://www.huijy.net/api/getCallback"); //回调地址
-                    reqData.put("notifyUrl", notifyUrl); //回调地址
-                    //reqData.put("needReceipt", "00"); //电子发票功能 微信开具电子 发票使用
-                    //reqData.put("ledgerAccountFlag", "00"); //是否做分账 分账交易使 用;00:做; 01:不做;不传默认为不做分账
-                    //reqData.put("ledgerAccountEffectTime", "00"); //分账有效时间 单位为天;是 否做分账选择 00 时该字段必传
-                    // reqData.put("ruleId", "00"); //同 步 分 账 规 则 id
-                    // reqData.put("fusruleId", "00"); //同步分账规则
-                    //reqData.put("ylTrmNo", ""); //银联终端号
-                    //reqData.put("terminalId", ""); //TQ机具编号
-                    //reqData.put("deviceNo ", "1111"); //设备号
-                  //  reqData.put("identityFlag", ""); //是否是实名支付
-//                reqData.put("buyerIdType", "IDCARD"); //证件类型
-//                reqData.put("buyerIdNo", "410523198701054018"); //证件号
-                   // reqData.put("buyerName", "张三"); //买家姓名
-                   // reqData.put("mobileNum", ""); //手机号
-                   // reqData.put("extend", ""); //备用
-                    String req= SXFPaySign.getSXFPay(reqData);
-                     logger.debug("参数信息:"+req);
-                    System.out.println("req:" + req);
-                    //此处不要改变reqData里面值的顺序用LinkedHashMap
-                    HashMap reqMap = JSON.parseObject(req, LinkedHashMap.class, Feature.OrderedField);
-                    //组装加密串
-                    String signContent = RSASignature.getOrderContent(reqMap);
-                    System.out.println("拼接后的参数:" + signContent);
-                       logger.debug("拼接后的参数:"+signContent);
-                    //sign
-                    String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
-                    System.out.println("============签名:" + sign);
-                    reqMap.put("sign", sign);
-                    String reqStr = JSON.toJSONString(reqMap);
-                    System.out.println("请求参数:" + reqMap);
-                    System.out.println("请求参数:" + reqStr);
-                    //调用第三方接口地址
-                    //String url = "https://openapi-test.tianquetech.com/order/jsapiScan";//测试地址
-                    String url = "https://openapi.suixingpay.com/order/jsapiScan";//生产地址
-                    String resultJson = HttpUtils.connectPostUrl(url, reqStr);
-                    System.out.println("返回信息:" + resultJson);
-                    //   logger.debug("返回信息:"+resultJson);
-                    //不要对reqData排序 所以用LinkedHashMap
-                    HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
-                    if ("0000".equals(result.get("code"))) {
-                        //验签
-                        String signResult = result.get("sign").toString();
-                        result.remove("sign");
-                        String resultStr = RSASignature.getOrderContent(result);
-                        System.out.println("resultStr: " + resultStr);
-                        //sign
-                        String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
-                        System.out.println("resultSign: " + resultSign);
+                        //reqData.put("outFrontUrl", ""); //js 支付,前台 成功通知地址
+                        reqData.put("outFrontFailUrl", ""); //js 支付,前台 事变通知地址
+                        //globalPrefix
+                        String notifyUrl = "https://"+domainName+"/"+globalPrefix+"/getCallback";
+                        //reqData.put("notifyUrl", "https://www.huijy.net/api/getCallback"); //回调地址
+                        reqData.put("notifyUrl", notifyUrl); //回调地址
+                        //reqData.put("needReceipt", "00"); //电子发票功能 微信开具电子 发票使用
+                        //reqData.put("ledgerAccountFlag", "00"); //是否做分账 分账交易使 用;00:做; 01:不做;不传默认为不做分账
+                        //reqData.put("ledgerAccountEffectTime", "00"); //分账有效时间 单位为天;是 否做分账选择 00 时该字段必传
+                        // reqData.put("ruleId", "00"); //同 步 分 账 规 则 id
+                        // reqData.put("fusruleId", "00"); //同步分账规则
+                        //reqData.put("ylTrmNo", ""); //银联终端号
+                        //reqData.put("terminalId", ""); //TQ机具编号
+                        //reqData.put("deviceNo ", "1111"); //设备号
+                      //  reqData.put("identityFlag", ""); //是否是实名支付
+    //                reqData.put("buyerIdType", "IDCARD"); //证件类型
+    //                reqData.put("buyerIdNo", "410523198701054018"); //证件号
+                       // reqData.put("buyerName", "张三"); //买家姓名
+                       // reqData.put("mobileNum", ""); //手机号
+                       // reqData.put("extend", ""); //备用
+                        String req= SXFPaySign.getSXFPay(reqData);
+                         logger.debug("参数信息:"+req);
+                        System.out.println("req:" + req);
+                        //此处不要改变reqData里面值的顺序用LinkedHashMap
+                        HashMap reqMap = JSON.parseObject(req, LinkedHashMap.class, Feature.OrderedField);
                         //组装加密串
-                        if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
-                            System.out.println("===================验签成功==============");
+                        String signContent = RSASignature.getOrderContent(reqMap);
+                        System.out.println("拼接后的参数:" + signContent);
+                           logger.debug("拼接后的参数:"+signContent);
+                        //sign
+                        String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
+                        System.out.println("============签名:" + sign);
+                        reqMap.put("sign", sign);
+                        String reqStr = JSON.toJSONString(reqMap);
+                        System.out.println("请求参数:" + reqMap);
+                        System.out.println("请求参数:" + reqStr);
+                        //调用第三方接口地址
+                        //String url = "https://openapi-test.tianquetech.com/order/jsapiScan";//测试地址
+                        String url = "https://openapi.suixingpay.com/order/jsapiScan";//生产地址
+                        String resultJson = HttpUtils.connectPostUrl(url, reqStr);
+                        System.out.println("返回信息:" + resultJson);
+                        //   logger.debug("返回信息:"+resultJson);
+                        //不要对reqData排序 所以用LinkedHashMap
+                        HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
+                        if ("0000".equals(result.get("code"))) {
+                            //验签
+                            String signResult = result.get("sign").toString();
+                            result.remove("sign");
+                            String resultStr = RSASignature.getOrderContent(result);
+                            System.out.println("resultStr: " + resultStr);
+                            //sign
+                            String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
+                            System.out.println("resultSign: " + resultSign);
+                            //组装加密串
+                            if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
+                                System.out.println("===================验签成功==============");
+                            }
                         }
+                        resultData=ResultData.success(result);
+                    }else {
+                        resultData=ResultData.error(CodeMsg.ALREADY_PAY);
                     }
-                    resultData=ResultData.success(result);
                 }else {
                     resultData=ResultData.error(CodeMsg.YEWU_FAIL,"未查询到订单");
                 }

+ 1 - 0
YijiaRestful/src/main/java/com/platform/yijia/pojo/CustomerCardUseRecord.java

@@ -27,4 +27,5 @@ public class CustomerCardUseRecord {
     private Integer stationId;              //'油站ID'
     private String stationName;             //'油站名称'
     private String status;                  //'充值状态'
+    private String oilsCardName;            //卡名字
 }

+ 2 - 0
YijiaRestful/src/main/java/com/platform/yijia/utils/CodeMsg.java

@@ -26,6 +26,8 @@ public class CodeMsg {
     public static CodeMsg REQUEST_FAIL = new CodeMsg(-2,"必传参数不能为空");
     public static CodeMsg YEWU_FAIL = new CodeMsg(006,"业务失败");
     public static CodeMsg NO_CARDENABLEFLAG = new CodeMsg(-2,"未启用电会员卡");
+    public static CodeMsg ALREADY_PAY = new CodeMsg(-2,"该订单已支付");
+
 
     public static CodeMsg CHECK_DATA = new CodeMsg(007,"与后台检验不一致,请联系……");
     public static CodeMsg PARAMS_NUll = new CodeMsg(-2,"请求失败,必传参数不能为空!");

+ 6 - 1
YijiaRestful/src/main/resources/application.yml

@@ -13,11 +13,16 @@ server:
 pagehelper:
     helper-dialect=mysql:
 
-# 路径前缀动态配置
+# 域名 路径前缀动态配置
 yijia:
+    # 域名
+    domainName: pay.huijy.net
+#    domainName: www.huijy.net
+    # 路径前缀
     path:
         global-prefix: test
 
+
 # POS机登录解密密文密码
 3des:
     pwd: LAnZ8RRSkIY0EGVYheu2IjEk

+ 8 - 3
YijiaRestful/src/main/resources/mapper/ElectronicMembershipCardMapper.xml

@@ -36,6 +36,7 @@
         <result column="create_time"           jdbcType="TIMESTAMP" property="createTime" />
         <result column="station_id"            jdbcType="INTEGER"   property="stationId" />
         <result column="status"                jdbcType="VARCHAR"   property="status" />
+        <result column="oilsCardName"          jdbcType="VARCHAR"   property="oilsCardName" />
     </resultMap>
 
     <!--储蓄卡充值规则返回结果-->
@@ -125,14 +126,18 @@
             T1.present_amt,
             T1.create_time,
             T1.station_id,
-            T1.status
+            T1.status,
+            T3.dept_name                AS station_name,
+            T4.dict_label               AS oilsCardName
         FROM
             customer_card_use_record    AS T1
         LEFT JOIN app_user_info         AS T2 ON T1.station_id = T2.station_id AND T1.union_id =T2.union_id
-        LEFT JOIN sys_dept              AS T2 ON T1.station_id = T3.station_id
+        LEFT JOIN sys_dept              AS T3 ON T1.station_id = T3.dept_id
+        LEFT JOIN sys_dict_data         AS T4 ON T1.card_oils_type = T4.dict_value
         <where>
+            T4.dict_type ="oil"
             <if test=" orderNo !=null and orderNo !=''">
-                T1.order_no = #{orderNo}
+                AND T1.order_no = #{orderNo}
             </if>
         </where>
     </select>