Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
Dolan SelfService Topup
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Faizol
Dolan SelfService Topup
Commits
252af805
Commit
252af805
authored
Aug 15, 2023
by
Izol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added reff_no and transaction id
parent
8209f3f3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
26 deletions
+52
-26
MainActivity.kt
...rc/main/kotlin/com/example/self_service_3/MainActivity.kt
+8
-3
reader_flutter.dart
lib/reader/reader_flutter.dart
+4
-0
home_page.dart
lib/ui/pages/home_page.dart
+40
-23
No files found.
android/app/src/main/kotlin/com/example/self_service_3/MainActivity.kt
View file @
252af805
...
...
@@ -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
!!
,
)
...
...
lib/reader/reader_flutter.dart
View file @
252af805
...
...
@@ -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
();
...
...
lib/ui/pages/home_page.dart
View file @
252af805
...
...
@@ -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
\n
provider:
$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
()
,
trxId
Qris
,
(
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
()
,
trxId
Qris
,
""
,
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
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment