招商銀行 支付接口開發 部署時出錯分析 java.lang.NoClassDefFoundError: cmb/netpayment/Security Sette

在給招商銀行做接口的時候出現了一個很奇怪的現象,在console下測試代碼正常,可是到tomcat中跑卻報java.lang.NoClassDefFoundError: cmb/netpayment/Security找不到類,我在網上看到也有一樣的問題,但是沒有解答,試了很多方法都不行,最後我把招行的類都反編譯了,解決問題。

我想是不是因爲招行給的jar包版本和我的jdk版本不一致到賬找不到類的呢。

其實招行接口用的核心類就兩個,一個是cmb/netpayment/Security,安全驗證,一個是cmb/netpayment/Settle訂單管理。

以下是我反編譯後的代碼,經測試是可以用的。

需要的朋友可以直接拷貝走,但是招行的cmbJava.zip還是要放到工程裏,因爲會有相關引用。

 

// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) deadcode ansi 

package cmb.netpayment;

import cmb.MerchantCode;
import java.io.*;
import java.net.*;
import java.util.*;

// Referenced classes of package cmb.netpayment:
//            mybuf

public class Settle
{

    public Settle()
    {
        m_bHttps = true;
        m_strRootServer = new String();
        m_strHttpServer = new String();
        m_strPath = "NetPayment/BaseHttp.dll?";
        m_strProxyIP = new String();
        m_bLogin = false;
        m_strClientNo = new String();
        m_strSerialNo = new String();
        m_strCoNo = new String();
        m_strPwd = new String();
        szStatusInfo = new Vector();
        szStatusInfo.addElement("Success");
        szStatusInfo.addElement("Communication failed");
        szStatusInfo.addElement("You have already loged in");
        szStatusInfo.addElement("You have not loged in");
        szStatusInfo.addElement("Login failed");
        szStatusInfo.addElement("Logout failed");
        szStatusInfo.addElement("Inputed parameters are not correct");
        szStatusInfo.addElement("Can't query this order bill");
        szStatusInfo.addElement("Can't get settled orders");
        szStatusInfo.addElement("Can't get the count of unsettled order");
        szStatusInfo.addElement("Can't get unsettled orders");
        szStatusInfo.addElement("Can't settle or cancel this order bill");
        szStatusInfo.addElement("Can't get single order");
        szStatusInfo.addElement("Can't do refund for this order");
        szStatusInfo.addElement("Can't find public key file");
        szStatusInfo.addElement("This message can NOT be trusted");
        szStatusInfo.addElement("Can't get refund data");
        szStatusInfo.addElement("Some unknown error");
    }

    public int CancelOrder(String s, String s1)
    {
        return ProcOrder(s, s1, "", "N");
    }

    private String ContactServer(String s, String s1)
    {
        try
        {
            if(s1.length() == 0)
                s1 = "GET";
            URL url = new URL(s);
            HttpURLConnection httpurlconnection = (HttpURLConnection)url.openConnection();
            httpurlconnection.setRequestMethod(s1);
            BufferedInputStream bufferedinputstream = new BufferedInputStream(httpurlconnection.getInputStream());
            byte abyte0[] = new byte[4096];
            StringBuffer stringbuffer = new StringBuffer();
            for(int i = 0; i != -1;)
            {
                i = bufferedinputstream.read(abyte0, 0, 4096);
                if(i != -1)
                {
                    String s2 = new String(abyte0, 0, i, "GB2312");
                    stringbuffer.append(s2);
                }
            }

            bufferedinputstream.close();
            httpurlconnection.disconnect();
            String s3 = stringbuffer.toString();
            return s3;
        }
        catch(Exception exception)
        {
            exception.printStackTrace();
        }
        return "";
    }

