Previous topicNext topic
 XXXX Help
Help > Modules > pboc module >

Function

       get tlv data in emv     

    Parameter

paraName

type

description

tag

int

tag

     return value

    

return value

description

void

 

notice: The method is called to get the tlv data in or after the emv process

  @Override
  public void onTransactionResult(int result, Intent data) throws RemoteException {
   Log.d(TAG, "onTransactionResult");
   sb.append("onTransactionResult --- " + "result = " + result + "\n");
   if (result == PBOCTransactionResult.QPBOC_ARQC) {
    // data is got and pinpad is called here for non-contact card
    OutputQPBOCResult rf_data = new OutputQPBOCResult(data);
    //get data
    // TLV data of  55 field
    String field55String = rf_data.get55Field();
    // card number
    String pan = rf_data.getPAN();
    // half-sheilded card number
    String maskedpan = rf_data.getMaskedPan();
    // equivalent data of magnetic track 2
    // -two magnetic track equivalent data...
    String trackString = rf_data.getTrack();
    Log.d(TAG, getStr(R.string.two_track_data) + trackString);
    byte[] bcdTrack = BCDHelper.StrToBCD(trackString, trackString.length());
    Log.d(TAG, getStr(R.string.two_track_data) + " bcd: = " + BCDHelper.hex2DebugHexString(bcdTrack, bcdTrack.length));
    // expired data
    // The period of validity
    String expiredate = rf_data.getExpiredDate();
    sb.append(getStr(R.string.quick_pass_call_password_keyboard) + "\n");
    handler2.sendEmptyMessage(PIN_DIALOG_SHOW);
   } else if (result == PBOCTransactionResult.APPROVED) {
    sb.append(getStr(R.string.ic_card_transaction_success) + "\n");
    
    try {
     sb.append("电子现金余额:"+ServiceManager.getInstence().getPboc().readEcBalance() + "\n");
     timeTools.stop();
     sb.append(getStr(R.string.pboc_time_consuming) + timeTools.getProcessTime() / 1000 + getStr(R.string.s) + timeTools.getProcessTime() % 1000 + getStr(R.string.ms) + "\n");
     Log.d(TAG, getStr(R.string.pboc_time_consuming) + timeTools.getProcessTime() / 1000 + getStr(R.string.s) + timeTools.getProcessTime() % 1000 + getStr(R.string.ms));
     showText(sb);
     byte[] data1 = ServiceManager.getInstence().getPboc().getEmvTlvData(0x9F5D);
     if (data1!=null) {
      Log.d(TAG, "data1 = " + BCDHelper.hex2DebugHexString(data1, data1.length));
     }

     
     byte[] data2 = ServiceManager.getInstence().getPboc().getEmvTlvData(0x9F79);
     if (data2!=null) {
      Log.d(TAG, "data2 = " + BCDHelper.hex2DebugHexString(data2, data2.length)); 
     }

     
     
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    // IC card transaction success
   } else if (result == PBOCTransactionResult.TERMINATED) 
    // IC card transaction is  refused, if online is successfull, reverse is neened.
    // mechanism
    sb.append(getStr(R.string.ic_refuse_trade) + "\n");
   }
   showText(sb);
  }