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