    private boolean DirectLoginC(String s, String s1, String s2, String s3, String s4)
    {
        boolean flag = true;
        String s6 = "";
        String s7;
        if(m_bHttps)
            s7 = "https://";
        else
            s7 = "http://";
        s6 = s6 + "BranchID=" + s + "&CoNo=" + s1 + "&Pwd=" + s2 + "&ClientNo=" + s3 + "&SerialNo=" + s4;
        String s5 = DoPostCmd(s7 + m_strHttpServer + "/" + m_strPath + "DirectLogonC", s6);
        if(s5.length() != 0)
        {
            char c = s5.charAt(0);
            switch(c)
            {
            case 78: // 'N'
                m_strErrMsg = s5.substring(1, s5.length() - 1);
                flag = false;
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                flag = false;
                break;

            case 89: // 'Y'
                break;
            }
            return flag;
        } else
        {
            m_strErrMsg = s5;
            return false;
        }
    }

    private String DoPostCmd(String s, String s1)
    {
        String s2 = null;
        try
        {
            URL url = new URL(s);
            URLConnection urlconnection = url.openConnection();
            urlconnection.setUseCaches(false);
            urlconnection.setDoInput(true);
            urlconnection.setDoOutput(true);
            BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(urlconnection.getOutputStream());
            byte abyte0[] = s1.getBytes("GB2312");
            bufferedoutputstream.write(abyte0);
            bufferedoutputstream.close();
            BufferedInputStream bufferedinputstream = new BufferedInputStream(urlconnection.getInputStream());
            s2 = ReadByteStream(bufferedinputstream);
            bufferedinputstream.close();
        }
        catch(IOException _ex)
        {
            return "";
        }
        catch(Exception _ex)
        {
            return "";
        }
        if(s2 == null)
            return "";
        else
            return s2;
    }

    private boolean GetCookieInfo(Vector vector)
    {
        String s = new String();
        String s1 = new String();
        String s2 = new String();
        String s4 = new String();
        String s5;
        if(m_bHttps)
            s5 = "https://";
        else
            s5 = "http://";
        boolean flag = true;
        s4 = ContactServer(s5 + m_strHttpServer + "/" + m_strPath + "DirectEnter", "");
        if(s4.length() != 0)
        {
            char c = s4.charAt(0);
            switch(c)
            {
            case 89: // 'Y'
                String s6 = s4.substring(2);
                s = GetText(s6, '\n');
                s6 = s6.substring(s6.indexOf("\n") + 1);
                s1 = GetText(s6, '\n');
                break;

            case 78: // 'N'
                s2 = s4.substring(1, s4.length() - 1);
                flag = false;
                break;

            default:
                s2 = "Can't recognize the returned flag";
                flag = false;
                break;
            }
            vector.addElement(s);
            vector.addElement(s1);
            vector.addElement(s2);
            return flag;
        } else
        {
            String s3 = "return null";
            vector.addElement(s);
            vector.addElement(s1);
            vector.addElement(s3);
            return false;
        }
    }

    public String GetLastErr(int i)
    {
        if(i > 17 || i < 0)
            return GetLastErr(17);
        String s = (String)szStatusInfo.elementAt(i);
        if(m_strErrMsg.length() != 0)
            s = s + ": " + m_strErrMsg;
        return s;
    }

    private String GetServerName(String s)
    {
        String s1 = "WWW.CMBCHINA.COM";
        String s2;
        if(m_bHttps)
            s2 = "https://";
        else
            s2 = "http://";
        s = s.toUpperCase();
        if(!s.equals(s1))
        {
            String s3 = s;
            return s3;
        } else
        {
            String s4 = ContactServer(s2 + s1 + "/NetPayment/ServerName.txt", "GET");
            return s4;
        }
    }

    private String GetText(String s, char c)
    {
        int i = s.length();
        String s1 = new String();
        int j = i - 1;
        for(int l = 0; l < i; l++)
        {
            char c1 = s.charAt(l);
            if(c1 == c)
            {
                int k = l;
                break;
            }
            s1 = s1 + c1;
        }

        return s1;
    }

    public int LoginC(String s, String s1, String s2)
    {
        m_strErrMsg = "";
        if(m_bLogin)
            return 2;
        boolean flag = true;
        if(s.length() == 0 || s1.length() == 0 || s2.length() == 0)
            flag = false;
        if(!flag)
            return 6;
        String s3 = GetServerName(m_strRootServer);
        if(s3.length() != 0)
            m_strHttpServer = s3;
        else
            return 1;
        Vector vector = new Vector();
        String s4;
        String s5;
        if(GetCookieInfo(vector))
        {
            s4 = (String)vector.elementAt(0);
            s5 = (String)vector.elementAt(1);
            String s6 = (String)vector.elementAt(2);
            m_strClientNo = (String)vector.elementAt(0);
            m_strSerialNo = (String)vector.elementAt(1);
        } else
        {
            m_strErrMsg = (String)vector.elementAt(2);
            return 1;
        }
        if(!DirectLoginC(s, s1, s2, s4, s5))
        {
            return 4;
        } else
        {
            m_strBranchID = s;
            m_strCoNo = s1;
            m_strPwd = s2;
            m_bLogin = true;
            return 0;
        }
    }

    public int Logout()
    {
        m_strErrMsg = "";
        if(!m_bLogin)
            return 3;
        boolean flag = true;
        byte byte0 = 0;
        String s1 = "";
        String s2;
        if(m_bHttps)
            s2 = "https://";
        else
            s2 = "http://";
        s1 = s1 + "ClientNo=" + m_strClientNo + "&SerialNo=" + m_strSerialNo;
        String s = DoPostCmd(s2 + m_strHttpServer + "/" + m_strPath + "DirectExit", s1);
        if(s.length() != 0)
        {
            char c = s.charAt(0);
            switch(c)
            {
            case 89: // 'Y'
                m_strCoNo = "";
                m_strPwd = "";
                m_strClientNo = "";
                m_strSerialNo = "";
                m_bLogin = false;
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                byte0 = 5;
                break;
            }
        } else
        {
            m_strErrMsg = s;
            byte0 = 5;
        }
        return byte0;
    }

    private int PageQuery(String s, String s1, int i, int j, String s2, StringBuffer stringbuffer)
    {
        if(!m_bLogin)
            return 3;
        boolean flag = true;
        int k = 0;
        String s4 = "";
        String s5;
        if(m_bHttps)
            s5 = "https://";
        else
            s5 = "http://";
        s4 = "ClientNo=" + m_strClientNo + "&SerialNo=" + m_strSerialNo + "&pos=" + m_strLastPos + "&count=" + i;
        String s3 = DoPostCmd(s5 + m_strHttpServer + "/" + m_strPath + s, s4 + s1);
        if(s3.length() != 0)
        {
            char c = s3.charAt(0);
            switch(c)
            {
            case 89: // 'Y'
                int l = s3.indexOf('\n', 2);
                m_strLastPos = s3.substring(2, l);
                int i1 = s3.indexOf('\n', l + 1);
                m_bIsLastPage = s3.charAt(i1 - 1) != 'Y';
                stringbuffer.append(s3.substring(i1 + 1));
                break;

            case 78: // 'N'
                m_strErrMsg = s3.substring(1, s3.length() - 1);
                k = j;
                break;

            case 82: // 'R'
                m_bLogin = false;
                if(LoginC(m_strBranchID, m_strCoNo, m_strPwd) != 0)
                {
                    m_strErrMsg = s2;
                    k = 4;
                } else
                {
                    k = PageQuery(s, s1, i, j, s2, stringbuffer);
                }
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                k = j;
                break;
            }
        } else
        {
            m_strErrMsg = "Server returns nothing";
            k = j;
        }
        return k;
    }

    public void PageReset()
    {
        m_bIsLastPage = false;
        m_strLastPos = "";
    }

    private int ProcOrder(String s, String s1, String s2, String s3)
    {
        m_strErrMsg = "";
        if(!m_bLogin)
            return 3;
        String s4 = m_strCoNo;
        boolean flag = true;
        if(s4 == "" || s == "" || s == "")
            flag = false;
        if(!flag)
            return 6;
        String s5 = "";
        String s6;
        if(m_bHttps)
            s6 = "https://";
        else
            s6 = "http://";
        boolean flag1 = true;
        int i = 0;
        String s7 = "";
        if(s3 == "Y" || s3 == "N")
        {
            s7 = s7 + "CoNo=" + s4 + "&BillNo=" + s + "&RefNo=" + s1 + "&Validate=" + s3 + "&ClientNo=" + m_strClientNo + "&SerialNo=" + m_strSerialNo;
            s5 = DoPostCmd(s6 + m_strHttpServer + "/" + m_strPath + "DirectSettleOrder", s7);
        }
        if(s3 == "P")
        {
            if(s2 == "")
                return 6;
            if((double)Float.valueOf(s2).floatValue() == 0.0D)
                return 6;
            s7 = s7 + "CoNo=" + s4 + "&BillNo=" + s + "&RefNo=" + s1 + "&PartAmount=" + s2 + "&ClientNo=" + m_strClientNo + "&SerialNo=" + m_strSerialNo;
            s5 = DoPostCmd(s6 + m_strHttpServer + "/" + m_strPath + "DirectSettlePartOrder", s7);
        }
        if(s5.length() != 0)
        {
            char c = s5.charAt(0);
            switch(c)
            {
            case 78: // 'N'
                m_strErrMsg = s5.substring(1, s5.length() - 1);
                i = 11;
                break;

            case 82: // 'R'
                m_bLogin = false;
                if(LoginC(m_strBranchID, m_strCoNo, m_strPwd) != 0)
                {
                    m_strErrMsg = "While Settle or cancel Order";
                    i = 4;
                } else
                {
                    i = ProcOrder(s, s1, s2, s3);
                }
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                i = 11;
                break;

            case 89: // 'Y'
                break;
            }
        } else
        {
            m_strErrMsg = s5;
            i = 11;
        }
        return i;
    }

    public int QueryRefundByDate(String s, String s1, StringBuffer stringbuffer)
    {
        return concatPages("DirectQueryRefundByDate", "&BeginDate=" + s + "&EndDate=" + s1, 16, "While Query Refund", stringbuffer);
    }

    public int QueryRefundByDatePage(String s, String s1, int i, StringBuffer stringbuffer)
    {
        if(s.length() != 8 || s1.length() != 8)
        {
            m_strErrMsg = "Invalid Date format";
            return 16;
        } else
        {
            return PageQuery("DirectQueryRefundByDate", "&BeginDate=" + s + "&EndDate=" + s1, i, 16, "While QueryRefundByDate", stringbuffer);
        }
    }

    public int QuerySettledOrder(String s, String s1, StringBuffer stringbuffer)
    {
        return QuerySettledOrder0(s, s1, 0, stringbuffer);
    }

    private int QuerySettledOrder0(String s, String s1, int i, StringBuffer stringbuffer)
    {
        return concatPages("DirectQuerySettledOrderByPage", "&BeginDate=" + s + "&EndDate=" + s1 + "&Type=" + i, 8, "While QuerySettledOrder", stringbuffer);
    }

    public int QuerySettledOrder0(String s, String s1, StringBuffer stringbuffer)
    {
        if(!m_bLogin)
            return 3;
        boolean flag = true;
        int i = 0;
        String s3 = "";
        String s4;
        if(m_bHttps)
            s4 = "https://";
        else
            s4 = "http://";
        s3 = s3 + "CoNo=" + m_strCoNo + "&BeginData=" + s + "&EndDate=" + s1 + "&ClientNo=" + m_strClientNo + "&SerialNo=" + m_strSerialNo;
        String s2 = DoPostCmd(s4 + m_strHttpServer + "/" + m_strPath + "DirectQuerySettledOrder", s3);
        if(s2.length() != 0)
        {
            char c = s2.charAt(0);
            switch(c)
            {
            case 89: // 'Y'
                String s5 = s2.substring(2);
                String s6 = GetText(s5, '\n');
                s5 = s5.substring(s5.indexOf("\n") + 1);
                s6 = GetText(s5, '\0');
                int j = s6.length();
                stringbuffer.append(s6);
                break;

            case 78: // 'N'
                m_strErrMsg = s2.substring(1, s2.length() - 1);
                i = 8;
                break;

            case 82: // 'R'
                m_bLogin = false;
                if(LoginC(m_strBranchID, m_strCoNo, m_strPwd) != 0)
                {
                    m_strErrMsg = "While QuerySettledOrder";
                    i = 4;
                } else
                {
                    i = QuerySettledOrder(s, s1, stringbuffer);
                }
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                i = 8;
                break;
            }
        } else
        {
            m_strErrMsg = s2;
            i = 8;
        }
        return i;
    }

    public int QuerySettledOrderByPage(String s, String s1, int i, StringBuffer stringbuffer)
    {
        return QuerySettledOrderByPage0(s, s1, i, 0, stringbuffer);
    }

    private int QuerySettledOrderByPage0(String s, String s1, int i, int j, StringBuffer stringbuffer)
    {
        return PageQuery("DirectQuerySettledOrderByPage", "&BeginDate=" + s + "&EndDate=" + s1 + "&Type=" + j, i, 8, "While QuerySettledOrder", stringbuffer);
    }

    public int QuerySettledOrderBySettleDate(String s, String s1, StringBuffer stringbuffer)
    {
        return QuerySettledOrder0(s, s1, 1, stringbuffer);
    }

    public int QuerySettledOrderBySettleDateByPage(String s, String s1, int i, StringBuffer stringbuffer)
    {
        return QuerySettledOrderByPage0(s, s1, i, 1, stringbuffer);
    }

    public int QuerySingleOrder(String s, String s1, StringBuffer stringbuffer)
    {
        return QuerySingleOrder0(m_strCoNo, s, s1, stringbuffer);
    }

    private int QuerySingleOrder0(String s, String s1, String s2, StringBuffer stringbuffer)
    {
        if(!m_bLogin)
            return 3;
        boolean flag = true;
        int i = 0;
        String s4 = "";
        String s5;
        if(m_bHttps)
            s5 = "https://";
        else
            s5 = "http://";
        s4 = s4 + "CoNo=" + s + "&Date=" + s1 + "&BillNo=" + s2 + "&ClientNo=" + m_strClientNo + "&SerialNo=" + m_strSerialNo;
        String s3 = DoPostCmd(s5 + m_strHttpServer + "/" + m_strPath + "DirectQuerySingleOrder", s4);
        if(s3.length() != 0)
        {
            char c = s3.charAt(0);
            switch(c)
            {
            case 89: // 'Y'
                String s6 = s3.substring(2);
                String s7 = GetText(s6, '\0');
                int j = s7.length();
                stringbuffer.append(s7);
                break;

            case 82: // 'R'
                m_bLogin = false;
                if(LoginC(m_strBranchID, m_strCoNo, m_strPwd) != 0)
                {
                    m_strErrMsg = "While Do Order Refund ";
                    i = 4;
                } else
                {
                    i = QuerySingleOrder(s1, s2, stringbuffer);
                }
                break;

            case 78: // 'N'
                m_strErrMsg = s3.substring(1, s3.length() - 1);
                i = 12;
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                i = 12;
                break;
            }
        } else
        {
            m_strErrMsg = s3;
            i = 12;
        }
        return i;
    }

    public int QuerySingleOrderSpecial(String s, String s1, StringBuffer stringbuffer)
    {
        return QuerySingleOrder0("Full", s, s1, stringbuffer);
    }

    public int QueryTransact(String s, StringBuffer stringbuffer)
    {
        return QuerySettledOrder0(s, s, 1, stringbuffer);
    }

    public int QueryTransactByPage(String s, int i, StringBuffer stringbuffer)
    {
        return QuerySettledOrderByPage0(s, s, i, 1, stringbuffer);
    }

    public int QueryUnsettledOrder(StringBuffer stringbuffer)
    {
        return concatPages("DirectQueryUnsettledOrderByPage", "", 10, "While Query Unsettled Order", stringbuffer);
    }

