Compare commits

..

No commits in common. "83d7f4456173e51eb4e5c8f5245b9698d2305ae0" and "4ce7a9355c6472a57f5bff3b22693e12c1ed8183" have entirely different histories.

38 changed files with 236 additions and 301 deletions

File diff suppressed because one or more lines are too long

View File

@ -4,14 +4,6 @@
<selectionStates> <selectionStates>
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2025-12-11T11:35:06.715134Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=0123456789ABCDEF" />
</handle>
</Target>
</DropdownSelection>
<DialogSelection />
</SelectionState> </SelectionState>
</selectionStates> </selectionStates>
</component> </component>

View File

@ -853,16 +853,11 @@ public class MainFragment extends DataBindingFragment {
} }
public void onClickQR(){ public void onClickQR(){
// navigate to new QR Pay fragment
if(TMSUtil.getInstance().checkQRParams().isStatus() == ValidityStatus.FAILURE) {
showDeclineDialog(getResourceString(R.string.txt_please_download_config)+"\n"+TMSUtil.getInstance().checkQRParams().getMessage());
} else {
routeId = R.id.action_nav_main_to_qrFragment; routeId = R.id.action_nav_main_to_qrFragment;
safeNavigateToRouteId(); safeNavigateToRouteId();
} }
}
public void onClickQRPay() { public void onClickQRPay() {
String mmqrIp = SystemParamsOperation.getInstance().getSecHostIpAddress(); String mmqrIp = SystemParamsOperation.getInstance().getSecHostIpAddress();

View File

@ -58,6 +58,7 @@ public class SettingsFragment extends DataBindingFragment {
private int count = 0; private int count = 0;
// Data binding will handle view access automatically
private FragmentSettingsModernBinding binding; private FragmentSettingsModernBinding binding;
@Inject @Inject
@ -65,12 +66,14 @@ public class SettingsFragment extends DataBindingFragment {
@Override @Override
protected void initViewModel() { protected void initViewModel() {
// Initialize ViewModels in initViewModel as per pattern
settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class); settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class);
mainViewModel = getFragmentScopeViewModel(MainViewModel.class); mainViewModel = getFragmentScopeViewModel(MainViewModel.class);
} }
@Override @Override
protected DataBindingConfig getDataBindingConfig() { protected DataBindingConfig getDataBindingConfig() {
// This is the key method that links the XML and fragment properly
return new DataBindingConfig(R.layout.fragment_settings_modern, 0, null) return new DataBindingConfig(R.layout.fragment_settings_modern, 0, null)
.addBindingParam(BR.click, new ClickEvent()); .addBindingParam(BR.click, new ClickEvent());
} }
@ -94,14 +97,19 @@ public class SettingsFragment extends DataBindingFragment {
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
try { try {
LogUtil.d(TAG, "onViewCreated called");
SystemParamsOperation.getInstance().setDemoStatus(false); SystemParamsOperation.getInstance().setDemoStatus(false);
// Get the binding from the base class - this is automatically created
binding = (FragmentSettingsModernBinding) mBinding; binding = (FragmentSettingsModernBinding) mBinding;
updateDemoSettings(); updateDemoSettings();
LogUtil.d(TAG, "Updating settings...");
updateSettings(); updateSettings();
LogUtil.d(TAG, "Settings fragment initialized successfully");
} catch (Exception e) { } catch (Exception e) {
LogUtil.e(TAG, "Error initializing fragment: " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
} }
@ -110,7 +118,12 @@ public class SettingsFragment extends DataBindingFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
try {
setToolBarTitleWithBackIcon("Settings"); setToolBarTitleWithBackIcon("Settings");
LogUtil.d(TAG, "Settings screen resumed");
} catch (Exception e) {
LogUtil.e(TAG, "Error in onResume: " + e.getMessage());
}
} }
@ -291,6 +304,7 @@ public class SettingsFragment extends DataBindingFragment {
public void onUpdateConfigClick() { public void onUpdateConfigClick() {
try { try {
LogUtil.d(TAG, "Update config clicked");
settlementViewModel.getSettlementPOS().observe(getViewLifecycleOwner(), payDetails -> { settlementViewModel.getSettlementPOS().observe(getViewLifecycleOwner(), payDetails -> {
try { try {
if (payDetails != null && payDetails.size() > 0) { if (payDetails != null && payDetails.size() > 0) {

View File

@ -84,12 +84,14 @@ public class SignatureFragment extends DataBindingFragment {
@Override @Override
public void onSigned() { public void onSigned() {
LogUtil.d(TAG,"ON Signed !");
isSigned = true; isSigned = true;
} }
@Override @Override
public void onClear() { public void onClear() {
isSigned = false; isSigned = false;
LogUtil.d(TAG,"ON Clear !");
} }
}); });
} }

View File

@ -121,7 +121,7 @@ public class TransactionResultFragment extends DataBindingFragment implements Da
} }
setToolBarTitleWithoutBackIcon(getResourceString(R.string.txt_title_trans_result)); setToolBarTitleWithoutBackIcon(getResourceString(R.string.txt_title_trans_result));
} else if(qrStatus == 1 || qrStatus == -1 || qrStatus == 2 || qrStatus == 3 ) { } else if(qrStatus == 1 || qrStatus == -1 || qrStatus == 2 || qrStatus == 3 ) {
/* QR STATUS */ /* WAVE QR STATUS */
setToolBarTitleWithoutBackIcon(getResourceString(R.string.txt_title_qr_pay)); setToolBarTitleWithoutBackIcon(getResourceString(R.string.txt_title_qr_pay));
} else { } else {
setToolBarTitleWithoutBackIcon(getResourceString(R.string.txt_title_error)); setToolBarTitleWithoutBackIcon(getResourceString(R.string.txt_title_error));

View File

@ -71,7 +71,7 @@ public class TMSProcessViewModel extends ViewModel {
} }
public void loadEmvParameters() { public void loadEmvParameters() {
// emvParamOperation.loadAidRids(); emvParamOperation.loadAidRids();
emvParamOperation.loadEmvTerminalParam(); emvParamOperation.loadEmvTerminalParam();
} }

View File

@ -344,8 +344,6 @@ public class QRTransactionFragment extends DataBindingFragment implements DataBi
EReceiptRequest request = EReceiptUtil.getInstance().generateQRReceipt(payDetail, TransResultStatus.FAIL); EReceiptRequest request = EReceiptUtil.getInstance().generateQRReceipt(payDetail, TransResultStatus.FAIL);
sharedViewModel.pushReceipt(request); sharedViewModel.pushReceipt(request);
sharedViewModel.insertPayDetail(payDetail);
sharedViewModel.payDetail.postValue(payDetail); sharedViewModel.payDetail.postValue(payDetail);
safeNavigateToRouteId(); safeNavigateToRouteId();
@ -355,20 +353,14 @@ public class QRTransactionFragment extends DataBindingFragment implements DataBi
LogUtil.d(TAG, "On Exception::"); LogUtil.d(TAG, "On Exception::");
// sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, false, "QR Failed! :" + e.getMessage())); // sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, false, "QR Failed! :" + e.getMessage()));
e.printStackTrace(); e.printStackTrace();
EReceiptRequest request = EReceiptUtil.getInstance().generateQRReceipt(payDetail, TransResultStatus.TIME_OUT);
sharedViewModel.pushReceipt(request);
if (count == totalCount) { if (count == totalCount) {
if(payDetail.getQrTransStatus() != -1) { if(payDetail.getQrTransStatus() != -1) {
payDetail.setQrTransStatus(2); payDetail.setQrTransStatus(2);
} }
EReceiptRequest request = EReceiptUtil.getInstance().generateQRReceipt(payDetail, TransResultStatus.TIME_OUT);
sharedViewModel.pushReceipt(request);
sharedViewModel.insertPayDetail(payDetail);
sharedViewModel.payDetail.postValue(payDetail); sharedViewModel.payDetail.postValue(payDetail);
safeNavigateToRouteId(); safeNavigateToRouteId();
} }

View File

@ -299,10 +299,10 @@ public class ReprintAnyTransactionFragment extends DataBindingFragment {
// //
// LogUtil.d(TAG,"----------------------------------------------------------"); // LogUtil.d(TAG,"----------------------------------------------------------");
if(sharedViewModel.transactionsType.getValue() != null && sharedViewModel.transactionsType.getValue() == TransactionsType.MMQR_HISTORY) { if(sharedViewModel.transactionsType.getValue() != null && sharedViewModel.transactionsType.getValue() == TransactionsType.MMQR_INQUIRY_STATUS) {
// Wave Inquiry Status:: // Wave Inquiry Status::
// April 2, 2024 QR Inquiry status check is for unsuccessful transactions. // April 2, 2024 QR Inquiry status check is for unsuccessful transactions.
if(yesterday.compareTo(transDate) <= 0 && pay.getTransactionType() == TransactionsType.MMQR.value ) { if(yesterday.compareTo(transDate) <= 0 && pay.getTransactionType() == TransactionsType.MMQR.value && pay.getQrTransStatus() != 1) {
filteredLists.add(pay); filteredLists.add(pay);
} }

View File

@ -130,7 +130,6 @@ public class QRPayFragment extends DataBindingFragment {
private void onClickHistory(){ private void onClickHistory(){
sharedViewModel.hostType.setValue(HostType.QR); sharedViewModel.hostType.setValue(HostType.QR);
sharedViewModel.setTransactionsType(TransactionsType.MMQR_HISTORY);
routeId = R.id.action_qrFragment_to_qrHistory; routeId = R.id.action_qrFragment_to_qrHistory;
safeNavigateToRouteId(); safeNavigateToRouteId();
} }

View File

@ -282,7 +282,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
delayFunctionCall(()->{ delayFunctionCall(()->{
routeId = R.id.action_QRSettlementTransactionFragment_to_transactionResultFragment; routeId = R.id.action_QRSettlementTransactionFragment_to_transactionResultFragment;
safeNavigateToRouteId(); safeNavigateToRouteId();
},1000); },500);
} }
@ -322,7 +322,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
if(sharedViewModel.getTransMenu().getValue() == TransMenu.SETTLEMENT) { if(sharedViewModel.getTransMenu().getValue() == TransMenu.SETTLEMENT) {
if (!qrTransactionsList.isEmpty()) { if (!qrTransactionsList.isEmpty()) {
for (PayDetail payDetail : qrTransactionsList) { for (PayDetail payDetail : qrTransactionsList) {
// settlementViewModel.deletePayDetail(payDetail); settlementViewModel.deletePayDetail(payDetail);
} }
updateData(); updateData();

View File

@ -45,7 +45,7 @@ public class EReceiptUtil {
serialNum = TMSUtil.getInstance().getSerialNumber(); serialNum = TMSUtil.getInstance().getSerialNumber();
packageName = BuildConfig.APPLICATION_ID; packageName = BuildConfig.APPLICATION_ID;
qrTerminalId = SystemParamsOperation.getInstance().getSecHostTerminalId(); qrTerminalId = SystemParamsOperation.getInstance().getSecHostTerminalId();
qrMerchantId = SystemParamsOperation.getInstance().getShortCode(); qrMerchantId = SystemParamsOperation.getInstance().getSecHostMerchantId();
} }
public EReceiptRequest generateQRReceipt(PayDetail payDetail, TransResultStatus status) { public EReceiptRequest generateQRReceipt(PayDetail payDetail, TransResultStatus status) {

View File

@ -251,28 +251,6 @@ public class TMSUtil {
return tmsValidity; return tmsValidity;
} }
public TMSValidity checkQRParams() {
TMSValidity tmsValidity;
String shortCode = SystemParamsOperation.getInstance().getShortCode();
String appId = SystemParamsOperation.getInstance().getAppId();
String appKey = SystemParamsOperation.getInstance().getAppKey();
if(shortCode.length() == 11 && !appId.isEmpty() && !appKey.isEmpty()) {
tmsValidity = new TMSValidity(ValidityStatus.SUCCESS,"Success");
} else if(shortCode.length() != 11) {
tmsValidity = new TMSValidity(ValidityStatus.FAILURE,"Invalid Short Code!");
} else if(appId.isEmpty() ) {
tmsValidity = new TMSValidity(ValidityStatus.FAILURE,"Invalid AppId!");
} else {
tmsValidity = new TMSValidity(ValidityStatus.FAILURE,"Invalid AppKey!");
}
return tmsValidity;
}
public TMSValidity checkSecHostParams() { public TMSValidity checkSecHostParams() {
TMSValidity tmsValidity; TMSValidity tmsValidity;

View File

@ -101,16 +101,21 @@ public class BaseApplication extends Application {
TerminalKeyUtil.initNexKey(); TerminalKeyUtil.initNexKey();
emvParamOperation.loadAidRids(); emvParamOperation.loadAidRids();
} catch (UnsatisfiedLinkError e) { } catch (UnsatisfiedLinkError e) {
// Handle missing native library gracefully
android.util.Log.e("BaseApplication", "Failed to initialize NexGo SDK due to missing native library: " + e.getMessage()); android.util.Log.e("BaseApplication", "Failed to initialize NexGo SDK due to missing native library: " + e.getMessage());
// You can set a flag here to indicate that NexGo functionality is unavailable
// and handle this condition in your app's UI/logic
} catch (Exception e) { } catch (Exception e) {
android.util.Log.e("BaseApplication", "Failed to initialize NexGo SDK: " + e.getMessage()); android.util.Log.e("BaseApplication", "Failed to initialize NexGo SDK: " + e.getMessage());
} }
} }
private void initFallbackMode() { private void initFallbackMode() {
// Initialize basic functionality without NexGo SDK
android.util.Log.w("BaseApplication", "Running in fallback mode without NexGo SDK"); android.util.Log.w("BaseApplication", "Running in fallback mode without NexGo SDK");
// You can add basic initialization here that doesn't depend on the device SDK
try { try {
// Only load EMV parameters if emvParamOperation is available
if (emvParamOperation != null) { if (emvParamOperation != null) {
emvParamOperation.loadAidRids(); emvParamOperation.loadAidRids();
} }

View File

@ -37,7 +37,4 @@ public interface JSpeedyDao {
@Query("DELETE FROM j_speedy") @Query("DELETE FROM j_speedy")
Completable deleteAll(); Completable deleteAll();
@Query("UPDATE j_speedy SET ttq = :ttq")
Completable updateTTQ(String ttq);
} }

View File

@ -39,7 +39,4 @@ public interface PayPassDao {
@Query("DELETE FROM pay_pass") @Query("DELETE FROM pay_pass")
Completable deleteAll(); Completable deleteAll();
@Query("UPDATE pay_pass SET ttq = :ttq")
Completable updateTTQ(String ttq);
} }

View File

@ -37,7 +37,4 @@ public interface PayWaveDao {
@Query("DELETE FROM pay_wave") @Query("DELETE FROM pay_wave")
Completable deleteAll(); Completable deleteAll();
@Query("UPDATE pay_wave SET ttq = :ttq")
Completable updateTTQ(String ttq);
} }

View File

@ -503,7 +503,7 @@ public class EmvParamHelper {
capkV2.setRid(ridEntity.getRid()); capkV2.setRid(ridEntity.getRid());
} }
if (ridEntity.getIndx() != null && !ridEntity.getIndx().isEmpty()) { if (ridEntity.getIndx() != null && !ridEntity.getIndx().isEmpty()) {
capkV2.setCapkIdx(Integer.parseInt(ridEntity.getIndx(),16)); capkV2.setCapkIdx(Integer.parseInt(ridEntity.getIndx()));
} }
if (ridEntity.getHashInd() != null && !ridEntity.getHashInd().isEmpty()) { if (ridEntity.getHashInd() != null && !ridEntity.getHashInd().isEmpty()) {
capkV2.setHashInd(Integer.parseInt(ridEntity.getHashInd())); capkV2.setHashInd(Integer.parseInt(ridEntity.getHashInd()));

View File

@ -119,15 +119,13 @@ public class EmvParamOperation extends ParamOperation{
processPayPass(); processPayPass();
processQuickPass(); processQuickPass();
processJSpeedy(); processJSpeedy();
processMPUCtls(); // processMPUCtls();
processChips(); processChips();
processRids(); processRids();
} }
public void loadEmvTerminalParam() { public void loadEmvTerminalParam() {
// initEmvTerminalParam(); initEmvTerminalParam();
loadAidRids();
} }
private void initEmvTerminalParam() { private void initEmvTerminalParam() {
@ -257,10 +255,10 @@ public class EmvParamOperation extends ParamOperation{
} }
public void updateQuickPassTTQ(String ttq) { public void updateQuickPassTTQ(String ttq) {
processUpdateTTQ(quickPassEntityRxUtil, quickPassRepository, ttq, new RxCallbackUpdateX() { processUpdateQuickPassTTQ(quickPassEntityRxUtil, quickPassRepository, ttq, new RxCallbackUpdateX() {
@Override @Override
public void onError(Throwable throwable) { public void onError(Throwable throwable) {
LogUtil.d(TAG,"Error occur updating UPI Ctls ttq"); LogUtil.d(TAG,"Error occur updating JCB Ctls CurrencyCode");
} }
@Override @Override
@ -269,48 +267,6 @@ public class EmvParamOperation extends ParamOperation{
} }
}); });
} }
public void updateJSpeedyTTQ(String ttq) {
processUpdateTTQ(jSpeedyEntityRxUtil, jSpeedyRepository, ttq, new RxCallbackUpdateX() {
@Override
public void onError(Throwable throwable) {
LogUtil.d(TAG,"Error occur updating JCB Ctls ttq");
}
@Override
public void onComplete() {
LogUtil.d(TAG,"Updated UPI TTQ to "+ttq);
}
});
}
public void updatePayWaveTTQ(String ttq) {
processUpdateTTQ(payWaveEntityRxUtil, payWaveRepository, ttq, new RxCallbackUpdateX() {
@Override
public void onError(Throwable throwable) {
LogUtil.d(TAG,"Error occur updating visa Ctls ttq");
}
@Override
public void onComplete() {
LogUtil.d(TAG,"Updated visa TTQ to "+ttq);
}
});
}
public void updatePayPassTTQ(String ttq) {
processUpdateTTQ(payPassEntityRxUtil, payPassRepository, ttq, new RxCallbackUpdateX() {
@Override
public void onError(Throwable throwable) {
LogUtil.d(TAG,"Error occur updating master Ctls ttq");
}
@Override
public void onComplete() {
LogUtil.d(TAG,"Updated master TTQ to "+ttq);
}
});
}
public void updateJCBCurrencyCode(String currencyCode) { public void updateJCBCurrencyCode(String currencyCode) {
processUpdateCtlsCurrencyCode(jSpeedyEntityRxUtil, jSpeedyRepository, currencyCode, new RxCallbackUpdateX() { processUpdateCtlsCurrencyCode(jSpeedyEntityRxUtil, jSpeedyRepository, currencyCode, new RxCallbackUpdateX() {
@Override @Override

View File

@ -82,7 +82,7 @@ public class ParamOperation {
}); });
} }
protected <T> void processUpdateTTQ(RxHelper<T> rxHelper, ParamRepository paramRepository, String ttq, RxCallbackUpdateX rxCallbackUpdateX) { protected <T> void processUpdateQuickPassTTQ(RxHelper<T> rxHelper, QuickPassRepository paramRepository, String ttq, RxCallbackUpdateX rxCallbackUpdateX) {
rxHelper.updateData(paramRepository.updateTTQ(ttq), new RxCallbackUpdateX() { rxHelper.updateData(paramRepository.updateTTQ(ttq), new RxCallbackUpdateX() {
@Override @Override
public void onError(Throwable throwable) { public void onError(Throwable throwable) {
@ -96,7 +96,6 @@ public class ParamOperation {
}); });
} }
protected <T> void processUpdateCtlsCurrencyCode(RxHelper<T> rxHelper, ParamRepository<T> paramRepository, String currencyCode, RxCallbackUpdateX rxCallbackUpdateX) { protected <T> void processUpdateCtlsCurrencyCode(RxHelper<T> rxHelper, ParamRepository<T> paramRepository, String currencyCode, RxCallbackUpdateX rxCallbackUpdateX) {
rxHelper.updateData(paramRepository.updateCurrencyCode(currencyCode), new RxCallbackUpdateX() { rxHelper.updateData(paramRepository.updateCurrencyCode(currencyCode), new RxCallbackUpdateX() {
@Override @Override
@ -130,12 +129,9 @@ public class ParamOperation {
rxHelper.queryData(paramRepository.getAll(), new RxCallbackX<List<T>>() { rxHelper.queryData(paramRepository.getAll(), new RxCallbackX<List<T>>() {
@Override @Override
public void onSuccess(List<T> data) { public void onSuccess(List<T> data) {
if (data != null && !data.isEmpty()) {
LogUtil.d(TAG, clazz.getSimpleName() + " loaded from DB: " + data.size());
result.onSuccess(data);
return;
}
List<T> list = loadJsonConfig(id, clazz); List<T> list = loadJsonConfig(id, clazz);
if (data.isEmpty() || list.size() != data.size()) {
deleteAll(rxHelper, paramRepository, new RxCallbackUpdateX() { deleteAll(rxHelper, paramRepository, new RxCallbackUpdateX() {
@Override @Override
public void onError(Throwable throwable) { public void onError(Throwable throwable) {
@ -149,6 +145,11 @@ public class ParamOperation {
result.onSuccess(list); result.onSuccess(list);
} }
}); });
} else {
result.onSuccess(data);
LogUtil.d(TAG, clazz.getSimpleName() + " db size: " + data.size());
}
} }
@Override @Override

View File

@ -62,9 +62,4 @@ public class BinRepository implements ParamRepository<BinEntity> {
public Completable deleteAll() { public Completable deleteAll() {
return binDao.deleteAll(); return binDao.deleteAll();
} }
@Override
public Completable updateTTQ(String ttq) {
return null;
}
} }

View File

@ -64,11 +64,6 @@ public class ChipAidRepository implements ParamRepository<ChipAidEntity> {
return chipAidDao.deleteAll(); return chipAidDao.deleteAll();
} }
@Override
public Completable updateTTQ(String ttq) {
return null;
}
public Completable updateChipCVM(String scheme, long cvmLimit) { return chipAidDao.updateCVMByScheme(scheme,cvmLimit);} public Completable updateChipCVM(String scheme, long cvmLimit) { return chipAidDao.updateCVMByScheme(scheme,cvmLimit);}
public Completable updateAidByAid(boolean aidEnable,String aid) { public Completable updateAidByAid(boolean aidEnable,String aid) {

View File

@ -61,9 +61,4 @@ public class JSpeedyRepository implements ParamRepository<JSpeedyEntity> {
public Completable deleteAll() { public Completable deleteAll() {
return jSpeedyDao.deleteAll(); return jSpeedyDao.deleteAll();
} }
@Override
public Completable updateTTQ(String ttq) {
return null;
}
} }

View File

@ -60,9 +60,4 @@ public class MPUCtlsRepository implements ParamRepository<MPUCtlsEntity> {
public Completable deleteAll() { public Completable deleteAll() {
return mpuCtlsDao.deleteAll(); return mpuCtlsDao.deleteAll();
} }
@Override
public Completable updateTTQ(String ttq) {
return null;
}
} }

View File

@ -24,6 +24,4 @@ public interface ParamRepository <T>{
Completable deleteAll(); Completable deleteAll();
Completable updateTTQ(String ttq);
} }

View File

@ -61,9 +61,4 @@ public class PayPassRepository implements ParamRepository<PayPassEntity> {
public Completable deleteAll() { public Completable deleteAll() {
return payPassDao.deleteAll(); return payPassDao.deleteAll();
} }
@Override
public Completable updateTTQ(String ttq) {
return null;
}
} }

View File

@ -63,9 +63,4 @@ public class PayWaveRepository implements ParamRepository<PayWaveEntity> {
public Completable deleteAll() { public Completable deleteAll() {
return payWaveDao.deleteAll(); return payWaveDao.deleteAll();
} }
@Override
public Completable updateTTQ(String ttq) {
return null;
}
} }

View File

@ -63,9 +63,4 @@ public class RidRepository implements ParamRepository<RidEntity> {
public Completable deleteAll() { public Completable deleteAll() {
return ridDao.deleteAll(); return ridDao.deleteAll();
} }
@Override
public Completable updateTTQ(String ttq) {
return null;
}
} }

View File

@ -17,7 +17,6 @@ import com.nexgo.oaf.apiv3.SdkResult;
import com.nexgo.oaf.apiv3.device.pinpad.AlgorithmModeEnum; import com.nexgo.oaf.apiv3.device.pinpad.AlgorithmModeEnum;
import com.nexgo.oaf.apiv3.device.pinpad.OnPinPadInputListener; import com.nexgo.oaf.apiv3.device.pinpad.OnPinPadInputListener;
import com.nexgo.oaf.apiv3.device.pinpad.PinAlgorithmModeEnum; import com.nexgo.oaf.apiv3.device.pinpad.PinAlgorithmModeEnum;
import com.nexgo.oaf.apiv3.device.pinpad.PinKeyboardModeEnum;
import com.nexgo.oaf.apiv3.device.pinpad.PinKeyboardViewModeEnum; import com.nexgo.oaf.apiv3.device.pinpad.PinKeyboardViewModeEnum;
import com.nexgo.oaf.apiv3.device.pinpad.PinPad; import com.nexgo.oaf.apiv3.device.pinpad.PinPad;
import com.nexgo.oaf.apiv3.device.pinpad.PinPadKeyCode; import com.nexgo.oaf.apiv3.device.pinpad.PinPadKeyCode;
@ -65,7 +64,6 @@ import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -603,21 +601,20 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
pinPad.setPinKeyboardViewMode(PinKeyboardViewModeEnum.DEFAULT); pinPad.setPinKeyboardViewMode(PinKeyboardViewModeEnum.DEFAULT);
pinPad.setPinKeyboardMode(PinKeyboardModeEnum.FIXED); pinPad.setAlgorithmMode(AlgorithmModeEnum.DES);
// pinPad.setAlgorithmMode(AlgorithmModeEnum.DES);
if(cardNo == null){ if(cardNo == null){
cardNo = emvHandler.getEmvCardDataInfo().getCardNo(); cardNo = emvHandler.getEmvCardDataInfo().getCardNo();
} }
int length = cardNo.length(); // int length = cardNo.length();
byte[] panBytes = cardNo.substring( length- 13).getBytes(StandardCharsets.US_ASCII); // byte[] panBytes = cardNo.substring(length - 13).getBytes(StandardCharsets.US_ASCII);
LogUtil.d(TAG,"card num :"+cardNo); LogUtil.d(TAG,"card num :"+cardNo);
LogUtil.d(TAG,"Is Online Pin:"+isOnlinePin); LogUtil.d(TAG,"Is Online Pin:"+isOnlinePin);
// pinPad.inputOnlinePin(supperLen, 60, pan, 0, PinAlgorithmModeEnum.ISO9564FMT0, pinPadInputListener); // pinPad.inputOnlinePin(supperLen, 60, pan, 0, PinAlgorithmModeEnum.ISO9564FMT0, pinPadInputListener);
if (isOnlinePin) { if (isOnlinePin) {
pinPad.inputOnlinePin(supperLen, 60, panBytes, pinIndex, PinAlgorithmModeEnum.ISO9564FMT0, pinPadInputListener); pinPad.inputOnlinePin(supperLen, 60, cardNo, pinIndex, PinAlgorithmModeEnum.ISO9564FMT0, pinPadInputListener);
} else { } else {
mPayDetail.transCVM = TransCVM.OFFLINE_PIN; mPayDetail.transCVM = TransCVM.OFFLINE_PIN;
@ -778,6 +775,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
byte[] tlv_95 = emvHandler.getTlv(new byte[]{(byte) 0x95}, EmvDataSourceEnum.FROM_KERNEL); byte[] tlv_95 = emvHandler.getTlv(new byte[]{(byte) 0x95}, EmvDataSourceEnum.FROM_KERNEL);
LogUtil.d(TAG, "tlv_95--" + ByteUtils.byteArray2HexString(tlv_95)); LogUtil.d(TAG, "tlv_95--" + ByteUtils.byteArray2HexString(tlv_95));
byte[] tlv_84 = emvHandler.getTlv(new byte[]{(byte) 0x84}, EmvDataSourceEnum.FROM_KERNEL); byte[] tlv_84 = emvHandler.getTlv(new byte[]{(byte) 0x84}, EmvDataSourceEnum.FROM_KERNEL);
LogUtil.d(TAG, "tlv_84--" + ByteUtils.byteArray2HexString(tlv_84)); LogUtil.d(TAG, "tlv_84--" + ByteUtils.byteArray2HexString(tlv_84));
@ -1218,9 +1216,8 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
byte[] TTQ; byte[] TTQ;
byte[] kernelTTQ = emvHandler.getTlv(ByteUtils.hexString2ByteArray("9F66"), EmvDataSourceEnum.FROM_KERNEL); byte[] kernelTTQ = emvHandler.getTlv(ByteUtils.hexString2ByteArray("9F66"), EmvDataSourceEnum.FROM_KERNEL);
LogUtil.d(TAG, "configPaywaveParameters, TTQ" + ByteUtils.byteArray2HexString(kernelTTQ)); LogUtil.d(TAG, "configPaywaveParameters, TTQ" + ByteUtils.byteArray2HexString(kernelTTQ));
//default TTQ value //default TTQ value
TTQ = ByteUtils.hexString2ByteArray("36A04000"); TTQ = ByteUtils.hexString2ByteArray("36004000");
kernelTTQ[0] = TTQ[0]; kernelTTQ[0] = TTQ[0];
kernelTTQ[2] = TTQ[2]; kernelTTQ[2] = TTQ[2];
kernelTTQ[3] = TTQ[3]; kernelTTQ[3] = TTQ[3];

View File

@ -390,29 +390,6 @@
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"
}, },
{
"aidEnable": true,
"aid": "A0000000043060",
"cardScheme": "MASTERCARD",
"applicationVersion": "0002",
"emvDDOL": "9F3704",
"emvTDOL": "9F3704",
"partialAidSelection": false,
"targetPercent": "99",
"maxTargetPercent": "99",
"threshold": "00000040",
"tacDefault": "FE50B8A000",
"tacOnline": "FE50B8F800",
"tacDenial": "0000000000",
"floorLimit": "000000000000",
"cvmLimit": 75000,
"transLimit": "999999999999",
"transLimitCDV": "999999999999",
"terminalCapability": "0000000000000000",
"riskManageData": "6C7A800000000000",
"cateCode": "2701",
"currencyCode": "0104"
},
{ {
"aidEnable": true, "aidEnable": true,
"aid": "A000000333010101", "aid": "A000000333010101",

View File

@ -3,26 +3,26 @@
"aidEnable": true, "aidEnable": true,
"aid": "A0000000651010", "aid": "A0000000651010",
"cardLabel": "JCB", "cardLabel": "JCB",
"applicationVersion": "0020", "applicationVersion": "0021",
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,
"targetPercent": "99", "targetPercent": "00",
"maxTargetPercent": "99", "maxTargetPercent": "00",
"threshold": "00000000", "threshold": "00000000",
"tacDefault": "D84000A800", "tacDefault": "0000000000",
"tacOnline": "DC4004F800", "tacOnline": "D84000A800",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "00000000",
"cvmLimit": 75000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "9999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "9999999999",
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "01",
"kernelType": "06", "kernelType": "06",
"ttq": "32004000", "ttq": "32004000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0840" "currencyCode": "0104"
} }

View File

@ -20,9 +20,8 @@
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "01",
"kernelType": "02", "kernelType": "02",
"ttq": "32800000", "ttq": "36800000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"
} }
] ]

View File

@ -17,7 +17,7 @@
"cvmLimit": 75000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "999999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "999999999999",
"terminalCapability": "E0F8F8", "terminalCapability": "E0F828",
"riskManageData": "6C7A800000000000", "riskManageData": "6C7A800000000000",
"kernelType": "02", "kernelType": "02",
"ttq": "36804000", "ttq": "36804000",
@ -43,7 +43,7 @@
"cvmLimit": 75000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "999999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "999999999999",
"terminalCapability": "E0F8F8", "terminalCapability": "E0F828",
"riskManageData": "6C7A800000000000", "riskManageData": "6C7A800000000000",
"kernelType": "02", "kernelType": "02",
"ttq": "36804000", "ttq": "36804000",
@ -68,7 +68,7 @@
"cvmLimit": 75000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "999999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "999999999999",
"terminalCapability": "E0F8F8", "terminalCapability": "E0F828",
"riskManageData": "6C7A800000000000", "riskManageData": "6C7A800000000000",
"kernelType": "02", "kernelType": "02",
"ttq": "36804000", "ttq": "36804000",

View File

@ -1,4 +1,29 @@
[ [
{
"aidEnable": true,
"aid": "A000000003",
"cardLabel": "VISA",
"applicationVersion": "008C",
"emvDDOL": "9F3704",
"emvTDOL": "9F3704",
"partialAidSelection": false,
"targetPercent": "00",
"maxTargetPercent": "00",
"threshold": "00000040",
"tacDefault": "DC4000A800",
"tacOnline": "DC4004F800",
"tacDenial": "0000000000",
"floorLimit": "000000000000",
"cvmLimit": 75000,
"transLimit": "4000000000",
"transLimitCDV": "9999999",
"terminalCapability": "0000000000000000",
"riskManageData": "01",
"kernelType": "03",
"ttq": "36A00000",
"cateCode": "2701",
"currencyCode": "0104"
},
{ {
"aidEnable": true, "aidEnable": true,
"aid": "A0000000031010", "aid": "A0000000031010",
@ -14,13 +39,13 @@
"tacOnline": "DC4004F800", "tacOnline": "DC4004F800",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 70000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "999999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "999999999999",
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "01",
"kernelType": "03", "kernelType": "03",
"ttq": "32A04000", "ttq": "36A04000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"
}, },
@ -39,13 +64,13 @@
"tacOnline": "DC4004F800", "tacOnline": "DC4004F800",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 70000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "999999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "999999999999",
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "01",
"kernelType": "03", "kernelType": "03",
"ttq": "32A04000", "ttq": "36A04000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"
}, },
@ -64,13 +89,13 @@
"tacOnline": "DC4004F800", "tacOnline": "DC4004F800",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 70000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "999999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "999999999999",
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "01",
"kernelType": "03", "kernelType": "03",
"ttq": "32A04000", "ttq": "36A04000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"
}, },
@ -89,13 +114,13 @@
"tacOnline": "DC4004F800", "tacOnline": "DC4004F800",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 70000, "cvmLimit": 75000,
"transLimit": "999999999999", "transLimit": "999999999999",
"transLimitCDV": "999999999999", "transLimitCDV": "999999999999",
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "01",
"kernelType": "03", "kernelType": "03",
"ttq": "32A04000", "ttq": "36A04000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"
} }

View File

@ -7,23 +7,24 @@
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,
"targetPercent": "99", "targetPercent": "00",
"maxTargetPercent": "99", "maxTargetPercent": "00",
"threshold": "00000000", "threshold": "00000000",
"tacDefault": "D84000A800", "tacDefault": "084000A800",
"tacOnline": "DC4004F800", "tacOnline": "DC4004F800",
"tacDenial": "0000000000", "tacDenial": "0010000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 75000, "cvmLimit": 300,
"transLimit": "9999999999", "transLimit": "999999999",
"transLimitCDV": "9999999999", "transLimitCDV": "999999999",
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "0CB0800000000000",
"kernelType": "01", "kernelType": "",
"ttq": "36800000", "ttq": "30004000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"
}, },
{ {
"aidEnable": true, "aidEnable": true,
"aid": "A000000333010102", "aid": "A000000333010102",
@ -32,19 +33,119 @@
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,
"targetPercent": "99", "targetPercent": "00",
"maxTargetPercent": "99", "maxTargetPercent": "00",
"threshold": "00000000", "threshold": "00000000",
"tacDefault": "D84000A800", "tacDefault": "D84000A800",
"tacOnline": "DC4004F800", "tacOnline": "DC4004F800",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 75000, "cvmLimit": 300,
"transLimit": "9999999999", "transLimit": "999999999",
"transLimitCDV": "9999999999", "transLimitCDV": "999999999",
"terminalCapability": "0000000000000000", "terminalCapability": "0000000000000000",
"riskManageData": "01", "riskManageData": "0CB0800000000000",
"kernelType": "01", "kernelType": "",
"ttq": "30004000",
"cateCode": "2701",
"currencyCode": "0104"
},
{
"aidEnable": true,
"aid": "A000000333010103",
"cardLabel": "UPI",
"applicationVersion": "0002",
"emvDDOL": "9F3704",
"emvTDOL": "9F3704",
"partialAidSelection": false,
"targetPercent": "00",
"maxTargetPercent": "00",
"threshold": "00000000",
"tacDefault": "D84000A800",
"tacOnline": "DC4004F800",
"tacDenial": "0000000000",
"floorLimit": "000000000000",
"cvmLimit": 300,
"transLimit": "999999999",
"transLimitCDV": "999999999",
"terminalCapability": "0000000000000000",
"riskManageData": "0CB0800000000000",
"kernelType": "",
"ttq": "36800000",
"cateCode": "2701",
"currencyCode": "0104"
},
{
"aidEnable": true,
"aid": "A000000333010106",
"cardLabel": "UPI",
"applicationVersion": "0002",
"emvDDOL": "9F3704",
"emvTDOL": "9F3704",
"partialAidSelection": false,
"targetPercent": "00",
"maxTargetPercent": "00",
"threshold": "00000000",
"tacDefault": "D84000A800",
"tacOnline": "DC4004F800",
"tacDenial": "0000000000",
"floorLimit": "000000000000",
"cvmLimit": 300,
"transLimit": "999999999",
"transLimitCDV": "999999999",
"terminalCapability": "0000000000000000",
"riskManageData": "0CB0800000000000",
"kernelType": "",
"ttq": "36800000",
"cateCode": "2701",
"currencyCode": "0104"
},
{
"aidEnable": true,
"aid": "A000000333010108",
"cardLabel": "UPI",
"applicationVersion": "0002",
"emvDDOL": "9F3704",
"emvTDOL": "9F3704",
"partialAidSelection": false,
"targetPercent": "00",
"maxTargetPercent": "00",
"threshold": "00000000",
"tacDefault": "D84000A800",
"tacOnline": "DC4004F800",
"tacDenial": "0000000000",
"floorLimit": "000000000000",
"cvmLimit": 300,
"transLimit": "999999999",
"transLimitCDV": "999999999",
"terminalCapability": "0000000000000000",
"riskManageData": "0CB0800000000000",
"kernelType": "",
"ttq": "36800000",
"cateCode": "2701",
"currencyCode": "0104"
},
{
"aidEnable": true,
"aid": "A0000003330101021111111111111111",
"cardLabel": "UPI",
"applicationVersion": "0002",
"emvDDOL": "9F3704",
"emvTDOL": "9F3704",
"partialAidSelection": false,
"targetPercent": "00",
"maxTargetPercent": "00",
"threshold": "00000000",
"tacDefault": "D84000A800",
"tacOnline": "DC4004F800",
"tacDenial": "0000000000",
"floorLimit": "000000000000",
"cvmLimit": 300,
"transLimit": "999999999",
"transLimitCDV": "999999999",
"terminalCapability": "0000000000000000",
"riskManageData": "0CB0800000000000",
"kernelType": "",
"ttq": "36800000", "ttq": "36800000",
"cateCode": "2701", "cateCode": "2701",
"currencyCode": "0104" "currencyCode": "0104"

View File

@ -1,7 +1,7 @@
[ [
{ {
"rid": "A000000333", "rid": "A000000333",
"indx": "0A", "indx": "10",
"hashInd": "01", "hashInd": "01",
"arithInd": "01", "arithInd": "01",
"modul": "B2AB1B6E9AC55A75ADFD5BBC34490E53C4C3381F34E60E7FAC21CC2B26DD34462B64A6FAE2495ED1DD383B8138BEA100FF9B7A111817E7B9869A9742B19E5C9DAC56F8B8827F11B05A08ECCF9E8D5E85B0F7CFA644EFF3E9B796688F38E006DEB21E101C01028903A06023AC5AAB8635F8E307A53AC742BDCE6A283F585F48EF", "modul": "B2AB1B6E9AC55A75ADFD5BBC34490E53C4C3381F34E60E7FAC21CC2B26DD34462B64A6FAE2495ED1DD383B8138BEA100FF9B7A111817E7B9869A9742B19E5C9DAC56F8B8827F11B05A08ECCF9E8D5E85B0F7CFA644EFF3E9B796688F38E006DEB21E101C01028903A06023AC5AAB8635F8E307A53AC742BDCE6A283F585F48EF",
@ -31,10 +31,10 @@
}, },
{ {
"rid": "A000000333", "rid": "A000000333",
"indx": "0B", "indx": "11",
"hashInd": "01", "hashInd": "01",
"arithInd": "01", "arithInd": "01",
"modul": "CF9FDF46B356378E9AF311B0F981B21A1F22F250FB11F55C958709E3C7241918293483289EAE688A094C02C344E2999F315A72841F489E24B1BA0056CFAB3B479D0E826452375DCDBB67E97EC2AA66F4601D774FEAEF775ACCC621BFEB65FB0053FC5F392AA5E1D4C41A4DE9FFDFDF1327C4BB874F1F63A599EE3902FE95E729FD78D4234DC7E6CF1ABABAA3F6DB29B7F05D1D901D2E76A606A8CBFFFFECBD918FA2D278BDB43B0434F5D45134BE1C2781D157D501FF43E5F1C470967CD57CE53B64D82974C8275937C5D8502A1252A8A5D6088A259B694F98648D9AF2CB0EFD9D943C69F896D49FA39702162ACB5AF29B90BADE005BC157", "modul": "51E35BD2290A0792BA55AEA169F5BCC33E96BF06E4A021301A97E73A85A7777A40494033433DD945E568065F3BE56255B26BB5CF3F8700AF734A0D5564DE1AFA5F9014704EA42BF929B64BEC7BFABA8D68ADDFECBDFEDEBF36C50DC7FCF0BD8CE33A8A3290216337B02AE6515D7C727F837DA6A18D794CCE62DACFBDB5B4EBE15F79553E05A5562CAE6A7B2C0587ECB362F4080DAC37D4F288440820B422D3692D5E8C57015D3AE21F558ED4733967B3",
"exponent": "03", "exponent": "03",
"expDate": "3230333031323331", "expDate": "3230333031323331",
"checkSum": "BD331F9996A490B33C13441066A09AD3FEB5F66C" "checkSum": "BD331F9996A490B33C13441066A09AD3FEB5F66C"
@ -78,56 +78,6 @@
"exponent": "03", "exponent": "03",
"expDate": "3230333431323331", "expDate": "3230333431323331",
"checkSum": "C4A3C43CCF87327D136B804160E47D43B60E6E0F" "checkSum": "C4A3C43CCF87327D136B804160E47D43B60E6E0F"
},
{
"rid": "A000000003",
"indx": "95",
"hashInd": "01",
"arithInd": "01",
"modul": "BE9E1FA5E9A803852999C4AB432DB28600DCD9DAB76DFAAA47355A0FE37B1508AC6BF38860D3C6C2E5B12A3CAAF2A7005A7241EBAA7771112C74CF9A0634652FBCA0E5980C54A64761EA101A114E0F0B5572ADD57D010B7C9C887E104CA4EE1272DA66D997B9A90B5A6D624AB6C57E73C8F919000EB5F684898EF8C3DBEFB330C62660BED88EA78E909AFF05F6DA627B",
"exponent": "03",
"expDate": "3230323831323331",
"checkSum": "EE1511CEC71020A9B90443B37B1D5F6E703030F6"
},
{
"rid": "A000000003",
"indx": "99",
"hashInd": "01",
"arithInd": "01",
"modul": "AB79FCC9520896967E776E64444E5DCDD6E13611874F3985722520425295EEA4BD0C2781DE7F31CD3D041F565F747306EED62954B17EDABA3A6C5B85A1DE1BEB9A34141AF38FCF8279C9DEA0D5A6710D08DB4124F041945587E20359BAB47B7575AD94262D4B25F264AF33DEDCF28E09615E937DE32EDC03C54445FE7E382777",
"exponent": "03",
"expDate": "3230333431323331",
"checkSum": "4ABFFD6B1C51212D05552E431C5B17007D2F5E6D"
},
{
"rid": "A000000003",
"indx": "09",
"hashInd": "01",
"arithInd": "01",
"modul": "9D912248DE0A4E39C1A7DDE3F6D2588992C1A4095AFBD1824D1BA74847F2BC4926D2EFD904B4B54954CD189A54C5D1179654F8F9B0D2AB5F0357EB642FEDA95D3912C6576945FAB897E7062CAA44A4AA06B8FE6E3DBA18AF6AE3738E30429EE9BE03427C9D64F695FA8CAB4BFE376853EA34AD1D76BFCAD15908C077FFE6DC5521ECEF5D278A96E26F57359FFAEDA19434B937F1AD999DC5C41EB11935B44C18100E857F431A4A5A6BB65114F174C2D7B59FDF237D6BB1DD0916E644D709DED56481477C75D95CDD68254615F7740EC07F330AC5D67BCD75BF23D28A140826C026DBDE971A37CD3EF9B8DF644AC385010501EFC6509D7A41",
"exponent": "03",
"expDate": "3230333431323331",
"checkSum": "1FF80A40173F52D7D27E0F26A146A1C8CCB29046"
},
{
"rid": "A000000004",
"indx": "F1",
"hashInd": "01",
"arithInd": "01",
"modul": "A0DCF4BDE19C3546B4B6F0414D174DDE294AABBB828C5A834D73AAE27C99B0B053A90278007239B6459FF0BBCD7B4B9C6C50AC02CE91368DA1BD21AAEADBC65347337D89B68F5C99A09D05BE02DD1F8C5BA20E2F13FB2A27C41D3F85CAD5CF6668E75851EC66EDBF98851FD4E42C44C1D59F5984703B27D5B9F21B8FA0D93279FBBF69E090642909C9EA27F898959541AA6757F5F624104F6E1D3A9532F2A6E51515AEAD1B43B3D7835088A2FAFA7BE7",
"exponent": "03",
"expDate": "3230333431323331",
"checkSum": "D8E68DA167AB5A85D8C3D55ECB9B0517A1A5B4BB"
},
{
"rid": "A000000004",
"indx": "EF",
"hashInd": "01",
"arithInd": "01",
"modul": "A191CB87473F29349B5D60A88B3EAEE0973AA6F1A082F358D849FDDFF9C091F899EDA9792CAF09EF28F5D22404B88A2293EEBBC1949C43BEA4D60CFD879A1539544E09E0F09F60F065B2BF2A13ECC705F3D468B9D33AE77AD9D3F19CA40F23DCF5EB7C04DC8F69EBA565B1EBCB4686CD274785530FF6F6E9EE43AA43FDB02CE00DAEC15C7B8FD6A9B394BABA419D3F6DC85E16569BE8E76989688EFEA2DF22FF7D35C043338DEAA982A02B866DE5328519EBBCD6F03CDD686673847F84DB651AB86C28CF1462562C577B853564A290C8556D818531268D25CC98A4CC6A0BDFFFDA2DCCA3A94C998559E307FDDF915006D9A987B07DDAEB3B",
"exponent": "03",
"expDate": "3230333431323331",
"checkSum": "21766EBB0EE122AFB65D7845B73DB46BAB65427A"
} }
] ]

View File

@ -49,9 +49,7 @@ public enum TransactionsType {
DETAIL_REPORT("DETAIL_REPORT",33,"000000"), DETAIL_REPORT("DETAIL_REPORT",33,"000000"),
MMQR_REFUND("QR_REFUND",34,"000000"), MMQR_REFUND("QR_REFUND",34,"000000"),
MMQR_SETTLEMENT("QR_SETTLEMENT",35,"000000"), MMQR_SETTLEMENT("QR_SETTLEMENT",35,"000000");
MMQR_HISTORY("QR_HISTORY",36,"000000");
public final String name; public final String name;