联机获取PIN时对传入的卡号进行偏移处理

来源:互联网 发布:魏则西事件始末 知乎 编辑:程序博客网 时间:2024/05/19 20:41

     进入到只能POS行业已经接近半年,会逐渐写一些在工作中遇到的问题,希望有所帮助。

     在支付阶段,除电子现金,以及目前小额的免签免密,通常会调用到密码键盘。获取联机PIN时,会将卡号进行传入,这时通常会将卡号进行偏移处理。

     一般获取的卡号为16位,并小于19位。进行卡号偏移处理时,取从又数两位开始,向左取12位。

    进行偏移的代码如下

    private byte[] getPan(String cardNo){
        byte[] bPanArray = new byte[16];
        
        if(cardNo == null) return null;
   
        int iCardNoLen = cardNo.length();
        if(iCardNoLen < 13 || iCardNoLen > 19) return null;
        
        byte[] bCardNoArray = cardNo.getBytes();
        
        Arrays.fill(bPanArray, (byte)0x30);
        System.arraycopy(bCardNoArray, iCardNoLen - 13, bPanArray, 4, 12);
        
        
        return bPanArray;
    }

   使用getByte获取BCD码,不足的补0x30(即0)

0 0
原创粉丝点击