    public int QueryUnsettledOrder0(StringBuffer stringbuffer)
    {
        m_strErrMsg = "";
        if(!m_bLogin)
            return 3;
        boolean flag = true;
        int i = 0;
        String s1 = "";
        String s2;
        if(m_bHttps)
            s2 = "https://";
        else
            s2 = "http://";
        s1 = s1 + "CoNo=" + m_strCoNo + "&ClientNo=" + m_strClientNo + "&SerialNo=" + m_strSerialNo;
        String s = DoPostCmd(s2 + m_strHttpServer + "/" + m_strPath + "DirectQueryUnsettledOrder", s1);
        if(s.length() != 0)
        {
            char c = s.charAt(0);
            switch(c)
            {
            case 89: // 'Y'
                String s3 = s.substring(2);
                s3 = s3.substring(s3.indexOf("\n") + 1);
                String s4 = GetText(s3, '\0');
                int j = s4.length();
                stringbuffer.append(s4);
                break;

            case 78: // 'N'
                m_strErrMsg = s.substring(1, s.length() - 1);
                i = 10;
                break;

            case 82: // 'R'
                m_bLogin = false;
                if(LoginC(m_strBranchID, m_strCoNo, m_strPwd) != 0)
                {
                    m_strErrMsg = "While QueryUnsettledOrder";
                    i = 4;
                } else
                {
                    i = QueryUnsettledOrder(stringbuffer);
                }
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                i = 10;
                break;
            }
        } else
        {
            m_strErrMsg = s;
            i = 10;
        }
        return i;
    }

    public int QueryUnsettledOrderByPage(int i, StringBuffer stringbuffer)
    {
        return PageQuery("DirectQueryUnsettledOrderByPage", "", i, 10, "While QueryUnsettledOrder", stringbuffer);
    }

    private static String ReadByteStream(BufferedInputStream bufferedinputstream)
        throws IOException
    {
        LinkedList linkedlist = new LinkedList();
        int i = 0;
        do
        {
            byte abyte0[] = new byte[128];
            int j = bufferedinputstream.read(abyte0);
            if(j == -1)
                break;
            i += j;
            linkedlist.add(new mybuf(abyte0, j));
        } while(true);
        byte abyte1[] = new byte[i];
        int l = 0;
        for(ListIterator listiterator = linkedlist.listIterator(); listiterator.hasNext();)
        {
            mybuf mybuf1 = (mybuf)listiterator.next();
            for(int k = 0; k < mybuf1.size;)
            {
                abyte1[l] = mybuf1.buf[k];
                k++;
                l++;
            }

        }

        return new String(abyte1, "GB2312");
    }

    public int RefundOrder(String s, String s1, String s2, String s3, String s4)
    {
        if(!m_bLogin)
            return 3;
        boolean flag = true;
        int i = 0;
        String s6;
        if(m_bHttps)
            s6 = "https://";
        else
            s6 = "http://";
        String s7 = "";
        try
        {
            StringBuffer stringbuffer = new StringBuffer();
            stringbuffer.append(m_strSerialNo);
            stringbuffer.append(s4);
            stringbuffer.append(m_strClientNo);
            stringbuffer.append(m_strBranchID);
            stringbuffer.append(m_strCoNo);
            stringbuffer.append(s);
            stringbuffer.append(s1);
            stringbuffer.append(s2);
            stringbuffer.append(s3);
            s7 = MerchantCode.hashString(stringbuffer.toString(), "SHA1");
        }
        catch(Exception exception)
        {
            m_strErrMsg = "Do Digest error:" + exception.getMessage();
            i = 13;
            return i;
        }
        StringBuffer stringbuffer1 = new StringBuffer();
        stringbuffer1.append("Date=");
        stringbuffer1.append(s);
        stringbuffer1.append("&BillNo=");
        stringbuffer1.append(s1);
        stringbuffer1.append("&Amount=");
        stringbuffer1.append(s2);
        stringbuffer1.append("&Desc=");
        stringbuffer1.append(s3);
        stringbuffer1.append("&Vcode=");
        stringbuffer1.append(s7);
        stringbuffer1.append("&ClientNo=");
        stringbuffer1.append(m_strClientNo);
        stringbuffer1.append("&SerialNo=");
        stringbuffer1.append(m_strSerialNo);
        String s5 = DoPostCmd(s6 + m_strHttpServer + "/" + m_strPath + "DirectRefund", stringbuffer1.toString());
        if(s5.length() != 0)
        {
            char c = s5.charAt(0);
            switch(c)
            {
            case 82: // 'R'
                m_bLogin = false;
                if(LoginC(m_strBranchID, m_strCoNo, m_strPwd) != 0)
                {
                    m_strErrMsg = "While Do Order Refund ";
                    i = 4;
                } else
                {
                    i = RefundOrder(s, s1, s2, s3, s4);
                }
                break;

            case 78: // 'N'
                m_strErrMsg = s5.substring(1, s5.length() - 1);
                i = 13;
                break;

            default:
                m_strErrMsg = "Can't recognize the returned flag";
                i = 13;
                break;

            case 89: // 'Y'
                break;
            }
        } else
        {
            m_strErrMsg = s5;
            i = 13;
        }
        return i;
    }

