Commit 252af805 authored by Izol's avatar Izol

added reff_no and transaction id

parent 8209f3f3
......@@ -32,6 +32,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
private val coroutineScope = CoroutineScope(Dispatchers.IO)
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
when (call.method) {
"init_library" -> {
this.result = result
......@@ -94,6 +95,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
this.result = result
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US)
val timeNow = Date()
var reffNoInquiry = "TOP_SS${Date().time}"
val outletName = call.argument<String>("outlet_name")
val prevBalance = call.argument<String>("prev_balance")
val cardNumber = call.argument<String>("card_number")
......@@ -106,7 +108,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
"M",
cardNumber!!,
amount!!,
"TOPUP" + System.currentTimeMillis(),
reffNoInquiry!!,
prevBalance!!,
deviceTimestamp = sdf.format(timeNow),
requestTimestamp = sdf.format(timeNow),
......@@ -114,6 +116,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
outletId!!,
persoReff!!,
)
print("inquiry response : $topupInquiryResponse")
result.success(Gson().toJson(topupInquiryResponse))
}
"topup_confirm" -> {
......@@ -126,6 +129,8 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
val paymentProvider = call.argument<String>("payment_provider")
val tid = call.argument<String>("tid")
val paymentNotes = call.argument<String>("payment_notes")
val reffNo = call.argument<String>("reff_no")
val trxId = call.argument<String>("trx_id")
val topupInquiryResponse = _mifareTicketing?.topupConfirm(
cardNumber!!,
......@@ -134,8 +139,8 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
approvalCode!!,
paymentMethod!!,
paymentProvider!!,
"TOP_SS${Date().time}",
"TOP_SS${Date().time}",
trxId!!,
reffNo!!,
tid!!,
paymentNotes!!,
)
......
......@@ -104,6 +104,8 @@ class StartService {
String paymentMethod,
String paymentProvider,
String paymentNotes,
String reffNo,
String trxId
) async {
var result;
try {
......@@ -116,6 +118,8 @@ class StartService {
'payment_method': paymentMethod,
'payment_provider': paymentProvider,
'payment_notes': paymentNotes,
'reff_no': reffNo,
'trx_id': trxId
});
} catch (error) {
result = error.toString();
......
......@@ -113,6 +113,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
name,
lastBalance,
approvalCode,
trxId,
amount,
report,
infoM,
......@@ -127,7 +128,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
var countMax = 0;
String? prevBalance, maskedText, getRegDb;
String subPhone = "";
var trxId = "";
late String globalTrxIdQris;
var message = "Silakan Letakkan Wristband Anda Di Reader";
var success = "Tempel dan tahan wristband anda di reader";
......@@ -346,17 +348,17 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
});
}
Future<Map<String, dynamic>?> _getQris() async {
Future<Map<String, dynamic>?> _getQris(String trxIdQris) async {
Map<String, dynamic>? result;
var body = _getPayLoadQrisCreate();
var body = _getPayLoadQrisCreate(trxIdQris);
print("payload ${body}");
try {
Map<String, dynamic> response = await ServiceApi.requestQris(
body, PreferencesHelper.getString("mid"));
if (response['response']['code'].toString() == "200") {
print(
"message qris succes : ${response['response']['message']}",
);
print("message qris succes : ${response['response']['message']}");
trxIdQris = response['data']['trx_id'];
print("trx_id dalam respons: $trxIdQris");
result = response;
} else {
print("message qris gagal : ${response['response']['message']}");
......@@ -404,7 +406,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
currentDate.isBefore(cardExpDate)) {
print("ini response sukses : ${infoInquiry['response']['message']}");
approvalCode = infoInquiry["data"]["approval_code"].toString();
_showQris(context);
trxId = infoInquiry["data"]["reff_no"].toString();
_showQris(context, trxId);
} else if (currentDate.isAfter(cardExpDate)) {
AwesomeDialog(
context: context,
......@@ -450,7 +453,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
}
}
Future<String> topUpBalance(String approvalCode) async {
Future<String> topUpBalance(String approvalCode, String trxIdQris) async {
var info,
infoMap,
lastBalance,
......@@ -466,9 +469,6 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
print("amount : $amount");
info = await StartService.topupBalanceCard(cardNumber, int.parse(amount));
// String cleanAmount = amount.replaceAll(RegExp(r'[^0-9.]'), ''); // Hapus karakter non-numerik kecuali titik
// int parsedAmount = int.parse(cleanAmount);
// info = await StartService.topupBalanceCard(cardNumber, parsedAmount);
if (info == null) {
tapBalance();
return "";
......@@ -478,18 +478,18 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
lastBalance = infoMap['balance'].toString();
samReport = infoMap['report'].toString();
} else {
// Handle ketika info tidak mengandung data JSON
tapBalance();
return "";
}
paymentMethod = 'Qris';
var infoPaymentNotes = jsonDecode(info);
reffNo = trxId.toString();
var reffNo = trxId.toString();
paymentProvider = "";
paymentNotes = "reffNo: $reffNo\nprovider: $paymentProvider";
// paymentNotes = "reffNo: $reffNo\nprovider: $paymentNotes";
print("ini adalag test hasil payment notes:$paymentNotes");
print("ini adalah transaction id:$trxIdQris");
tid = PreferencesHelper.getString('outletname');
tid = tid.substring(tid.length - 4);
......@@ -504,6 +504,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
String sca =
PreferencesHelper.getString("multioutletservicechargeamount");
String sc = PreferencesHelper.getString("multioutletservicecharge");
String trxIdQrisFromStatus = globalTrxIdQris;
// String metodeBayar = PreferencesHelper.getString("provider");
// String status = "Berhasil";
if (int.parse(lastBalance) > int.parse(prevBalance!)) {
......@@ -516,8 +517,14 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
approvalCode,
paymentMethod,
paymentProvider,
paymentNotes);
paymentNotes,
reffNo,
trxIdQrisFromStatus,
);
print('topUpConfirm result: $result');
print('ini trxIdQrisFromStatus topup confirm: $trxIdQrisFromStatus');
print('ini reffNo topup confirm:$reffNo');
String readerDate,
gateId,
......@@ -604,7 +611,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
isShowingDialog = true;
trxId = "";
reffNo = "";
dataQris == null;
dataQris = null;
isShowingDialog = true;
amount = "";
_showTap();
......@@ -647,7 +654,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
).show().then((value) {
});
isShowingDialog = true;
dataQris == null;
dataQris = null;
amount = "";
StartService.print(
prevInfoCard,
......@@ -674,6 +681,10 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
Map<String, dynamic> response =
await ServiceApi.statusQris(body, PreferencesHelper.getString("mid"));
if (response['response']['code'].toString() == "200") {
String trxIdQris = response['data']['trx_id'].toString();
print("trxIdQris Di Status $trxIdQris");
globalTrxIdQris = trxIdQris;
print("trxIdQris sudah tersimpan: $globalTrxIdQris");
String status = response['data']['status'].toString().toLowerCase();
if (status.contains('paid') ||
status.contains('success') ||
......@@ -721,7 +732,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
String nilaiTap = PreferencesHelper.getString('maxTap');
String newCardNumber = infoMap["cardNumber"];
if (newCardNumber == cardNumber) {
topUpBalance(approvalCode);
topUpBalance(approvalCode, trxId);
} else {
AwesomeDialog(
context: context,
......@@ -951,7 +962,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
});
}
String _getPayLoadQrisCreate() {
String _getPayLoadQrisCreate(String trxIdQris) {
String sc = PreferencesHelper.getString("multioutletservicecharge");
String sca = PreferencesHelper.getString("multioutletservicechargeamount");
String url = PreferencesHelper.getString(kUrlCorePayment);
......@@ -960,9 +971,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
String tid = PreferencesHelper.getString('outletname');
tid = tid.substring(tid.length - 4);
trxId = DateTime.now().millisecondsSinceEpoch.toString();
var request = GeneralPaymentRequest(
trxId.toString(),
trxIdQris,
(int.parse(amount) + int.parse(sca) + int.parse(sc)).toString(),
"get-qr",
PreferencesHelper.getString('provider'),
......@@ -970,7 +980,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
tid,
callbackUrl,
PreferencesHelper.getString('token'),
trxId.toString(),
trxIdQris,
"",
callbackUrl);
return jsonEncode(request);
......@@ -2116,7 +2126,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
});
}
void _showQris(BuildContext context) async {
void _showQris(BuildContext context, String trxId) async {
isProcessCheck = false;
isProcessGet = false;
await showDialog(
......@@ -2124,13 +2134,20 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
context: context,
builder: (context) {
return StatefulBuilder(builder: (context, StateSetter setState) {
Future.delayed(Duration(seconds: 1), () {
print("is process get $isProcessGet");
if (!isProcessGet) {
isProcessGet = true;
_getQris().then((_qris) {
setState(() {
dataQris = null;
});
_getQris(trxId).then((_qris) {
setState(() {
dataQris = _qris;
});
});
}
});
return Container(
padding:
const EdgeInsets.symmetric(horizontal: 150, vertical: 30),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment