update refund certificate download logic
This commit is contained in:
parent
e1dacaadcb
commit
062533662f
@ -18,15 +18,20 @@ public class QRPayViewModel extends ViewModel {
|
|||||||
|
|
||||||
private final Repository repository;
|
private final Repository repository;
|
||||||
private final LiveData<List<PayDetail>> refundableHistory;
|
private final LiveData<List<PayDetail>> refundableHistory;
|
||||||
|
private final RefundCertificateManager refundCertificateManager;
|
||||||
|
|
||||||
private final MutableLiveData<PayDetail> _payDetail = new MutableLiveData<>();
|
private final MutableLiveData<PayDetail> _payDetail = new MutableLiveData<>();
|
||||||
public LiveData<PayDetail> payDetail = _payDetail;
|
public LiveData<PayDetail> payDetail = _payDetail;
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public QRPayViewModel(Repository repository){
|
public QRPayViewModel(
|
||||||
|
Repository repository,
|
||||||
|
RefundCertificateManager refundCertificateManager
|
||||||
|
){
|
||||||
this.repository = repository;
|
this.repository = repository;
|
||||||
this.refundableHistory = repository.getRefundableQRHistory();
|
this.refundableHistory = repository.getRefundableQRHistory();
|
||||||
|
this.refundCertificateManager = refundCertificateManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<PayDetail>> getRefundableQrHistory(){
|
public LiveData<List<PayDetail>> getRefundableQrHistory(){
|
||||||
@ -37,6 +42,10 @@ public class QRPayViewModel extends ViewModel {
|
|||||||
_payDetail.setValue(payDetail);
|
_payDetail.setValue(payDetail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void checkCertificateFiles(){
|
||||||
|
refundCertificateManager.updateCertificateFiles();
|
||||||
|
}
|
||||||
|
|
||||||
public Runnable onCancel;
|
public Runnable onCancel;
|
||||||
public Runnable onConfirm;
|
public Runnable onConfirm;
|
||||||
}
|
}
|
||||||
@ -80,6 +80,7 @@ public class QRRefundFragment extends DataBindingFragment {
|
|||||||
recyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
|
recyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
|
||||||
recyclerView.setAdapter(adapter);
|
recyclerView.setAdapter(adapter);
|
||||||
emptyStateView = view.findViewById(R.id.emptyStateSectionRefund);
|
emptyStateView = view.findViewById(R.id.emptyStateSectionRefund);
|
||||||
|
qrPayViewModel.checkCertificateFiles();
|
||||||
observeData();
|
observeData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,71 @@
|
|||||||
|
package com.utsmm.kbz.ui.qr_pay;
|
||||||
|
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.utsmm.kbz.util.DownloadUtil;
|
||||||
|
import com.utsmyanmar.baselib.util.EReceiptHelper;
|
||||||
|
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||||
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
public class RefundCertificateManager {
|
||||||
|
|
||||||
|
private static final String TAG = RefundCertificateManager.class.getSimpleName();
|
||||||
|
private static final String CERTIFICATE_FILENAME = "refund_client_certificate";
|
||||||
|
private static final String CERTIFICATE_CLIENT = "refund_client_certificate";
|
||||||
|
// String tmsAddress = SystemParamsOperation.getInstance().getTmsAddress(); //for uat
|
||||||
|
String tmsAddress = SystemParamsOperation.getInstance().getTmsAddress() + "/api/v1";
|
||||||
|
String downloadAddress = tmsAddress + "/file/download?filePath=";
|
||||||
|
String certificate_url = SystemParamsOperation.getInstance().getCertificateUrl();
|
||||||
|
|
||||||
|
String certificate_client = SystemParamsOperation.getInstance().getCertificateClientUrl();
|
||||||
|
private static final String E_RECEIPT_SECRET = com.utsmyanmar.baselib.BuildConfig.ERECEIPT_SECRET;
|
||||||
|
String timestamp = String.valueOf(System.currentTimeMillis());
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public RefundCertificateManager(){}
|
||||||
|
public void updateCertificateFiles(){
|
||||||
|
|
||||||
|
String signature = generateSignature(timestamp);
|
||||||
|
|
||||||
|
DownloadUtil.downloadCertificateRx(
|
||||||
|
downloadAddress + certificate_url,
|
||||||
|
CERTIFICATE_FILENAME,
|
||||||
|
timestamp,
|
||||||
|
signature,
|
||||||
|
path -> {
|
||||||
|
if(path != null){
|
||||||
|
SystemParamsOperation.getInstance().setCertClientFilePath(path);
|
||||||
|
LogUtil.d(TAG, "Cert file path saved in SystemParams => " + path);
|
||||||
|
}else{
|
||||||
|
LogUtil.e(TAG, "Failed to download certificate file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
DownloadUtil.downloadCertificateRx(
|
||||||
|
downloadAddress + certificate_client,
|
||||||
|
CERTIFICATE_CLIENT,
|
||||||
|
timestamp,
|
||||||
|
signature,
|
||||||
|
path -> {
|
||||||
|
if(path != null){
|
||||||
|
SystemParamsOperation.getInstance().setCertClientFilePath(path);
|
||||||
|
LogUtil.d(TAG, "Cert client file path saved in SystemParams => " + path);
|
||||||
|
}else{
|
||||||
|
LogUtil.e(TAG, "Failed to download certificate client file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String generateSignature(String timestamp) {
|
||||||
|
LogUtil.d(TAG, "timestamp " + timestamp);
|
||||||
|
String bodyString = "{}";
|
||||||
|
String dataToHash = bodyString + E_RECEIPT_SECRET + timestamp;
|
||||||
|
return EReceiptHelper.sha256(dataToHash);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -625,51 +625,20 @@ public class TMSSetupsImpl implements TMSSetups{
|
|||||||
SystemParamsOperation.getInstance().setQrRefundEnable(parseBoolean(data));
|
SystemParamsOperation.getInstance().setQrRefundEnable(parseBoolean(data));
|
||||||
} else if (TextUtils.equals(name, "tpdu_value")){
|
} else if (TextUtils.equals(name, "tpdu_value")){
|
||||||
SystemParamsOperation.getInstance().setTpduValue(data);
|
SystemParamsOperation.getInstance().setTpduValue(data);
|
||||||
} else if (TextUtils.equals(name, "certificate_file")){
|
}
|
||||||
|
else if(TextUtils.equals(name, "certificate_file")){
|
||||||
if (TextUtils.isEmpty(data)) {
|
if (TextUtils.isEmpty(data)) {
|
||||||
LogUtil.e(TAG, "certificate_file value NULL from TMS");
|
LogUtil.e(TAG, "certificate_file value NULL from TMS");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
SystemParamsOperation.getInstance().setCertificateUrl(data);
|
||||||
String tmsAddress = SystemParamsOperation.getInstance().getTmsAddress();
|
}
|
||||||
if (TextUtils.isEmpty(tmsAddress)) {
|
else if(TextUtils.equals(name, "certificate_client")){
|
||||||
LogUtil.e(TAG, "TMS address is NULL — cannot download certificate");
|
|
||||||
continue; // or return;
|
|
||||||
}
|
|
||||||
// String url = tmsAddress+"/file/download?filePath="+data;
|
|
||||||
String url = tmsAddress+"/api/v1/file/download?filePath="+data; //for local
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DownloadUtil.downloadCertificateRx(url, "certificate_file", timestamp, signature, path -> {
|
|
||||||
if(path != null){
|
|
||||||
SystemParamsOperation.getInstance().setCertFilePath(path);
|
|
||||||
LogUtil.d(TAG, "Cert file path saved in SystemParams => " + path);
|
|
||||||
}else{
|
|
||||||
LogUtil.e(TAG, "Failed to download certificate file");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (TextUtils.equals(name, "certificate_client")){
|
|
||||||
if (TextUtils.isEmpty(data)) {
|
if (TextUtils.isEmpty(data)) {
|
||||||
LogUtil.e(TAG, "certificate_file value NULL from TMS");
|
LogUtil.e(TAG, "certificate_file value NULL from TMS");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
SystemParamsOperation.getInstance().setCertificateClientUrl(data);
|
||||||
String tmsAddress = SystemParamsOperation.getInstance().getTmsAddress();
|
|
||||||
if (TextUtils.isEmpty(tmsAddress)) {
|
|
||||||
LogUtil.e(TAG, "TMS address is NULL — cannot download certificate");
|
|
||||||
continue; // or return;
|
|
||||||
}
|
|
||||||
// String url = tmsAddress+"/file/download?filePath="+data;
|
|
||||||
String url = tmsAddress+"/api/v1/file/download?filePath="+data; //for local
|
|
||||||
DownloadUtil.downloadCertificateRx(url, "certificate_client" , timestamp, signature, path -> {
|
|
||||||
if(path != null){
|
|
||||||
SystemParamsOperation.getInstance().setCertClientFilePath(path);
|
|
||||||
LogUtil.d(TAG, "Cert client file path saved in SystemParams => " + path);
|
|
||||||
}else{
|
|
||||||
LogUtil.e(TAG, "Failed to download certificate client file");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else if (TextUtils.equals(name, "certificate_password")) {
|
else if (TextUtils.equals(name, "certificate_password")) {
|
||||||
SystemParamsOperation.getInstance().setCertificatePassword(data);
|
SystemParamsOperation.getInstance().setCertificatePassword(data);
|
||||||
|
|||||||
@ -389,6 +389,7 @@ public class NetworkModule {
|
|||||||
//@Reusable
|
//@Reusable
|
||||||
//@KPayRefundRetrofit
|
//@KPayRefundRetrofit
|
||||||
@Provides
|
@Provides
|
||||||
|
@Singleton
|
||||||
@KPayRefundRetrofit
|
@KPayRefundRetrofit
|
||||||
public Retrofit provideKPayRefundRetrofit(@ApplicationContext Context context) {
|
public Retrofit provideKPayRefundRetrofit(@ApplicationContext Context context) {
|
||||||
|
|
||||||
|
|||||||
@ -29,5 +29,5 @@ android.useAndroidX=true
|
|||||||
android.nonTransitiveRClass=true
|
android.nonTransitiveRClass=true
|
||||||
# Disable Android Studio's Jetifier to avoid conflicts
|
# Disable Android Studio's Jetifier to avoid conflicts
|
||||||
android.enableJetifier=false
|
android.enableJetifier=false
|
||||||
#ERECEIPT_SECRET=y812J21lhha11OS
|
ERECEIPT_SECRET=y812J21lhha11OS
|
||||||
ERECEIPT_SECRET=8f4df38d1001bcc4620b5c736c66a03eef4653eb3ba31105faa2f2ee294c4a46
|
#ERECEIPT_SECRET=8f4df38d1001bcc4620b5c736c66a03eef4653eb3ba31105faa2f2ee294c4a46
|
||||||
|
|||||||
@ -1698,4 +1698,26 @@ public class SystemParamsOperation {
|
|||||||
SystemParamsSettings paramsSettings = getSystemParamsSettings();
|
SystemParamsSettings paramsSettings = getSystemParamsSettings();
|
||||||
return paramsSettings.getMerchantAddress3();
|
return paramsSettings.getMerchantAddress3();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCertificateUrl(String url) {
|
||||||
|
SystemParamsSettings paramsSettings = getSystemParamsSettings();
|
||||||
|
paramsSettings.setCertificateUrl(url);
|
||||||
|
saveSystemParamsSettings(paramsSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCertificateUrl(){
|
||||||
|
SystemParamsSettings paramsSettings = getSystemParamsSettings();
|
||||||
|
return paramsSettings.getCertificateUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCertificateClientUrl() {
|
||||||
|
SystemParamsSettings paramsSettings = getSystemParamsSettings();
|
||||||
|
return paramsSettings.getCertificateClientUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCertificateClientUrl(String url) {
|
||||||
|
SystemParamsSettings paramsSettings = getSystemParamsSettings();
|
||||||
|
paramsSettings.setCertificateClientUrl(url);
|
||||||
|
saveSystemParamsSettings(paramsSettings);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -255,6 +255,8 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
private String certClientFilePath = "";
|
private String certClientFilePath = "";
|
||||||
private String certificatePassword = "";
|
private String certificatePassword = "";
|
||||||
private String terminalIdForEreceipt = "";
|
private String terminalIdForEreceipt = "";
|
||||||
|
private String certificateUrl = "";
|
||||||
|
private String certificateClientUrl = "";
|
||||||
|
|
||||||
public boolean isQrPartialRefundEnable(){
|
public boolean isQrPartialRefundEnable(){
|
||||||
return qrPartialRefundEnable;
|
return qrPartialRefundEnable;
|
||||||
@ -1038,6 +1040,22 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
return secHostId;
|
return secHostId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCertificateUrl(String url) {
|
||||||
|
this.certificateUrl = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCertificateUrl(){
|
||||||
|
return certificateUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCertificateClientUrl() {
|
||||||
|
return certificateClientUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCertificateClientUrl(String url) {
|
||||||
|
this.certificateClientUrl = url;
|
||||||
|
}
|
||||||
|
|
||||||
/* // 流水号起始
|
/* // 流水号起始
|
||||||
private String serialNum = Configs.getInstance().SERIAL_NUM();
|
private String serialNum = Configs.getInstance().SERIAL_NUM();
|
||||||
// 批次号起始
|
// 批次号起始
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user