    public int SetOptions(String s)
    {
        String s1 = "";
        String s2 = "";
        m_strErrMsg = "";
        boolean flag = true;
        if(s.length() == 0)
            flag = false;
        if(!flag)
            return 6;
        m_strRootServer = s;
        if(s1.length() != 0)
            m_strPort = s1;
        else
        if(m_bHttps)
            m_strPort = "443";
        else
            m_strPort = "80";
        if(s2.length() != 0)
            m_strProxyIP = s2;
        return 0;
    }

    public void SetProxy(String s, String s1)
    {
        java.util.Properties properties = System.getProperties();
        properties.put("https.proxyHost", s);
        properties.put("https.proxyPort", s1);
    }

    public int SettleOrder(String s, String s1)
    {
        return ProcOrder(s, s1, "", "Y");
    }

    public int SettlePartOrder(String s, String s1, String s2)
    {
        return ProcOrder(s, s1, s2, "P");
    }

    private static String URLConnect(String s)
        throws Exception
    {
        URL url = new URL(s);
        URLConnection urlconnection = url.openConnection();
        urlconnection.setUseCaches(false);
        urlconnection.setDoInput(true);
        BufferedInputStream bufferedinputstream = new BufferedInputStream(urlconnection.getInputStream());
        String s1 = ReadByteStream(bufferedinputstream);
        bufferedinputstream.close();
        return s1;
    }

    private int concatPages(String s, String s1, int i, String s2, StringBuffer stringbuffer)
    {
        PageReset();
        int j;
        do
            j = PageQuery(s, s1, 100, i, s2, stringbuffer);
        while(j == 0 && !m_bIsLastPage);
        return j;
    }

    public void testit()
    {
        m_bHttps = false;
    }

    private static final int INET_SUCCESS = 0;
    private static final int INET_COMMUNICATION_FAILURE = 1;
    private static final int INET_ALREADY_LOGIN = 2;
    private static final int INET_NOT_LOGIN = 3;
    private static final int INET_LOGIN_FAILURE = 4;
    private static final int INET_LOGOUT_FAILURE = 5;
    private static final int INET_INPUTPARA_ERROR = 6;
    private static final int INET_CANNOT_QUERYONEORDER = 7;
    private static final int INET_CANNOT_QUERYSETTLEDORDER = 8;
    private static final int INET_CANNOT_QUERYCOUNT = 9;
    private static final int INET_CANNOT_QUERYUNSETTLEDORDER = 10;
    private static final int INET_CANNOT_SETTLEORDER = 11;
    private static final int INET_CANNOT_QUERYSINGLEORDER = 12;
    private static final int INET_CANNOT_REFUNDORDER = 13;
    private static final int INET_CANNOT_FIND_PUBLICKEYFILE = 14;
    private static final int INET_MESSAGE_UNTRUTHFUL = 15;
    private static final int INET_CANNOT_QUERYREFUND = 16;
    private static final int INET_UNKOWN_FAILURE = 17;
    private Vector szStatusInfo;
    private boolean m_bHttps;
    private String m_strRootServer;
    private String m_strHttpServer;
    private String m_strPort;
    private String m_strPath;
    private boolean m_bLogin;
    private String m_strClientNo;
    private String m_strSerialNo;
    private String m_strBranchID;
    private String m_strCoNo;
    private String m_strPwd;
    private String m_strProxyIP;
    private char m_szStatusBuf[];
    private String m_strErrMsg;
    public boolean m_bIsLastPage;
    private String m_strLastPos;
}


 

