美文网首页
微信小程序开发-微信支付之免密支付(自动扣费)二 小程序+jav

微信小程序开发-微信支付之免密支付(自动扣费)二 小程序+jav

作者: 虚幻的锈色 | 来源:发表于2018-09-17 18:43 被阅读1323次

    接着教程1写的 一些通用的接口函数,接收解析参数等我去掉了,你们自己加,给微信传输的参数看我上一个教程中链接有解释。

    1、查询签约contract_id 函数,查看签约有没有效果,签约id是什么
        private Map<String, Object> _queryContract(String openid){
            Map<String, Object> signMap = new TreeMap<>(
                    new Comparator<String>() {
                        public int compare(String obj1, String obj2) {
                            // 升序排序
                            return obj1.compareTo(obj2);
                        }
                    }
            );
            signMap.put("appid",appid);
            signMap.put("mch_id",mch_id);
            signMap.put("openid",openid);
            signMap.put("plan_id",plan_id);
            signMap.put("version","1.0");
            String sign=getSign(signMap);
    
            StringBuilder XML = new StringBuilder();
            XML.append("<xml>");
            XML.append("<appid><![CDATA["+appid+"]]></appid>");
            XML.append("<mch_id><![CDATA["+mch_id+"]]></mch_id>");
            XML.append("<openid><![CDATA["+openid+"]]></openid>");
            XML.append("<plan_id><![CDATA["+plan_id+"]]></plan_id>");
            XML.append("<version><![CDATA[1.0]]></version>");
            XML.append("<sign><![CDATA["+sign+"]]></sign>");
            XML.append("</xml>");
            String xml = XML.toString();
            //  调用请求微信接口函数 并return结果
            HttpsClientUtil httpsClientUtil = new HttpsClientUtil();
            String wxResponseText = null;
            try{
                wxResponseText=httpsClientUtil.doPostXml(wxQueryContractUrl, xml);
            }catch(Exception e){
                results.put("success",false);
                results.put("msg", "_queryContract_查询签约状态请求失败");
                results.put("message", e);
                return results;
            }
            Document document = null;
            //开始解析xml字符串
            try{
                document = DocumentHelper.parseText(wxResponseText);
            }catch(Exception e){
                results.put("success",false);
                results.put("msg", "_queryContract_查询签约状态请求失败");
                results.put("message", e);
                return results;
            }
            Element root = document.getRootElement();
            Element successEl=root.element("return_code");//查询状态
            String success=successEl.getStringValue();
            if(success.equals("SUCCESS")){//此次查询成功
                Element resultCodeEL = root.element("result_code"); //业务结果
                String resultCode = resultCodeEL.getStringValue();
                if( resultCode.equals("SUCCESS") ){//判断业务结果
                    //存放结果数据
                    Map<String,Object> item= new HashMap<>();
                    Element contractEl=root.element("contract_id");
                    String contract_id=contractEl.getStringValue();
                    results.put("contract_id",contract_id);
                    results.put("success", true);
                }else if( resultCode.equals("FAIL") ){
                    Element errCodeEl=root.element("err_code");//错误代码
                    String errCode=errCodeEl.getStringValue();
                    Element errCodeDesEl=root.element("err_code_des");//错误代码描述
                    String errCodeDes=errCodeDesEl.getStringValue();
                    results.put("success",false);
                    results.put("msg",errCode);
                    results.put("message", errCodeDes);
                }
            }else if(success.equals("FAIL")){
                Element msgEl=root.element("return_msg");//错误原因
                String msg=msgEl.getStringValue();
                results.put("success",false);
                results.put("msg",msg);
                results.put("message", msg);
            }
            return results;
        }
    
    2、查询订单状态
        /查询微信订单接口selectPayOrder
        public String selectPayOrder() throws Exception {
            if(this.param==null || this.param.isEmpty()){
                try {
                    this.param = getParamFromRequest();
                }catch(Exception ex){
                    results.put("success", false);
                    results.put("msg", "参数错误");
                    results.put("message", ex.toString());
                    rootLogger.error("getUserStatus--------传入参数有误!");
                    rootLogger.error(ex);
                    return JSON;
                }
                if( this.param==null ){
                    results.put("success", false);
                    results.put("msg", "参数不足");
                    results.put("message", "缺失参数param");
                    rootLogger.error("getUserStatus------传入参数不足,获取不到用户信息!");
                    return JSON;
                }
            }
            Object param_deserialize;
            try {
                param_deserialize = JSONUtil.deserialize(this.param);
            }catch (Exception e){
                results.put("success", false);
                results.put("msg", "参数解析错误");
                results.put("message", e.getMessage());
                rootLogger.error("getUserStatus------参数解析错误!");
                rootLogger.error(e);
                return JSON;
            }
    
            Map<String, Object> queryMap = null;
            try {
                queryMap = (Map<String, Object>)param_deserialize;
            } catch (ClassCastException ex1) {
                results.put("success", false);
                results.put("msg", "参数解析错误");
                results.put("message", ex1.getMessage());
                rootLogger.error("getUserStatus------用户信息参数解析错误!");
                rootLogger.error(ex1);
                return JSON;
            }
            if(queryMap.get("orderNo").equals("")||queryMap.get("orderNo")==null){
                results.put("success", false);
                results.put("msg", "传入订单号为空");
                return JSON;
            }
            // ****  从传入对象中获取订单号
            String orderNo=(String) queryMap.get("orderNo");
            String nonce_str= MD5Utils.getNonceStr(32);//随机字符串
            // **** 将所有参数组装成map排序
            Map<String, Object> signMap = new TreeMap<String, Object>(
                    new Comparator<String>() {
                        public int compare(String obj1, String obj2) {
                            // 升序排序
                            return obj1.compareTo(obj2);
                        }
                    }
            );
            signMap.put("appid",appid);
            signMap.put("mch_id",mch_id);
            signMap.put("out_trade_no",orderNo);
            signMap.put("nonce_str",nonce_str);
            //调用组合签名字符串函数,获取签名结果
            String sign=getSign(signMap);
            // ****: 开始拼接xml
            StringBuilder XML = new StringBuilder();
            XML.append("<xml>");
            XML.append("<appid><![CDATA["+appid+"]]></appid>");
            XML.append("<mch_id><![CDATA["+mch_id+"]]></mch_id>");
            XML.append("<out_trade_no><![CDATA["+orderNo+"]]></out_trade_no>");
            XML.append("<nonce_str><![CDATA["+nonce_str+"]]></nonce_str>");
            XML.append("<sign><![CDATA["+sign+"]]></sign>");
            XML.append("</xml>");
            String xml = XML.toString();
            // ****: 调用请求微信接口函数 并return结果
            HttpsClientUtil httpsClientUtil = new HttpsClientUtil();
            // **** 开始调用请求微信接口
            try {
                //请求微信接口,储存结果
                String wxResponseText = httpsClientUtil.doPostXml(wxQueryOrderUrl, xml);
                //开始解析xml字符串
                Document document = DocumentHelper.parseText(wxResponseText);
                Element root = document.getRootElement();
                Element successEl=root.element("return_code");
                String success=successEl.getStringValue();
                Element msgEl=root.element("return_msg");
                String msg=msgEl.getStringValue();//getTextTrim
                //开始判断结果
                if(success.equals("SUCCESS")){//判断握手结果
                    Element resultCodeEl=root.element("result_code");
                    String resultCode=resultCodeEl.getStringValue();
                    if( resultCode.equals("SUCCESS") ){//判断业务结果
                        Element openidEl=root.element("openid");
                        String openid=openidEl.getStringValue();
                        Element trade_stateEl=root.element("trade_state");
                        String trade_state=trade_stateEl.getStringValue();
                        Element total_feeEl=root.element("total_fee");
                        String total_fee=total_feeEl.getStringValue();
                        Element transaction_idEl=root.element("transaction_id");
                        String transaction_id=transaction_idEl.getStringValue();
                        Map<String,Object> item= new HashMap<String,Object>();
                        item.put("orderNo",orderNo);
                        item.put("openid",openid);
                        item.put("trade_state",trade_state);
                        item.put("total_fee",total_fee);
                        item.put("transaction_id",transaction_id);
                        results.put("success",true);
                        results.put("data",item);
                    }else if( resultCode.equals("FAIL") ){
                        Element errCodeEl=root.element("err_code");//错误代码
                        String errCode=errCodeEl.getStringValue();
                        Element errCodeDesEl=root.element("err_code_des");//错误代码描述
                        String errCodeDes=errCodeDesEl.getStringValue();
                        results.put("success", false);
                        results.put("msg", errCodeDes);
                        results.put("message", errCode);
    
                    }
                }else if(success.equals("FAIL")){
                    results.put("success", false);
                    results.put("msg", "请求微信接口出错");
                    results.put("message", msg);
                }
            }catch (Exception e){
                results.put("success", false);
                results.put("msg", "请求微信接口出错");
                results.put("message", e.getMessage());
                rootLogger.error("请求微信接口出错");
                rootLogger.error(e);
            }
            return JSON;
        }
    
    3、申请退款
        // 申请退款接口
        public String refundOrder() throws Exception{
            if(this.param==null || this.param.isEmpty()){
                this.param=getParamFromRequest();
                if( this.param==null ){
                    results.put("success", false);
                    results.put("msg", "参数不足");
                    results.put("message", "缺失参数param");
                    rootLogger.error("queryState-------缺失参数param");
                    return JSON;
                }
            }
            Object param_deserialize;
            try {
                param_deserialize = JSONUtil.deserialize(param);
            }catch (Exception e){
                results.put("success", false);
                results.put("msg", "参数解析错误");
                results.put("message", e.getMessage());
                rootLogger.error("queryState-------参数解析错误!");
                rootLogger.error(e);
                return JSON;
            }
    
            Map<String, String> paramMap;
            try{
                paramMap = (Map<String, String>)param_deserialize;
            }catch(ClassCastException ex2){
                results.put("success", false);
                results.put("msg", "参数格式不正确");
                results.put("message", ex2.getMessage());
                rootLogger.error("queryState-------参数格式不正确!");
                rootLogger.error(ex2);
                return JSON;
            }
    
            //验证签名**验签方面伍勇做....
    
            //开始获取参数并判断
            int total_fee=Integer.parseInt( paramMap.get("amount") );//订单金额
            int refund_fee=Integer.parseInt( paramMap.get("refund_fee") );//退款金额
            String out_refund_no=paramMap.get("out_refund_no");//退款商户订单号-商户系统内部的退款单号唯一
            String transaction_id=paramMap.get("transaction_id");//微信支付订单号
            //生成随机字符串
            String nonce_str= MD5Utils.getNonceStr(32);//随机字符串
            //下面这些是存数据库用
            String openid=paramMap.get("openid");
            String time=paramMap.get("time");
            String orderNo=paramMap.get("orderNo");
            String lineName=paramMap.get("lineName");
            String stationName=paramMap.get("stationName");
            String start_station=paramMap.get("start_station");
            String end_station=paramMap.get("end_station");
            // TODO: 签名数据源
            Map<String,Object> refundData=new TreeMap<String, Object>(
                    new Comparator<String>() {
                        public int compare(String obj1, String obj2) {
                            // 升序排序
                            return obj1.compareTo(obj2);
                        }
                    });
            refundData.put("appid",appid);
            refundData.put("mch_id",mch_id);
            refundData.put("nonce_str",nonce_str);
            refundData.put("transaction_id",transaction_id);
            refundData.put("out_refund_no",out_refund_no);
            refundData.put("total_fee",total_fee);
            refundData.put("refund_fee",refund_fee);
            //调用组合签名字符串函数,获取签名结果
            String sign=getSign(refundData);
    
            // TODO: 开始拼接xml
            StringBuilder XML = new StringBuilder();
            XML.append("<xml>");
            XML.append("<appid><![CDATA["+appid+"]]></appid>");
            XML.append("<mch_id><![CDATA["+mch_id+"]]></mch_id>");
            XML.append("<nonce_str><![CDATA["+nonce_str+"]]></nonce_str>");
            XML.append("<transaction_id><![CDATA["+transaction_id+"]]></transaction_id>");
            XML.append("<out_refund_no><![CDATA["+out_refund_no+"]]></out_refund_no>");
            XML.append("<total_fee><![CDATA["+total_fee+"]]></total_fee>");
            XML.append("<refund_fee><![CDATA["+refund_fee+"]]></refund_fee>");
            XML.append("<sign><![CDATA["+sign+"]]></sign>");
            XML.append("</xml>");
            String xml = XML.toString();
            // TODO: 调用请求微信接口函数 并return结果
            try{
                HttpsClientUtil httpsClientUtil = new HttpsClientUtil();
                String wxResponseText= httpsClientUtil.doPostXml(wxRefundUrl, xml);
                //开始解析xml字符串
                Document document = DocumentHelper.parseText(wxResponseText);
                Element root = document.getRootElement();
                Element returnCodeEL=root.element("return_code");//握手状态
                String returnCode=returnCodeEL.getStringValue();
                Element returnMsgEl;
                String returnMsg;
                if(returnCode.equals("SUCCESS")){//判断握手结果
                    //握手成功
                    Element resultCodeEl=root.element("result_code");
                    String resultCode=resultCodeEl.getStringValue();
                    if(resultCode.equals("SUCCESS")){//判断业务结果
                        //获取结果数据
                        Element refundIdEl=root.element("refund_id");
                        String refundId=refundIdEl.getStringValue();
                        //返回给前台
                        results.put("refundId",refundId);
                        results.put("success",true);
                        //申请成功 开始储存数据库表
                        Map<String,String> saveData= new HashMap<String,String>();
                        saveData.put("transactionId",transaction_id);
                        saveData.put("total_fee",(total_fee+"") );
                        saveData.put("refund_fee",(refund_fee+"") );
                        saveData.put("out_refund_no",out_refund_no );
                        saveData.put("refund_id",refundId );
                        saveData.put("openid",openid);//
                        saveData.put("time",time);
                        saveData.put("orderNo",orderNo);
                        saveData.put("lineName",lineName );
                        saveData.put("stationName",stationName);//
                        saveData.put("start_station",start_station);
                        saveData.put("end_station",end_station);
                        //开始调用sql
                        try{
                            dbExecutor.insert("com.sutpc.dao.PayDao.saveRefundOrder",saveData);
                        }catch (Exception e){
                            rootLogger.error("doWxPay-----存储失败!");
                            rootLogger.error(e);
                        }
                    }else if(resultCode.equals("FAIL")){
                        Element errCodeEl=root.element("err_code");//错误代码
                        String errCode=errCodeEl.getStringValue();
                        Element errCodeDesEl=root.element("err_code_des");//错误代码描述
                        String errCodeDes=errCodeDesEl.getStringValue();
                        results.put("success",false);
                        results.put("message",errCode);
                        results.put("msg", errCodeDes);
                    }
                }else if(returnCode.equals("FAIL")){
                    //握手失败
                    returnMsgEl=root.element("return_msg");
                    returnMsg=returnMsgEl.getStringValue();
                    results.put("success",false);
                    results.put("msg","请求微信失败");
                    results.put("message",returnMsg);
                }
            }catch (Exception e){
                results.put("success",false);
                results.put("msg","请求微信失败");
                results.put("message","微信拒接请求,未安装证书");
            }
            return JSON;
        }
    
    4、查询退款结果
        // 查询退款结果 wxSelectRefund
        public String selectRefund() throws Exception{
            if(this.param==null || this.param.isEmpty()){
                this.param=getParamFromRequest();
                if( this.param==null ){
                    results.put("success", false);
                    results.put("msg", "参数不足");
                    results.put("message", "缺失参数param");
                    rootLogger.error("queryState-------缺失参数param");
                    return JSON;
                }
            }
            Object param_deserialize;
            try {
                param_deserialize = JSONUtil.deserialize(param);
            }catch (Exception e){
                results.put("success", false);
                results.put("msg", "参数解析错误");
                results.put("message", e.getMessage());
                rootLogger.error("queryState-------参数解析错误!");
                rootLogger.error(e);
                return JSON;
            }
    
            Map<String, String> paramMap;
            try{
                paramMap = (Map<String, String>)param_deserialize;
            }catch(ClassCastException ex2){
                results.put("success", false);
                results.put("msg", "参数格式不正确");
                results.put("message", ex2.getMessage());
                rootLogger.error("selectRefund-------参数格式不正确!");
                rootLogger.error(ex2);
                return JSON;
            }
            String refund_id=paramMap.get("refund_id");
            if(refund_id.equals("") || refund_id==null){
                results.put("success", false);
                results.put("msg", "参数不正确");
                results.put("message", "refund_id is null");
                rootLogger.error("selectRefund-------缺少refund_id参数!");
                return JSON;
            }
            // TODO: 签名数据源
            Map<String,Object> selectRefundData=new TreeMap<String, Object>(
                    new Comparator<String>() {
                        public int compare(String obj1, String obj2) {
                            // 升序排序
                            return obj1.compareTo(obj2);
                        }
                    });
            selectRefundData.put("appid",appid);
            selectRefundData.put("mch_id",mch_id);
            selectRefundData.put("refund_id",refund_id);
            //生成随机字符串
            String nonce_str= MD5Utils.getNonceStr(32);//随机字符串
            selectRefundData.put("nonce_str",nonce_str);
            String sign=getSign(selectRefundData);
            // TODO: 开始拼接xml
            StringBuilder XML = new StringBuilder();
            XML.append("<xml>");
            XML.append("<appid><![CDATA["+appid+"]]></appid>");
            XML.append("<mch_id><![CDATA["+mch_id+"]]></mch_id>");
            XML.append("<nonce_str><![CDATA["+nonce_str+"]]></nonce_str>");
            XML.append("<refund_id><![CDATA["+refund_id+"]]></refund_id>");
            XML.append("<sign><![CDATA["+sign+"]]></sign>");
            XML.append("</xml>");
            String xml = XML.toString();
            try{
                HttpsClientUtil httpsClientUtil = new HttpsClientUtil();
                String wxResponseText= httpsClientUtil.doPostXml(wxSelectRefund, xml);
                //开始解析xml字符串
                Document document = DocumentHelper.parseText(wxResponseText);
                Element root = document.getRootElement();
                Element returnCodeEL=root.element("return_code");//握手状态
                String returnCode=returnCodeEL.getStringValue();
                Element returnMsgEl;
                String returnMsg;
                if(returnCode.equals("SUCCESS")){//判断握手结果
                    //握手成功
                    Element resultCodeEl=root.element("result_code");
                    String resultCode=resultCodeEl.getStringValue();
                    if(resultCode.equals("SUCCESS")){//判断业务结果
                        //获取结果数据
                        Element refundStatusEl=root.element("refund_status_0");
                        String refundStatus=refundStatusEl.getStringValue();
                        Element refundRecvAccoutEl=root.element("refund_recv_accout_0");
                        String refundRecvAccout=refundRecvAccoutEl.getStringValue();
                        //返回给前台
                        results.put("refund_status",refundStatus);
                        results.put("refund_recv_accout",refundRecvAccout);
                        results.put("refund_id",refund_id);
                        results.put("success",true);
                        //申请成功 开始储存数据库表
                        Map<String,String> saveData= new HashMap<String,String>();
                        saveData.put("refund_status",refundStatus);//状态 SUCCESS—退款成功 FAIL—退款失败 PROCESSING—退款处理中 NOTSURE—未确定,需要商户原退款单号重新发起
                        saveData.put("refund_recv_accout",refundRecvAccout);//退到哪1)退回银行卡:2)退回支付用户零钱:
                        saveData.put("refund_id",refund_id);
                        //开始调用sql
                        try{
                            dbExecutor.insert("com.sutpc.dao.PayDao.updateRefundOrder",saveData);
                        }catch (Exception e){
                            rootLogger.error("doWxPay-----存储失败!");
                            rootLogger.error(e);
                        }
                    }else if(resultCode.equals("FAIL")){
                        Element errCodeEl=root.element("err_code");//错误代码
                        String errCode=errCodeEl.getStringValue();
                        Element errCodeDesEl=root.element("err_code_des");//错误代码描述
                        String errCodeDes=errCodeDesEl.getStringValue();
                        results.put("success",false);
                        results.put("message",errCode);
                        results.put("msg", errCodeDes);
                        //失败 记录失败原因 开始储存数据库表
                        Map<String,String> saveData= new HashMap<String,String>();
                        saveData.put("err_code",errCode);
                        saveData.put("err_code_des",errCodeDes);
                        saveData.put("refund_id",refund_id);
                        //开始调用sql
                        try{
                            dbExecutor.update("com.sutpc.dao.PayDao.updateRefundOrder",saveData);
                        }catch (Exception e){
                            rootLogger.error("doWxPay-----存储失败!");
                            rootLogger.error(e);
                        }
                    }
                }else if(returnCode.equals("FAIL")){
                    //握手失败
                    returnMsgEl=root.element("return_msg");
                    returnMsg=returnMsgEl.getStringValue();
                    results.put("success",false);
                    results.put("msg","请求微信失败");
                    results.put("message",returnMsg);
                }
            }catch (Exception e){
                results.put("success",false);
                results.put("msg","请求微信失败");
                results.put("message","连接微信请求失败");
            }
            return JSON;
        }
    
    5、查询订单状态2
        // 查询订单状态接口
        public String queryOrder() throws Exception {
            if(this.param==null || this.param.isEmpty()){
                this.param=getParamFromRequest();
                if( this.param==null ){
                    results.put("success", false);
                    results.put("msg", "参数不足");
                    results.put("message", "缺失参数param");
                    rootLogger.error("queryOrder--------缺失参数param!");
                    return JSON;
                }
            }
            Object param_deserialize;
            try {
                param_deserialize = JSONUtil.deserialize(param);
            }catch (Exception e){
                results.put("success", false);
                results.put("msg", "参数解析错误");
                results.put("message", e.getMessage());
                rootLogger.error("queryOrder--------参数解析错误!");
                rootLogger.error(e);
                return JSON;
            }
            Map<String, String> paramMap;
            try{
                paramMap = (Map<String, String>)param_deserialize;
            }catch(ClassCastException ex2){
                results.put("success", false);
                results.put("msg", "参数格式不正确");
                results.put("message", ex2.getMessage());
                rootLogger.error("queryOrder--------参数格式不正确!");
                rootLogger.error(ex2);
                return JSON;
            }
            //判断参数是否正确
            String out_trade_no=paramMap.get("orderNo");
            if( out_trade_no==null || out_trade_no.equals("")  ){
                results.put("success", false);
                results.put("msg", "订单号错误");
                results.put("message", "orderNo参数不存在或空");
                rootLogger.error("queryOrder--------订单号错误:orderNo参数不存在或空!");
                return JSON;
            }
            //将所有参数组装成map排序
            Map<String, Object> signMap = new TreeMap<String, Object>(
                new Comparator<String>() {
                    public int compare(String obj1, String obj2) {
                        // 升序排序
                        return obj1.compareTo(obj2);
                    }
                }
            );
            signMap.put("mch_id",mch_id);
            signMap.put("appid",appid);
            signMap.put("out_trade_no",out_trade_no);
            //生成随机字符串
            String nonce_str= MD5Utils.getNonceStr(32);
            signMap.put("nonce_str",nonce_str);
            signMap.put("sign_type","MD5");
            //获取签名结果
            String sign=getSign(signMap);
            //拼接XML
            String xml = "<xml>" +
                    "<appid><![CDATA[" + appid + "]]></appid>" +
                    "<mch_id><![CDATA[" + mch_id + "]]></mch_id>" +
                    "<nonce_str><![CDATA[" + nonce_str + "]]></nonce_str>" +
                    "<out_trade_no><![CDATA[" + out_trade_no + "]]></out_trade_no>" +
                    "<sign><![CDATA[" + sign + "]]></sign>" +
                    "<sign_type><![CDATA[MD5]]></sign_type>" +
                    "</xml>";
            // TODO: 调用请求微信接口函数 并return结果
            HttpsClientUtil httpsClientUtil = new HttpsClientUtil();
            String wxResponseText=httpsClientUtil.doPostXml(wxQueryOrderUrl, xml);
            //开始解析xml字符串
            Document document = DocumentHelper.parseText(wxResponseText);
            Element root = document.getRootElement();
            Element successEl=root.element("return_code");//查询状态
            String success=successEl.getStringValue();
            //开始判断结果
            if(success.equals("SUCCESS")){//判断查询状态
                Element resultCodeEL=root.element("result_code"); //业务结果
                String resultCode=resultCodeEL.getStringValue();
                if( resultCode.equals("SUCCESS") ){//判断业务结果
                    //存放结果数据
                    Map<String,Object> item= new HashMap<String,Object>();
                    Element outTradeNoEl=root.element("out_trade_no");//商户订单号 和 其实传入的订单号一样
                    String outTradeNo=outTradeNoEl.getStringValue();
                    //订单目前状态 : SUCCESS—支付成功 REFUND—转入退款 NOTPAY—未支付 CLOSED—已关闭 ACCEPT—已接收,等待扣款 PAY_FAIL--支付失败(其他原因,如银行返回失败)
                    Element tradeStateEl=root.element("trade_state");
                    String tradeState=tradeStateEl.getStringValue();
                    if( tradeState.equals("SUCCESS") ){ //判断支付结果是什么
                        item.put("status", 1);
                    }else{
                        item.put("status", -1);
                    }
                    item.put("orderId",outTradeNo);
                    results.put("result",item);
                    results.put("success",true);
                }else if( resultCode.equals("FAIL") ){
                    Element errCodeEl=root.element("err_code");//错误代码
                    String errCode=errCodeEl.getStringValue();
                    Element errCodeDesEl=root.element("err_code_des");//错误代码描述
                    String errCodeDes=errCodeDesEl.getStringValue();
                    results.put("success",false);
                    results.put("msg",errCode);
                    results.put("message", errCodeDes);
                    rootLogger.warn("queryOrder--------查询结果错误!");
                    rootLogger.warn(errCodeDes);
                }
            }else if(success.equals("FAIL")){
                Element msgEl=root.element("return_msg");//错误原因
                String msg=msgEl.getStringValue();
                results.put("success",false);
                results.put("msg",msg);
                rootLogger.error("queryOrder--------查询失败!");
                rootLogger.error(msg);
            }
            return JSON;
        }
    

    相关文章

      网友评论

          本文标题:微信小程序开发-微信支付之免密支付(自动扣费)二 小程序+jav

          本文链接:https://www.haomeiwen.com/subject/gpzrnftx.html