added bin list and its features
This commit is contained in:
parent
e4f706f24f
commit
4d30d0134c
@ -39,6 +39,8 @@ import com.utsmyanmar.checkxread.sdk.NexGoSDK;
|
|||||||
import com.utsmyanmar.ecr.ECRHelper;
|
import com.utsmyanmar.ecr.ECRHelper;
|
||||||
import com.utsmyanmar.paylibs.Constant;
|
import com.utsmyanmar.paylibs.Constant;
|
||||||
import com.utsmyanmar.paylibs.model.PayDetail;
|
import com.utsmyanmar.paylibs.model.PayDetail;
|
||||||
|
import com.utsmyanmar.paylibs.model.SettleData;
|
||||||
|
import com.utsmyanmar.paylibs.model.TradeData;
|
||||||
import com.utsmyanmar.paylibs.print.printx.PrintXReceipt;
|
import com.utsmyanmar.paylibs.print.printx.PrintXReceipt;
|
||||||
import com.utsmyanmar.paylibs.utils.POSUtil;
|
import com.utsmyanmar.paylibs.utils.POSUtil;
|
||||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||||
@ -71,6 +73,8 @@ import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
|||||||
import io.reactivex.rxjava3.disposables.Disposable;
|
import io.reactivex.rxjava3.disposables.Disposable;
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||||
|
import com.utsmyanmar.paylibs.utils.params.Params;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main Activity handling application navigation and fragment interactions
|
* Main Activity handling application navigation and fragment interactions
|
||||||
*/
|
*/
|
||||||
@ -153,9 +157,9 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initKey(){
|
private void initKey(){
|
||||||
// SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
|
SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
|
||||||
// SystemParamsOperation.getInstance().setTmsAddress("https://sirius-nest.utsmyanmar.com");
|
// SystemParamsOperation.getInstance().setTmsAddress("https://sirius-nest.utsmyanmar.com");
|
||||||
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
|
SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
|
||||||
// SystemParamsOperation.getInstance().setEReceiptAddress("http://receipt-nest.utsmyanmar.com");
|
// SystemParamsOperation.getInstance().setEReceiptAddress("http://receipt-nest.utsmyanmar.com");
|
||||||
|
|
||||||
PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad();
|
PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad();
|
||||||
@ -452,10 +456,12 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
// Handle regular auto settlement
|
// Handle regular auto settlement
|
||||||
boolean auto = intent.getBooleanExtra("AUTO_SETTLEMENT", false);
|
boolean auto = intent.getBooleanExtra("AUTO_SETTLEMENT", false);
|
||||||
if (auto) {
|
if (auto) {
|
||||||
com.utsmyanmar.paylibs.model.PayDetail payDetail = (com.utsmyanmar.paylibs.model.PayDetail) intent.getSerializableExtra("EXTRA_PAY_DETAIL");
|
PayDetail payDetail = (PayDetail) intent.getSerializableExtra("EXTRA_PAY_DETAIL");
|
||||||
if (payDetail != null) {
|
if (payDetail != null) {
|
||||||
|
|
||||||
sharedViewModel.payDetail.setValue(payDetail);
|
sharedViewModel.payDetail.setValue(payDetail);
|
||||||
sharedViewModel.transactionsType.setValue(com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType.SETTLEMENT);
|
sharedViewModel.transactionsType.setValue(TransactionsType.SETTLEMENT);
|
||||||
|
sharedViewModel.setAmount(POSUtil.getInstance().getDecimalAmountSeparatorFormat(payDetail.getAmount()));
|
||||||
try {
|
try {
|
||||||
navController.navigate(R.id.transactionResultFragment);
|
navController.navigate(R.id.transactionResultFragment);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -476,14 +482,14 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
List<PayDetail> qrTransList = (List<PayDetail>) intent.getSerializableExtra("QR_TRANS_LIST");
|
List<PayDetail> qrTransList = (List<PayDetail>) intent.getSerializableExtra("QR_TRANS_LIST");
|
||||||
|
|
||||||
// Create QR settlement PayDetail
|
// Create QR settlement PayDetail
|
||||||
com.utsmyanmar.paylibs.model.SettleData settleData = new com.utsmyanmar.paylibs.model.SettleData(
|
SettleData settleData = new SettleData(
|
||||||
qrSaleCount, qrSaleAmount, 0, 0L, qrRefundCount, qrRefundAmount, 0, 0L);
|
qrSaleCount, qrSaleAmount, 0, 0L, qrRefundCount, qrRefundAmount, 0, 0L);
|
||||||
|
|
||||||
com.utsmyanmar.paylibs.model.TradeData tradeData = com.utsmyanmar.paylibs.utils.params.Params.newTrade(false);
|
TradeData tradeData = Params.newTrade(false);
|
||||||
com.utsmyanmar.paylibs.model.PayDetail payDetail = tradeData.getPayDetail();
|
PayDetail payDetail = tradeData.getPayDetail();
|
||||||
payDetail.setSettleDataObj(settleData);
|
payDetail.setSettleDataObj(settleData);
|
||||||
payDetail.setTransactionType(com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType.MMQR_SETTLEMENT.value);
|
payDetail.setTransactionType(TransactionsType.MMQR_SETTLEMENT.value);
|
||||||
payDetail.setTransType(com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType.MMQR_SETTLEMENT.name);
|
payDetail.setTransType(TransactionsType.MMQR_SETTLEMENT.name);
|
||||||
payDetail.setAmount(totalAmount);
|
payDetail.setAmount(totalAmount);
|
||||||
payDetail.setTradeAnswerCode("000");
|
payDetail.setTradeAnswerCode("000");
|
||||||
|
|
||||||
@ -491,7 +497,7 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
sharedViewModel.setAmount(POSUtil.getInstance().getDecimalAmountSeparatorFormat(totalAmount));
|
sharedViewModel.setAmount(POSUtil.getInstance().getDecimalAmountSeparatorFormat(totalAmount));
|
||||||
sharedViewModel.payDetails.setValue(qrTransList);
|
sharedViewModel.payDetails.setValue(qrTransList);
|
||||||
sharedViewModel.payDetail.setValue(payDetail);
|
sharedViewModel.payDetail.setValue(payDetail);
|
||||||
sharedViewModel.transactionsType.setValue(com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType.MMQR_SETTLEMENT);
|
sharedViewModel.transactionsType.setValue(TransactionsType.MMQR_SETTLEMENT);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
navController.navigate(R.id.transactionResultFragment);
|
navController.navigate(R.id.transactionResultFragment);
|
||||||
|
|||||||
@ -146,10 +146,10 @@ public class MainFragment extends DataBindingFragment {
|
|||||||
delayFunctionCall(() -> {
|
delayFunctionCall(() -> {
|
||||||
NexGoSDK.getInstance().cancelCheckCard();
|
NexGoSDK.getInstance().cancelCheckCard();
|
||||||
NexGoSDK.getInstance().closeReader();
|
NexGoSDK.getInstance().closeReader();
|
||||||
// enableHomeButton();
|
enableHomeButton();
|
||||||
// disableTaskButton();
|
// disableTaskButton();
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
|
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -155,8 +155,8 @@ public class AutoSettleService extends Service {
|
|||||||
createNotification();
|
createNotification();
|
||||||
|
|
||||||
if (SystemParamsOperation.getInstance().getSettlementStatus()) {
|
if (SystemParamsOperation.getInstance().getSettlementStatus()) {
|
||||||
// performSettlement();
|
performSettlement();
|
||||||
regularSettlementCompleted = true;
|
// regularSettlementCompleted = true;
|
||||||
performQRSettlement();
|
performQRSettlement();
|
||||||
} else {
|
} else {
|
||||||
LogUtil.d(TAG, "Settlement is disabled in system parameters");
|
LogUtil.d(TAG, "Settlement is disabled in system parameters");
|
||||||
|
|||||||
@ -129,6 +129,14 @@ public class ProcessingCardFragment extends DataBindingFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onSuccess(CardDataX cardDataX) {
|
public void onSuccess(CardDataX cardDataX) {
|
||||||
|
|
||||||
|
if(!TransactionUtil.getInstance().getBinList().isEmpty()) {
|
||||||
|
if(TransactionUtil.getInstance().getBinList().contains(cardDataX.getBin())) {
|
||||||
|
LogUtil.d(TAG," <= contain bin => ");
|
||||||
|
handlePreEmvProcess();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
routeId = R.id.action_processingCardFragment_to_pinPadFragment;
|
routeId = R.id.action_processingCardFragment_to_pinPadFragment;
|
||||||
transProcessViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());
|
transProcessViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());
|
||||||
pinPadViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());
|
pinPadViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());
|
||||||
|
|||||||
@ -13,6 +13,11 @@ import com.utsmm.kbz.config.Constants;
|
|||||||
|
|
||||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class TransactionUtil {
|
public class TransactionUtil {
|
||||||
|
|
||||||
|
|
||||||
@ -138,4 +143,25 @@ public class TransactionUtil {
|
|||||||
return payDetail;
|
return payDetail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<String> binParser(String input) {
|
||||||
|
|
||||||
|
if (input == null || input.trim().isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
String[] parts = input.split("[,/\\-]");
|
||||||
|
|
||||||
|
return Arrays.stream(parts)
|
||||||
|
.map(String::trim)
|
||||||
|
.filter(s -> !s.isEmpty())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getBinList() {
|
||||||
|
if(SystemParamsOperation.getInstance().getBinValues() == null || SystemParamsOperation.getInstance().getBinValues().isEmpty())
|
||||||
|
return new ArrayList<>();
|
||||||
|
else
|
||||||
|
return binParser(SystemParamsOperation.getInstance().getBinValues());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -644,6 +644,9 @@ public class TMSSetupsImpl implements TMSSetups{
|
|||||||
else if (TextUtils.equals(name, "certificate_password")) {
|
else if (TextUtils.equals(name, "certificate_password")) {
|
||||||
SystemParamsOperation.getInstance().setCertificatePassword(data);
|
SystemParamsOperation.getInstance().setCertificatePassword(data);
|
||||||
}
|
}
|
||||||
|
else if(TextUtils.equals(name,"bin_list")) {
|
||||||
|
SystemParamsOperation.getInstance().setBinValue(data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemParamsOperation.getInstance().setCarouselUrls(convertToString(imgUrls));
|
SystemParamsOperation.getInstance().setCarouselUrls(convertToString(imgUrls));
|
||||||
|
|||||||
@ -4,6 +4,11 @@ import com.utsmyanmar.baselib.util.EReceiptHelper;
|
|||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class GeneralTest {
|
public class GeneralTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -22,4 +27,29 @@ public class GeneralTest {
|
|||||||
String dataToHash = bodyString + secret + timestamp;
|
String dataToHash = bodyString + secret + timestamp;
|
||||||
return EReceiptHelper.sha256(dataToHash);
|
return EReceiptHelper.sha256(dataToHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBinParser() {
|
||||||
|
String input1 = "629214, 624445";
|
||||||
|
System.out.println(binParser(input1)); // Output: [629214, 624445]
|
||||||
|
|
||||||
|
String input2 = "11111/ 22222 - 33333,44444";
|
||||||
|
System.out.println(binParser(input2)); // Output: [11111, 22222, 33333, 44444]
|
||||||
|
|
||||||
|
String input3 = "55555,";
|
||||||
|
System.out.println(binParser(input3)); // Output: [55555]
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<String> binParser(String input) {
|
||||||
|
|
||||||
|
if (input == null || input.trim().isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
String[] parts = input.split("[,/\\-]");
|
||||||
|
|
||||||
|
return Arrays.stream(parts)
|
||||||
|
.map(String::trim)
|
||||||
|
.filter(s -> !s.isEmpty())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -287,8 +287,8 @@ public class NetworkModule {
|
|||||||
tmsAddress = getTMSUrlFromNative();
|
tmsAddress = getTMSUrlFromNative();
|
||||||
}
|
}
|
||||||
|
|
||||||
String baseUrl = tmsAddress.trim() + "/api/v1/"; //for on prim
|
// String baseUrl = tmsAddress.trim() + "/api/v1/"; //for on prim
|
||||||
// String baseUrl = tmsAddress.trim() + "/"; //for uat and prod
|
String baseUrl = tmsAddress.trim() + "/"; //for uat and prod
|
||||||
|
|
||||||
final Gson gson =
|
final Gson gson =
|
||||||
new GsonBuilder().create();
|
new GsonBuilder().create();
|
||||||
|
|||||||
@ -68,4 +68,15 @@ public class CardDataX {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "Card number :"+pan + " expire date : "+exp + " track1 : "+ track1 + " track2 : "+ track2 + " track3 : "+ track3 + " card holder name : "+cardHolderName + " service code: "+serviceCode;
|
return "Card number :"+pan + " expire date : "+exp + " track1 : "+ track1 + " track2 : "+ track2 + " track3 : "+ track3 + " card holder name : "+cardHolderName + " service code: "+serviceCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getBin() {
|
||||||
|
String bin = "";
|
||||||
|
if (pan != null) {
|
||||||
|
if (pan.length() >= 6) {
|
||||||
|
bin = pan.substring(0, 6);
|
||||||
|
System.out.println("BIN: " + bin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bin;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1420,6 +1420,18 @@ public class SystemParamsOperation {
|
|||||||
return params.getShortCode();
|
return params.getShortCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBinValue(String value) {
|
||||||
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
|
params.setBinValues(value);
|
||||||
|
saveSystemParamsSettings(params);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBinValues() {
|
||||||
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
|
return params.getBinValues();
|
||||||
|
}
|
||||||
|
|
||||||
public String getSecHostMerchantId() {
|
public String getSecHostMerchantId() {
|
||||||
SystemParamsSettings params = getSystemParamsSettings();
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
return params.getSecHostMerchantId();
|
return params.getSecHostMerchantId();
|
||||||
|
|||||||
@ -47,6 +47,8 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
private String ereceiptAddress = "http://receipt-nest.utsmyanmar.com"; //for on prime
|
private String ereceiptAddress = "http://receipt-nest.utsmyanmar.com"; //for on prime
|
||||||
// private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt"; //for uat
|
// private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt"; //for uat
|
||||||
|
|
||||||
|
private String binValues = "";
|
||||||
|
|
||||||
private String terminalName = "";
|
private String terminalName = "";
|
||||||
|
|
||||||
private String terminalCapability = "E0E8C8";
|
private String terminalCapability = "E0E8C8";
|
||||||
@ -324,6 +326,14 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
this.secHostIpAddress = secHostIpAddress;
|
this.secHostIpAddress = secHostIpAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setBinValues(String binValues) {
|
||||||
|
this.binValues = binValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getBinValues() {
|
||||||
|
return this.binValues;
|
||||||
|
}
|
||||||
|
|
||||||
protected void setDisabledMessage(String disabledMessage) {
|
protected void setDisabledMessage(String disabledMessage) {
|
||||||
this.disabledMessage = disabledMessage;
|
this.disabledMessage = disabledMessage;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user