// Decompiled by DJ v2.9.9.61 Copyright 2000 Atanas Neshkov  Date: 2012/11/22 1:08:45
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) deadcode ansi 

package cmb.netpayment;;

import java.io.*;
import java.security.*;

// Referenced classes of package cmb.netpayment:
//            RSAPubKey

public class Security
{

    public Security(String s)
        throws Exception
    {
        try
        {
            File file = new File(s);
            byte abyte0[] = new byte[(int)file.length()];
            FileInputStream fileinputstream = new FileInputStream(s);
            fileinputstream.read(abyte0);
            fileinputstream.close();
            SetPublicKey(abyte0);
        }
        catch(Throwable throwable)
        {
            throw new Exception("Load publickey files failed because: " + throwable.getMessage());
        }
    }

    public Security(byte abyte0[])
        throws Exception
    {
        try
        {
            SetPublicKey(abyte0);
        }
        catch(Throwable throwable)
        {
            throw new Exception("Load publickey files failed because: " + throwable.getMessage());
        }
    }

    public boolean CheckSign(byte abyte0[], byte abyte1[])
    {
        boolean flag = false;
        try
        {
            Signature signature = Signature.getInstance("SHA1withRSA");
            signature.initVerify(m_RSAPubKey);
            signature.update(abyte0);
            flag = signature.verify(abyte1);
        }
        catch(NoSuchAlgorithmException nosuchalgorithmexception)
        {
            System.out.println("CheckSign: invalid Algorithm." + nosuchalgorithmexception.toString());
        }
        catch(InvalidKeyException invalidkeyexception)
        {
            System.out.println("CheckSign: invalid public key." + invalidkeyexception.toString());
        }
        catch(SignatureException signatureexception)
        {
            System.out.println("CheckSign: invalid sinature." + signatureexception.toString());
        }
        catch(Exception exception)
        {
            System.out.println("CheckSign: " + exception.toString());
        }
        return flag;
    }

    private void SetPublicKey(byte abyte0[])
        throws Exception
    {
        m_RSAPubKey = new RSAPubKey(abyte0, "NETPAYMENT");
    }

    public boolean checkInfoFromBank(String s)
    {
        byte abyte0[] = null;
        try
        {
            abyte0 = s.getBytes("GB2312");
        }
        catch(Exception _ex)
        {
            return false;
        }
        return checkInfoFromBank(abyte0);
    }

    public boolean checkInfoFromBank(byte abyte0[])
    {
        byte byte0 = 38;
        byte abyte1[] = null;
        byte abyte2[] = null;
        int i = abyte0.length;
        int l = -1;
        for(int j = i - 1; j >= 0; j--)
        {
            byte byte1 = abyte0[j];
            if(byte1 != byte0)
                continue;
            l = j;
            break;
        }

        if(l == -1)
            return false;
        String s = "&signature=";
        int i1 = s.length();
        abyte1 = new byte[l];
        abyte2 = new byte[i - l - i1];
        System.arraycopy(abyte0, 0, abyte1, 0, l);
        System.arraycopy(abyte0, l + i1, abyte2, 0, i - l - i1);
        int j1 = abyte2.length;
        byte0 = 124;
        l = 0;
        byte abyte3[] = new byte[1024];
        String s1 = "";
        for(int k = 0; k < j1; k++)
        {
            byte byte2 = abyte2[k];
            if(byte2 == byte0)
            {
                int k1 = Integer.parseInt(s1);
                abyte3[l] = (byte)k1;
                l++;
                s1 = "";
            } else
            {
                char c = (char)byte2;
                s1 = s1 + c;
            }
        }

        byte abyte4[] = new byte[l];
        System.arraycopy(abyte3, 0, abyte4, 0, l);
        return CheckSign(abyte1, abyte4);
    }

    private RSAPubKey m_RSAPubKey;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章