Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
meser
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
Muhammad Suryono
meser
Commits
28553c19
Commit
28553c19
authored
Sep 04, 2020
by
Muhammad Suryono
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update in main and service
parent
37a68ec9
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
843 additions
and
267 deletions
+843
-267
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-0
CartActivity.java
app/src/main/java/com/yono/messeripos/CartActivity.java
+2
-2
FormProductActivity.java
...rc/main/java/com/yono/messeripos/FormProductActivity.java
+6
-0
MainActivity.java
app/src/main/java/com/yono/messeripos/MainActivity.java
+2
-2
MethodePayment.java
app/src/main/java/com/yono/messeripos/MethodePayment.java
+87
-0
PaymentActivity.java
app/src/main/java/com/yono/messeripos/PaymentActivity.java
+212
-213
ScannerNfc.java
app/src/main/java/com/yono/messeripos/ScannerNfc.java
+279
-0
TransactionDetail.java
app/src/main/java/com/yono/messeripos/TransactionDetail.java
+16
-0
PaymentAdapter.java
...main/java/com/yono/messeripos/adapter/PaymentAdapter.java
+0
-7
UsersService.java
...in/java/com/yono/messeripos/api/service/UsersService.java
+4
-0
ForgotPasswordModels.java
...java/com/yono/messeripos/models/ForgotPasswordModels.java
+35
-0
Utils.java
app/src/main/java/com/yono/messeripos/utils/Utils.java
+10
-0
ic_bank_transfer.xml
app/src/main/res/drawable/ic_bank_transfer.xml
+24
-0
ic_baseline_chevron_right_24.xml
app/src/main/res/drawable/ic_baseline_chevron_right_24.xml
+5
-0
ic_money.xml
app/src/main/res/drawable/ic_money.xml
+30
-0
ic_nfc.xml
app/src/main/res/drawable/ic_nfc.xml
+9
-0
nfcgif.gif
app/src/main/res/drawable/nfcgif.gif
+0
-0
activity_payment.xml
app/src/main/res/layout/activity_payment.xml
+1
-35
methode_payment.xml
app/src/main/res/layout/methode_payment.xml
+106
-8
nfc_scanner.xml
app/src/main/res/layout/nfc_scanner.xml
+12
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
28553c19
...
...
@@ -20,6 +20,9 @@
android:roundIcon=
"@mipmap/ic_launcher_new_icon"
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme.appbar"
>
<activity
android:name=
".MethodePayment"
/>
<activity
android:name=
".ScannerNfc"
/>
<activity
android:name=
".TransactionDetail"
/>
<activity
android:name=
".ForgotPasswordActivity"
android:windowSoftInputMode=
"adjustResize"
></activity>
<activity
android:name=
".RegisterActivity"
/>
...
...
app/src/main/java/com/yono/messeripos/CartActivity.java
View file @
28553c19
...
...
@@ -217,10 +217,10 @@ public class CartActivity extends AppCompatActivity {
Log
.
i
(
"FROM_CHECKOUT_INTENT"
,
"onClick: "
+
utils
.
convertGson
(
paymentsModelsIntent
));
if
(
paymentsModelsIntent
!=
null
){
Log
.
i
(
"TAGAAAAA"
,
"onClick: "
+
utils
.
convertGson
(
paymentsModelsIntent
));
startActivity
(
new
Intent
(
CartActivity
.
this
,
PaymentActivity
.
class
)
startActivity
(
new
Intent
(
CartActivity
.
this
,
MethodePayment
.
class
)
.
putExtra
(
CODE_SEND_CHECKOUT_HISTORY
,
paymentsModelsIntent
));
}
else
{
startActivity
(
new
Intent
(
CartActivity
.
this
,
PaymentActivity
.
class
));
startActivity
(
new
Intent
(
CartActivity
.
this
,
MethodePayment
.
class
));
finish
();
}
}
...
...
app/src/main/java/com/yono/messeripos/FormProductActivity.java
View file @
28553c19
...
...
@@ -4,9 +4,11 @@ import android.Manifest;
import
android.annotation.SuppressLint
;
import
android.app.AlertDialog
;
import
android.app.ProgressDialog
;
import
android.content.Context
;
import
android.content.CursorLoader
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.database.Cursor
;
import
android.net.Uri
;
import
android.os.Build
;
...
...
@@ -78,6 +80,7 @@ public class FormProductActivity extends AppCompatActivity {
ProductModels
productModelsIntent
;
List
<
Integer
>
categorySelect
=
new
ArrayList
<>();
FormCategory
formCategory
;
SharedPreferences
sharedPreferences
;
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
N
)
@Override
...
...
@@ -92,6 +95,7 @@ public class FormProductActivity extends AppCompatActivity {
progressDialog
=
new
ProgressDialog
(
FormProductActivity
.
this
);
progressDialog
.
setMessage
(
"Loading..."
);
progressDialog
.
show
();
sharedPreferences
=
getSharedPreferences
(
MainActivity
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
Window
w
=
getWindow
();
...
...
@@ -101,6 +105,7 @@ public class FormProductActivity extends AppCompatActivity {
productModelsIntent
=
getIntent
().
getParcelableExtra
(
MainActivity
.
DATA_PRODUCT
);
formCategory
=
new
FormCategory
();
MaterialToolbar
toolbars
=
findViewById
(
R
.
id
.
topAppBarForm
);
setSupportActionBar
(
toolbars
);
...
...
@@ -268,6 +273,7 @@ public class FormProductActivity extends AppCompatActivity {
.
setPositiveButton
(
"Oke"
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
MainActivity
.
status_update
=
false
;
startActivity
(
new
Intent
(
FormProductActivity
.
this
,
MainActivity
.
class
));
finish
();
}
...
...
app/src/main/java/com/yono/messeripos/MainActivity.java
View file @
28553c19
...
...
@@ -149,7 +149,7 @@ public class MainActivity extends AppCompatActivity {
}
private
void
punyaAbiCoba
()
{
// Log.i(TAG, "punyaAbiCoba: "+utils.get);
}
private
void
toolbarSetOnItemClicked
()
{
...
...
@@ -159,7 +159,7 @@ public class MainActivity extends AppCompatActivity {
int
id
=
item
.
getItemId
();
if
(
id
==
R
.
id
.
menu_cart
)
{
if
(
checkout
){
startActivity
(
new
Intent
(
getApplicationContext
(),
PaymentActivity
.
class
));
startActivity
(
new
Intent
(
getApplicationContext
(),
MethodePayment
.
class
));
}
else
{
startActivity
(
new
Intent
(
getApplicationContext
(),
CartActivity
.
class
));
}
...
...
app/src/main/java/com/yono/messeripos/MethodePayment.java
0 → 100644
View file @
28553c19
package
com
.
yono
.
messeripos
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.nfc.NfcAdapter
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.PersistableBundle
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatActivity
;
import
com.google.android.material.appbar.MaterialToolbar
;
import
com.google.android.material.card.MaterialCardView
;
import
com.yono.messeripos.models.PaymentsModels
;
public
class
MethodePayment
extends
AppCompatActivity
{
SharedPreferences
sharedPreferences
;
PaymentsModels
paymentsModelsIntent
,
paymentsModels
;
MaterialCardView
mcCash
,
mcBank
,
mcNfc
;
BottomSheets
bottomSheet
;
NfcAdapter
nfcAdapter
;
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
methode_payment
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
Window
w
=
getWindow
();
w
.
setFlags
(
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
,
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
);
}
nfcAdapter
=
NfcAdapter
.
getDefaultAdapter
(
this
);
mcCash
=
findViewById
(
R
.
id
.
cvCash
);
mcBank
=
findViewById
(
R
.
id
.
cvBankTransfer
);
mcNfc
=
findViewById
(
R
.
id
.
cvNFC
);
sharedPreferences
=
getSharedPreferences
(
MainActivity
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
paymentsModelsIntent
=
getIntent
().
getParcelableExtra
(
CartActivity
.
CODE_SEND_CHECKOUT_HISTORY
);
paymentsModels
=
new
PaymentsModels
();
MaterialToolbar
toolbars
=
findViewById
(
R
.
id
.
appBarPaymentMethode
);
setSupportActionBar
(
toolbars
);
getSupportActionBar
().
setTitle
(
"Methode Payment"
);
if
(
nfcAdapter
==
null
){
mcNfc
.
setEnabled
(
false
);
}
else
{
mcNfc
.
setEnabled
(
true
);
}
mcCash
.
setOnClickListener
(
view
->
cash
());
mcBank
.
setOnClickListener
(
view
->
bank
());
mcNfc
.
setOnClickListener
(
view
->
nfc
());
}
private
void
nfc
()
{
startActivity
(
new
Intent
(
MethodePayment
.
this
,
ScannerNfc
.
class
));
}
private
void
bank
()
{
startActivity
(
new
Intent
(
MethodePayment
.
this
,
PaymentActivity
.
class
));
}
private
void
cash
()
{
if
(
paymentsModelsIntent
==
null
){
bottomSheet
=
new
BottomSheets
(
paymentsModels
,
0
);
bottomSheet
.
setCancelable
(
true
);
bottomSheet
.
show
(
getSupportFragmentManager
(),
"ModalBottomSheet"
);
}
else
{
bottomSheet
=
new
BottomSheets
(
paymentsModelsIntent
,
1
);
bottomSheet
.
setCancelable
(
true
);
bottomSheet
.
show
(
getSupportFragmentManager
(),
"ModalBottomSheet"
);
}
}
}
app/src/main/java/com/yono/messeripos/PaymentActivity.java
View file @
28553c19
...
...
@@ -62,7 +62,6 @@ public class PaymentActivity extends AppCompatActivity {
private
Utils
utils
=
new
Utils
();
private
RecyclerView
recyclerView
;
private
CheckoutAdapter
checkoutAdapter
;
private
TextView
grandTotal
;
public
static
BottomSheets
bottomSheet
;
public
static
PaymentCreated
paymentCreated
;
public
static
SharedPreferences
sharedPreferences
;
...
...
@@ -84,73 +83,79 @@ public class PaymentActivity extends AppCompatActivity {
w
.
setFlags
(
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
,
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
);
}
recyclerView
=
findViewById
(
R
.
id
.
rvPayment
);
sharedPreferences
=
getSharedPreferences
(
MainActivity
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
paymentsModelsIntent
=
getIntent
().
getParcelableExtra
(
CartActivity
.
CODE_SEND_CHECKOUT_HISTORY
);
paymentsModels
=
new
PaymentsModels
();
checkoutAdapter
=
new
CheckoutAdapter
();
recyclerView
=
findViewById
(
R
.
id
.
rvItem
);
grandTotal
=
findViewById
(
R
.
id
.
grand_total
);
progressDialog
=
new
ProgressDialog
(
PaymentActivity
.
this
);
progressDialog
.
setMessage
(
"Loading..."
);
progressDialog
.
setCancelable
(
false
);
MaterialToolbar
toolbars
=
findViewById
(
R
.
id
.
appbar
);
setSupportActionBar
(
toolbars
);
getSupportActionBar
().
setDisplayHomeAsUpEnabled
(
true
);
getSupportActionBar
().
setDisplayShowHomeEnabled
(
true
);
getSupportActionBar
().
setTitle
(
"Bank Transfer"
);
toolbars
.
setNavigationOnClickListener
(
view
->
onBackPressed
());
DividerItemDecoration
dividerItemDecoration
=
new
DividerItemDecoration
(
this
,
DividerItemDecoration
.
VERTICAL
);
mainViewModels
=
new
ViewModelProvider
(
PaymentActivity
.
this
).
get
(
MainViewModelsCart
.
class
);
Log
.
i
(
"IN_HISTORY"
,
"onCreate: "
+
utils
.
convertGson
(
paymentsModelsIntent
));
if
(
paymentsModelsIntent
==
null
){
mainViewModels
.
getCartById
(
sharedPreferences
.
getString
(
ORDER_ID
,
""
)).
observe
(
this
,
new
Observer
<
List
<
ProductCartModels
>>()
{
@Override
public
void
onChanged
(
List
<
ProductCartModels
>
productCartModels
)
{
String
js
=
new
Gson
().
toJson
(
productCartModels
);
Log
.
i
(
"On payment"
,
"onChanged: "
+
js
);
for
(
ProductCartModels
pd
:
productCartModels
){
total
=
total
+
pd
.
getPrice_orders
()*
pd
.
getQuantity_orders
();
}
if
(
productCartModels
.
size
()
!=
0
){
getSupportActionBar
().
setTitle
(
productCartModels
.
get
(
0
).
getId_orders
());
paymentsModels
.
setOrderId
(
productCartModels
.
get
(
0
).
getId_orders
());
paymentsModels
.
setGrossAmount
(
total
);
checkoutAdapter
.
setCheckoutAdapter
(
PaymentActivity
.
this
,
productCartModels
);
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
PaymentActivity
.
this
,
RecyclerView
.
VERTICAL
,
false
));
recyclerView
.
setAdapter
(
checkoutAdapter
);
recyclerView
.
addItemDecoration
(
dividerItemDecoration
);
grandTotal
.
setText
(
utils
.
convertPrice
(
"Rp. "
,
total
));
}
}
});
}
else
{
mainViewModels
.
getCartById
(
paymentsModelsIntent
.
getOrderId
()).
observe
(
this
,
new
Observer
<
List
<
ProductCartModels
>>()
{
@Override
public
void
onChanged
(
List
<
ProductCartModels
>
productCartModels
)
{
String
js
=
new
Gson
().
toJson
(
productCartModels
);
Log
.
i
(
"On Intent_CHANGE"
,
"onChanged: "
+
paymentsModelsIntent
.
getOrderId
());
for
(
ProductCartModels
pd
:
productCartModels
){
total
=
total
+
pd
.
getPrice_orders
()*
pd
.
getQuantity_orders
();
}
if
(
productCartModels
.
size
()
!=
0
){
getSupportActionBar
().
setTitle
(
productCartModels
.
get
(
0
).
getId_orders
());
paymentsModelsIntent
.
setOrderId
(
productCartModels
.
get
(
0
).
getId_orders
());
paymentsModelsIntent
.
setGrossAmount
(
total
);
checkoutAdapter
.
setCheckoutAdapter
(
PaymentActivity
.
this
,
productCartModels
);
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
PaymentActivity
.
this
,
RecyclerView
.
VERTICAL
,
false
));
recyclerView
.
setAdapter
(
checkoutAdapter
);
recyclerView
.
addItemDecoration
(
dividerItemDecoration
);
grandTotal
.
setText
(
utils
.
convertPrice
(
"Rp. "
,
total
));
}
}
});
}
//
if (paymentsModelsIntent == null){
//
mainViewModels.getCartById(sharedPreferences.getString(ORDER_ID, "")).observe(this, new Observer<List<ProductCartModels>>() {
//
@Override
//
public void onChanged(List<ProductCartModels> productCartModels) {
//
String js = new Gson().toJson(productCartModels);
//
Log.i("On payment", "onChanged: "+js);
//
//
for (ProductCartModels pd : productCartModels){
//
total = total + pd.getPrice_orders()*pd.getQuantity_orders();
//
}
//
//
if (productCartModels.size() !=0){
//
getSupportActionBar().setTitle(productCartModels.get(0).getId_orders());
//
paymentsModels.setOrderId(productCartModels.get(0).getId_orders());
//
paymentsModels.setGrossAmount(total);
//
checkoutAdapter.setCheckoutAdapter(PaymentActivity.this, productCartModels);
//
recyclerView.setLayoutManager(new LinearLayoutManager(PaymentActivity.this, RecyclerView.VERTICAL, false));
//
recyclerView.setAdapter(checkoutAdapter);
//
recyclerView.addItemDecoration(dividerItemDecoration);
////
grandTotal.setText(utils.convertPrice("Rp. ", total));
//
}
//
}
//
});
//
}else{
//
mainViewModels.getCartById(paymentsModelsIntent.getOrderId()).observe(this, new Observer<List<ProductCartModels>>() {
//
@Override
//
public void onChanged(List<ProductCartModels> productCartModels) {
//
String js = new Gson().toJson(productCartModels);
//
Log.i("On Intent_CHANGE", "onChanged: "+paymentsModelsIntent.getOrderId());
//
//
for (ProductCartModels pd : productCartModels){
//
total = total + pd.getPrice_orders()*pd.getQuantity_orders();
//
}
//
//
if (productCartModels.size() != 0){
//
getSupportActionBar().setTitle(productCartModels.get(0).getId_orders());
//
paymentsModelsIntent.setOrderId(productCartModels.get(0).getId_orders());
//
paymentsModelsIntent.setGrossAmount(total);
//
checkoutAdapter.setCheckoutAdapter(PaymentActivity.this, productCartModels);
//
recyclerView.setLayoutManager(new LinearLayoutManager(PaymentActivity.this, RecyclerView.VERTICAL, false));
//
recyclerView.setAdapter(checkoutAdapter);
//
recyclerView.addItemDecoration(dividerItemDecoration);
////
grandTotal.setText(utils.convertPrice("Rp. ", total));
//
}
//
//
}
//
});
//
}
bottomSheet
=
new
BottomSheets
(
paymentsModels
,
0
);
...
...
@@ -159,11 +164,11 @@ public class PaymentActivity extends AppCompatActivity {
LinearLayoutManager
llm
=
new
LinearLayoutManager
(
this
,
RecyclerView
.
VERTICAL
,
false
);
rvPayment
.
setLayoutManager
(
llm
);
paymentResponses
.
add
(
new
PaymentResponse
(
"https://i.ibb.co/5c40mWX/cash-logo.png"
,
"cash"
));
//
paymentResponses.add(new PaymentResponse("https://i.ibb.co/5c40mWX/cash-logo.png", "cash"));
paymentResponses
.
add
(
new
PaymentResponse
(
"https://i.ibb.co/XCsdmmT/Bank-Mandiri-logo.png"
,
"mandiri"
));
paymentResponses
.
add
(
new
PaymentResponse
(
"https://i.ibb.co/2n65nCT/bca-bank-central-asia.png"
,
"bca"
));
paymentResponses
.
add
(
new
PaymentResponse
(
"https://i.ibb.co/RjJQT9K/BNI-logo.png"
,
"bni"
));
paymentResponses
.
add
(
new
PaymentResponse
(
"https://i.ibb.co/n1V3ZCf/Whats-App-Image-2020-09-01-at-14-50-13.jpg"
,
"nfc"
));
//
paymentResponses.add(new PaymentResponse("https://i.ibb.co/n1V3ZCf/Whats-App-Image-2020-09-01-at-14-50-13.jpg", "nfc"));
PaymentAdapter
adapter
=
new
PaymentAdapter
(
paymentResponses
,
this
);
rvPayment
.
setAdapter
(
adapter
);
...
...
@@ -172,170 +177,164 @@ public class PaymentActivity extends AppCompatActivity {
adapter
.
setListener
(
paymentResponse
->
{
methodPay
=
paymentResponse
.
getBank
();
btnPay
.
setEnabled
(
true
);
startActivity
(
new
Intent
(
PaymentActivity
.
this
,
TransactionDetail
.
class
));
// btnPay.setEnabled(true);
});
btnPay
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
if
(
methodPay
.
equals
(
"cash"
)){
paymentsModels
.
setPaymentType
(
"cash"
);
paymentsModels
.
setTransactionStatus
(
"success"
);
paymentsModels
.
setTransaction_id
(
utils
.
timeStamp
()+
"-MES"
);
paymentsModels
.
setTransaction_time
(
utils
.
timeStamp
());
Log
.
i
(
"CASH"
,
"onClick: "
+
utils
.
convertGson
(
paymentsModels
));
if
(
paymentsModelsIntent
==
null
){
bottomSheet
=
new
BottomSheets
(
paymentsModels
,
0
);
bottomSheet
.
setCancelable
(
true
);
bottomSheet
.
show
(
getSupportFragmentManager
(),
"ModalBottomSheet"
);
}
else
{
bottomSheet
=
new
BottomSheets
(
paymentsModelsIntent
,
1
);
bottomSheet
.
setCancelable
(
true
);
bottomSheet
.
show
(
getSupportFragmentManager
(),
"ModalBottomSheet"
);
}
}
else
{
progressDialog
.
show
();
progressDialog
.
setCancelable
(
false
);
// bottomSheetBank.setState(BottomSheetBehavior.STATE_EXPANDED);
// btnPay.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// if (methodPay.equals("cash")){
// paymentsModels.setPaymentType("cash");
// paymentsModels.setTransactionStatus("success");
// paymentsModels.setTransaction_id(utils.timeStamp()+"-MES");
// paymentsModels.setTransaction_time(utils.timeStamp());
// Log.i("CASH", "onClick: "+utils.convertGson(paymentsModels));
//
// if (paymentsModelsIntent == null){
// bottomSheet = new BottomSheets(paymentsModels,0);
// bottomSheet.setCancelable(true);
// bottomSheet.show(getSupportFragmentManager(),
// "ModalBottomSheet");
// }else{
// bottomSheet = new BottomSheets(paymentsModelsIntent,1);
// bottomSheet.setCancelable(true);
// bottomSheet.show(getSupportFragmentManager(),
// "ModalBottomSheet");
// }
//
// }else{
//
// progressDialog.show();
Client
client
=
new
Client
();
paymentsModels
.
setPaymentType
(
"bank_transfer"
);
paymentsModels
.
setBank
(
methodPay
);
paymentsModels
.
setOrderIdUpdate
(
sharedPreferences
.
getString
(
ORDER_ID
,
""
));
paymentsModels
.
setOrderId
(
sharedPreferences
.
getString
(
ORDER_ID
,
""
));
paymentsModels
.
setTransactionStatus
(
"success"
);
paymentsModels
.
setTransaction_id
(
utils
.
timeStamp
()+
"-MES"
);
paymentsModels
.
setTransaction_time
(
utils
.
timeStamp
());
Log
.
i
(
"BANK"
,
"onClick: "
+
utils
.
convertGson
(
paymentsModels
));
PaymentService
paymentService
=
client
.
Client
(
PaymentService
.
class
);
if
(
paymentsModelsIntent
==
null
){
paymentService
.
postFromCart
(
paymentsModels
).
enqueue
(
new
Callback
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>
call
,
Response
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>
response
)
{
Log
.
i
(
"Paymen_bank"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
if
(
response
.
body
()
!=
null
){
SharedPreferences
.
Editor
editor
=
sharedPreferences
.
edit
();
editor
.
putString
(
ORDER_ID
,
""
);
editor
.
putBoolean
(
CHECKOUT
,
false
);
progressDialog
.
dismiss
();
if
(
editor
.
commit
()){
paymentCreated
=
new
PaymentCreated
();
paymentCreated
.
setCancelable
(
false
);
paymentCreated
.
show
(
getSupportFragmentManager
(),
"paymentCreated"
);
}
}
else
{
progressDialog
.
dismiss
();
new
AlertDialog
.
Builder
(
PaymentActivity
.
this
)
.
setTitle
(
"Payment Order"
)
.
setMessage
(
"Erorr save!"
).
show
();
}
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>
call
,
Throwable
t
)
{
progressDialog
.
dismiss
();
new
AlertDialog
.
Builder
(
PaymentActivity
.
this
)
.
setCancelable
(
false
)
.
setTitle
(
"Payment Order"
)
.
setMessage
(
"Add new payment failed, try again!"
).
show
();
}
});
}
else
{
paymentService
.
postFromCartPending
(
paymentsModelsIntent
.
getOrderId
(),
paymentsModelsIntent
).
enqueue
(
new
Callback
<
DataResponse
>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
>
call
,
Response
<
DataResponse
>
response
)
{
Log
.
i
(
"Paymen_bank_sa"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
if
(
response
.
body
()
!=
null
){
SharedPreferences
.
Editor
editor
=
sharedPreferences
.
edit
();
editor
.
putString
(
ORDER_ID
,
""
);
editor
.
putBoolean
(
CHECKOUT
,
false
);
progressDialog
.
dismiss
();
if
(
editor
.
commit
()){
paymentCreated
=
new
PaymentCreated
();
paymentCreated
.
setCancelable
(
false
);
paymentCreated
.
show
(
getSupportFragmentManager
(),
"QRCode"
);
}
}
else
{
progressDialog
.
dismiss
();
new
AlertDialog
.
Builder
(
PaymentActivity
.
this
)
.
setTitle
(
"Payment Order"
)
.
setMessage
(
"Erorr save!"
).
show
();
}
}
@Override
public
void
onFailure
(
Call
<
DataResponse
>
call
,
Throwable
t
)
{
progressDialog
.
dismiss
();
new
AlertDialog
.
Builder
(
PaymentActivity
.
this
)
.
setCancelable
(
false
)
.
setTitle
(
"Payment Order"
)
.
setMessage
(
"Add new payment failed, try again!"
).
show
();
}
});
}
}
}
});
// progressDialog.setCancelable(false);
//// bottomSheetBank.setState(BottomSheetBehavior.STATE_EXPANDED);
//// progressDialog.show();
// Client client = new Client();
// paymentsModels.setPaymentType("bank_transfer");
// paymentsModels.setBank(methodPay);
// paymentsModels.setOrderIdUpdate(sharedPreferences.getString(ORDER_ID,""));
// paymentsModels.setOrderId(sharedPreferences.getString(ORDER_ID, ""));
// paymentsModels.setTransactionStatus("success");
// paymentsModels.setTransaction_id(utils.timeStamp()+"-MES");
// paymentsModels.setTransaction_time(utils.timeStamp());
// Log.i("BANK", "onClick: "+utils.convertGson(paymentsModels));
// PaymentService paymentService = client.Client(PaymentService.class);
//
// if (paymentsModelsIntent == null){
// paymentService.postFromCart(paymentsModels).enqueue(new Callback<DataResponse<PaymentsModels<List<VaNumberModels>>>>() {
// @Override
// public void onResponse(Call<DataResponse<PaymentsModels<List<VaNumberModels>>>> call, Response<DataResponse<PaymentsModels<List<VaNumberModels>>>> response) {
// Log.i("Paymen_bank", "onResponse: "+utils.convertGson(response.body()));
//
// if (response.body() != null){
// SharedPreferences.Editor editor = sharedPreferences.edit();
// editor.putString(ORDER_ID, "");
// editor.putBoolean(CHECKOUT, false);
// progressDialog.dismiss();
// if (editor.commit()){
// paymentCreated = new PaymentCreated();
// paymentCreated.setCancelable(false);
// paymentCreated.show(
// getSupportFragmentManager(),
// "paymentCreated"
// );
// }
// }else{
// progressDialog.dismiss();
// new AlertDialog.Builder(PaymentActivity.this)
// .setTitle("Payment Order")
// .setMessage("Erorr save!").show();
// }
// }
//
// @Override
// public void onFailure(Call<DataResponse<PaymentsModels<List<VaNumberModels>>>> call, Throwable t) {
// progressDialog.dismiss();
// new AlertDialog.Builder(PaymentActivity.this)
// .setCancelable(false)
// .setTitle("Payment Order")
// .setMessage("Add new payment failed, try again!").show();
// }
// });
// }else{
// paymentService.postFromCartPending(paymentsModelsIntent.getOrderId(), paymentsModelsIntent).enqueue(new Callback<DataResponse>() {
// @Override
// public void onResponse(Call<DataResponse> call,
// Response<DataResponse> response) {
// Log.i("Paymen_bank_sa", "onResponse: "+utils.convertGson(response.body()));
//
// if (response.body() != null){
// SharedPreferences.Editor editor = sharedPreferences.edit();
// editor.putString(ORDER_ID, "");
// editor.putBoolean(CHECKOUT, false);
// progressDialog.dismiss();
// if (editor.commit()){
// paymentCreated = new PaymentCreated();
// paymentCreated.setCancelable(false);
// paymentCreated.show(
// getSupportFragmentManager(),
// "QRCode"
// );
// }
// }else{
// progressDialog.dismiss();
// new AlertDialog.Builder(PaymentActivity.this)
// .setTitle("Payment Order")
// .setMessage("Erorr save!").show();
// }
// }
//
// @Override
// public void onFailure(Call<DataResponse> call, Throwable t) {
// progressDialog.dismiss();
// new AlertDialog.Builder(PaymentActivity.this)
// .setCancelable(false)
// .setTitle("Payment Order")
// .setMessage("Add new payment failed, try again!").show();
// }
// });
// }
//
// }
// }
// });
// bottomSheet.setListener(new BottomSheets.CashListener() {
// @Override
// public void onCash(PaymentsModels paymentsModels) {
// progressDialog.show();
// Client client = new Client();
// PaymentsModels paymentsModels1 = new PaymentsModels(
// MainActivity.orderId,
// "cash",
// "none",
// grossAmount
// );
//
// PaymentService paymentService = client.Client(PaymentService.class);
// paymentService.postFromCart(paymentsModels1).enqueue(new Callback<DataResponse<PaymentsModels<List<VaNumberModels>>>>() {
// @Override
// public void onResponse(Call<DataResponse<PaymentsModels<List<VaNumberModels>>>> call,
// Response<DataResponse<PaymentsModels<List<VaNumberModels>>>> response) {
// if (response.body() != null){
// progressDialog.dismiss();
// SharedPreferences.Editor editor = sharedPreferences.edit();
// editor.putBoolean(CHECKOUT, false);
// editor.putString(orderId, "");
// if (editor.commit()){
// startActivity(new Intent(PaymentActivity.this, MainActivity.class));
// }
// }
// }
//
// @Override
// public void onFailure(Call<DataResponse<PaymentsModels<List<VaNumberModels>>>> call, Throwable t) {
//
// }
// });
// }
// });
bottomSheet
.
setListener
(
new
BottomSheets
.
CashListener
()
{
@Override
public
void
onCash
(
PaymentsModels
paymentsModels
)
{
progressDialog
.
show
();
Client
client
=
new
Client
();
PaymentsModels
paymentsModels1
=
new
PaymentsModels
(
MainActivity
.
orderId
,
"cash"
,
"none"
,
grossAmount
);
PaymentService
paymentService
=
client
.
Client
(
PaymentService
.
class
);
paymentService
.
postFromCart
(
paymentsModels1
).
enqueue
(
new
Callback
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>
call
,
Response
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>
response
)
{
if
(
response
.
body
()
!=
null
){
progressDialog
.
dismiss
();
SharedPreferences
.
Editor
editor
=
sharedPreferences
.
edit
();
editor
.
putBoolean
(
CHECKOUT
,
false
);
editor
.
putString
(
orderId
,
""
);
if
(
editor
.
commit
()){
startActivity
(
new
Intent
(
PaymentActivity
.
this
,
MainActivity
.
class
));
}
}
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
PaymentsModels
<
List
<
VaNumberModels
>>>>
call
,
Throwable
t
)
{
}
});
}
});
}
@Override
public
void
onBackPressed
()
{
super
.
onBackPressed
();
startActivity
(
new
Intent
(
PaymentActivity
.
this
,
MainActivity
.
class
));
finish
();
}
public
void
savePaymentSuccess
(){
...
...
app/src/main/java/com/yono/messeripos/ScannerNfc.java
0 → 100644
View file @
28553c19
package
com
.
yono
.
messeripos
;
import
android.app.PendingIntent
;
import
android.app.ProgressDialog
;
import
android.content.Intent
;
import
android.nfc.NdefMessage
;
import
android.nfc.NdefRecord
;
import
android.nfc.NfcAdapter
;
import
android.nfc.Tag
;
import
android.nfc.tech.MifareClassic
;
import
android.nfc.tech.MifareUltralight
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Looper
;
import
android.os.Parcelable
;
import
android.os.PersistableBundle
;
import
android.provider.Settings
;
import
android.util.Log
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
android.widget.ProgressBar
;
import
android.widget.Toast
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatActivity
;
import
com.yono.messeripos.R
;
import
com.yono.messeripos.nfc.parser.NdefMessageParser
;
import
com.yono.messeripos.nfc.record.ParsedNdefRecord
;
import
com.yono.messeripos.utils.Utils
;
import
java.util.List
;
public
class
ScannerNfc
extends
AppCompatActivity
{
PendingIntent
pendingIntent
;
NfcAdapter
nfcAdapter
;
Utils
utils
=
new
Utils
();
ProgressDialog
progressDialog
;
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
nfc_scanner
);
nfcAdapter
=
NfcAdapter
.
getDefaultAdapter
(
this
);
progressDialog
=
new
ProgressDialog
(
ScannerNfc
.
this
);
progressDialog
.
setMessage
(
"Loading..."
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
Window
w
=
getWindow
();
w
.
setFlags
(
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
,
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
);
}
pendingIntent
=
PendingIntent
.
getActivity
(
this
,
0
,
new
Intent
(
this
,
this
.
getClass
())
.
addFlags
(
Intent
.
FLAG_ACTIVITY_SINGLE_TOP
),
0
);
}
@Override
protected
void
onResume
()
{
super
.
onResume
();
if
(
nfcAdapter
!=
null
)
{
if
(!
nfcAdapter
.
isEnabled
())
showWirelessSettings
();
nfcAdapter
.
enableForegroundDispatch
(
this
,
pendingIntent
,
null
,
null
);
}
}
@Override
protected
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
setIntent
(
intent
);
resolveIntent
(
intent
);
}
private
void
resolveIntent
(
Intent
intent
)
{
progressDialog
.
show
();
String
action
=
intent
.
getAction
();
Log
.
i
(
"StringAction"
,
"resolveIntent: "
+
action
);
if
(
NfcAdapter
.
ACTION_TAG_DISCOVERED
.
equals
(
action
)
||
NfcAdapter
.
ACTION_TECH_DISCOVERED
.
equals
(
action
)
||
NfcAdapter
.
ACTION_NDEF_DISCOVERED
.
equals
(
action
))
{
Parcelable
[]
rawMsgs
=
intent
.
getParcelableArrayExtra
(
NfcAdapter
.
EXTRA_NDEF_MESSAGES
);
NdefMessage
[]
msgs
;
Log
.
i
(
"StringAction"
,
"resolveIntent: "
+
rawMsgs
);
if
(
rawMsgs
!=
null
)
{
msgs
=
new
NdefMessage
[
rawMsgs
.
length
];
for
(
int
i
=
0
;
i
<
rawMsgs
.
length
;
i
++)
{
Log
.
i
(
"rawMsg"
,
"resolveIntent: "
+
rawMsgs
[
i
]);
msgs
[
i
]
=
(
NdefMessage
)
rawMsgs
[
i
];
}
}
else
{
byte
[]
empty
=
new
byte
[
0
];
byte
[]
id
=
intent
.
getByteArrayExtra
(
NfcAdapter
.
EXTRA_ID
);
Tag
tag
=
(
Tag
)
intent
.
getParcelableExtra
(
NfcAdapter
.
EXTRA_TAG
);
Log
.
i
(
"TAG"
,
"resolveIntent: "
+
tag
);
byte
[]
payload
=
dumpTagData
(
tag
).
getBytes
();
NdefRecord
record
=
new
NdefRecord
(
NdefRecord
.
TNF_UNKNOWN
,
empty
,
id
,
payload
);
NdefMessage
msg
=
new
NdefMessage
(
new
NdefRecord
[]
{
record
});
msgs
=
new
NdefMessage
[]
{
msg
};
Log
.
i
(
"DUMPTAG"
,
"resolveIntent: "
+
toDec
(
tag
.
getId
()));
/**
* DISINI UNTUK SAVE KE DATABASE*/
progressDialog
.
dismiss
();
}
Log
.
i
(
"StringAction"
,
"resolveIntent: "
+
msgs
);
displayMsgs
(
msgs
);
}
}
private
void
displayMsgs
(
NdefMessage
[]
msgs
)
{
if
(
msgs
==
null
||
msgs
.
length
==
0
)
return
;
StringBuilder
builder
=
new
StringBuilder
();
List
<
ParsedNdefRecord
>
records
=
NdefMessageParser
.
parse
(
msgs
[
0
]);
final
int
size
=
records
.
size
();
Log
.
i
(
"StringAction"
,
"resolveIntent: "
+
size
);
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
ParsedNdefRecord
record
=
records
.
get
(
i
);
String
str
=
record
.
str
();
Log
.
i
(
"DIDALAM"
,
"resolveIntent: "
+
str
);
builder
.
append
(
str
).
append
(
"\n"
);
}
// Log.i("StringAction", "resolveIntent: "+builder.toString());
// text.setText(builder.toString());
utils
.
toastMessage
(
ScannerNfc
.
this
,
builder
.
toString
());
// new Handler(Looper.getMainLooper()).postDelayed(()->{
// progressDialog.dismiss();
// }, 1500);
}
private
void
showWirelessSettings
()
{
Toast
.
makeText
(
this
,
"You need to enable NFC"
,
Toast
.
LENGTH_SHORT
).
show
();
Intent
intent
=
new
Intent
(
Settings
.
ACTION_WIRELESS_SETTINGS
);
startActivity
(
intent
);
}
private
String
dumpTagData
(
Tag
tag
)
{
StringBuilder
sb
=
new
StringBuilder
();
byte
[]
id
=
tag
.
getId
();
Log
.
i
(
"ID"
,
"resolveIntent: "
+
id
);
sb
.
append
(
"ID (hex): "
).
append
(
toHex
(
id
)).
append
(
'\n'
);
sb
.
append
(
"ID (reversed hex): "
).
append
(
toReversedHex
(
id
)).
append
(
'\n'
);
sb
.
append
(
"ID (dec): "
).
append
(
toDec
(
id
)).
append
(
'\n'
);
sb
.
append
(
"ID (reversed dec): "
).
append
(
toReversedDec
(
id
)).
append
(
'\n'
);
String
prefix
=
"android.nfc.tech."
;
sb
.
append
(
"Technologies: "
);
for
(
String
tech
:
tag
.
getTechList
())
{
sb
.
append
(
tech
.
substring
(
prefix
.
length
()));
sb
.
append
(
", "
);
}
sb
.
delete
(
sb
.
length
()
-
2
,
sb
.
length
());
for
(
String
tech
:
tag
.
getTechList
())
{
if
(
tech
.
equals
(
MifareClassic
.
class
.
getName
()))
{
sb
.
append
(
'\n'
);
String
type
=
"Unknown"
;
try
{
MifareClassic
mifareTag
=
MifareClassic
.
get
(
tag
);
switch
(
mifareTag
.
getType
())
{
case
MifareClassic
.
TYPE_CLASSIC
:
type
=
"Classic"
;
break
;
case
MifareClassic
.
TYPE_PLUS
:
type
=
"Plus"
;
break
;
case
MifareClassic
.
TYPE_PRO
:
type
=
"Pro"
;
break
;
}
sb
.
append
(
"Mifare Classic type: "
);
sb
.
append
(
type
);
sb
.
append
(
'\n'
);
sb
.
append
(
"Mifare size: "
);
sb
.
append
(
mifareTag
.
getSize
()
+
" bytes"
);
sb
.
append
(
'\n'
);
sb
.
append
(
"Mifare sectors: "
);
sb
.
append
(
mifareTag
.
getSectorCount
());
sb
.
append
(
'\n'
);
sb
.
append
(
"Mifare blocks: "
);
sb
.
append
(
mifareTag
.
getBlockCount
());
}
catch
(
Exception
e
)
{
sb
.
append
(
"Mifare classic error: "
+
e
.
getMessage
());
}
}
if
(
tech
.
equals
(
MifareUltralight
.
class
.
getName
()))
{
sb
.
append
(
'\n'
);
MifareUltralight
mifareUlTag
=
MifareUltralight
.
get
(
tag
);
String
type
=
"Unknown"
;
switch
(
mifareUlTag
.
getType
())
{
case
MifareUltralight
.
TYPE_ULTRALIGHT
:
type
=
"Ultralight"
;
break
;
case
MifareUltralight
.
TYPE_ULTRALIGHT_C
:
type
=
"Ultralight C"
;
break
;
}
sb
.
append
(
"Mifare Ultralight type: "
);
sb
.
append
(
type
);
}
}
return
sb
.
toString
();
}
private
String
toHex
(
byte
[]
bytes
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
bytes
.
length
-
1
;
i
>=
0
;
--
i
)
{
int
b
=
bytes
[
i
]
&
0xff
;
if
(
b
<
0x10
)
sb
.
append
(
'0'
);
sb
.
append
(
Integer
.
toHexString
(
b
));
if
(
i
>
0
)
{
sb
.
append
(
" "
);
}
}
return
sb
.
toString
();
}
private
String
toReversedHex
(
byte
[]
bytes
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
bytes
.
length
;
++
i
)
{
if
(
i
>
0
)
{
sb
.
append
(
" "
);
}
int
b
=
bytes
[
i
]
&
0xff
;
if
(
b
<
0x10
)
sb
.
append
(
'0'
);
sb
.
append
(
Integer
.
toHexString
(
b
));
}
return
sb
.
toString
();
}
private
long
toDec
(
byte
[]
bytes
)
{
long
result
=
0
;
long
factor
=
1
;
for
(
int
i
=
0
;
i
<
bytes
.
length
;
++
i
)
{
long
value
=
bytes
[
i
]
&
0xff
l
;
result
+=
value
*
factor
;
factor
*=
256
l
;
}
return
result
;
}
private
long
toReversedDec
(
byte
[]
bytes
)
{
long
result
=
0
;
long
factor
=
1
;
for
(
int
i
=
bytes
.
length
-
1
;
i
>=
0
;
--
i
)
{
long
value
=
bytes
[
i
]
&
0xff
l
;
result
+=
value
*
factor
;
factor
*=
256
l
;
}
return
result
;
}
}
app/src/main/java/com/yono/messeripos/TransactionDetail.java
0 → 100644
View file @
28553c19
package
com
.
yono
.
messeripos
;
import
android.os.Bundle
;
import
android.os.PersistableBundle
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatActivity
;
public
class
TransactionDetail
extends
AppCompatActivity
{
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_detail_transaction
);
}
}
app/src/main/java/com/yono/messeripos/adapter/PaymentAdapter.java
View file @
28553c19
...
...
@@ -107,13 +107,6 @@ public class PaymentAdapter extends RecyclerView.Adapter<PaymentAdapter.ViewHold
public
void
binData
(
PaymentResponse
paymentResponse
){
binding
.
setPayment
(
paymentResponse
);
binding
.
setLogo
(
paymentResponse
.
getUrl
());
if
(
nfcAdapter
==
null
){
if
(
paymentResponse
.
getBank
()
==
"nfc"
){
binding
.
cvPayment
.
setVisibility
(
View
.
GONE
);
}
else
{
binding
.
cvPayment
.
setVisibility
(
View
.
VISIBLE
);
}
}
binding
.
cvPayment
.
setOnClickListener
(
view
->{
getPosition
=
getAdapterPosition
();
...
...
app/src/main/java/com/yono/messeripos/api/service/UsersService.java
View file @
28553c19
package
com
.
yono
.
messeripos
.
api
.
service
;
import
com.yono.messeripos.api.ApiHelper
;
import
com.yono.messeripos.models.ForgotPasswordModels
;
import
com.yono.messeripos.models.UsersModels
;
import
com.yono.messeripos.response.DataResponse
;
...
...
@@ -14,4 +15,7 @@ public interface UsersService {
@POST
(
ApiHelper
.
VERSI_API_1
+
"register"
)
Call
<
DataResponse
<
UsersModels
>>
postRegister
(
@Body
UsersModels
usersModels
);
@POST
(
ApiHelper
.
VERSI_API_1
+
"forgot-password"
)
Call
<
DataResponse
>
postForgotPassword
(
@Body
ForgotPasswordModels
forgotPasswordModels
);
}
app/src/main/java/com/yono/messeripos/models/ForgotPasswordModels.java
0 → 100644
View file @
28553c19
package
com
.
yono
.
messeripos
.
models
;
import
com.google.gson.annotations.SerializedName
;
public
class
ForgotPasswordModels
{
@SerializedName
(
"email"
)
private
String
email
;
@SerializedName
(
"message"
)
private
String
message
;
public
ForgotPasswordModels
()
{
}
public
ForgotPasswordModels
(
String
email
,
String
message
)
{
this
.
email
=
email
;
this
.
message
=
message
;
}
public
String
getEmail
()
{
return
email
;
}
public
void
setEmail
(
String
email
)
{
this
.
email
=
email
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
}
app/src/main/java/com/yono/messeripos/utils/Utils.java
View file @
28553c19
...
...
@@ -34,6 +34,7 @@ import java.time.ZoneId;
import
java.time.format.DateTimeFormatter
;
import
java.util.Date
;
import
java.util.Locale
;
import
java.util.Random
;
import
java.util.TimeZone
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
...
...
@@ -389,4 +390,13 @@ public class Utils {
public
int
getWindowWidth
()
{
return
Resources
.
getSystem
().
getDisplayMetrics
().
widthPixels
;
}
public
static
String
getRandomNumberString
()
{
// It will generate 6 digit random Number.
// from 0 to 999999
Random
rnd
=
new
Random
();
int
number
=
rnd
.
nextInt
(
999999
);
// this will convert any number sequence into 6 character.
return
String
.
format
(
"%06d"
,
number
);
}
}
app/src/main/res/drawable/ic_bank_transfer.xml
0 → 100644
View file @
28553c19
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"512dp"
android:height=
"512dp"
android:viewportWidth=
"512"
android:viewportHeight=
"512"
>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M32,454a10,10 0,0 0,0 20L224,474a10,10 0,0 0,0 -20h-6L218,361h6a10,10 0,0 0,10 -10L234,336a10,10 0,0 0,-4.453 -8.32l-96,-64a10,10 0,0 0,-11.094 0l-96,64A10,10 0,0 0,22 336v15a10,10 0,0 0,10 10h6v93ZM90,362h76v92L90,454ZM186,454L186,362h12v92ZM128,284.019 L213.472,341L42.528,341ZM58,362L70,362v92L58,454Z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M240,486H16a10,10 0,0 0,0 20H240a10,10 0,0 0,0 -20Z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M288,200a10,10 0,0 0,0 20L480,220a10,10 0,0 0,0 -20h-6L474,107h6a10,10 0,0 0,10 -10L490,82a10,10 0,0 0,-4.453 -8.32l-96,-64a10,10 0,0 0,-11.094 0l-96,64A10,10 0,0 0,278 82L278,97a10,10 0,0 0,10 10h6v93ZM346,108h76v92L346,200ZM442,200L442,108h12v92ZM384,30.019 L469.473,87L298.527,87ZM314,108h12v92L314,200Z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M496,232H272a10,10 0,0 0,0 20H496a10,10 0,0 0,0 -20Z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M429.129,289.2a10,10 0,0 0,-12.136 7.26A165.381,165.381 0,0 1,298.061 416.607l12.247,-22.894a10,10 0,0 0,-17.635 -9.434L270.031,426.6a10,10 0,0 0,4.285 13.631l42.8,21.76a10,10 0,1 0,9.065 -17.828l-18.6,-9.457A185.863,185.863 0,0 0,436.39 301.339,10 10,0 0,0 429.129,289.2Z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M82.872,222.8a9.984,9.984 0,0 0,12.135 -7.26A165.383,165.383 0,0 1,213.939 95.393l-12.247,22.894a10,10 0,1 0,17.635 9.434L241.969,85.4a10,10 0,0 0,-4.285 -13.631l-42.8,-21.76a10,10 0,1 0,-9.065 17.828l18.6,9.457A185.86,185.86 0,0 0,75.611 210.661,10 10,0 0,0 82.872,222.8Z"
/>
</vector>
app/src/main/res/drawable/ic_baseline_chevron_right_24.xml
0 → 100644
View file @
28553c19
<vector
android:height=
"24dp"
android:tint=
"#808AC2"
android:viewportHeight=
"24"
android:viewportWidth=
"24"
android:width=
"24dp"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<path
android:fillColor=
"@android:color/white"
android:pathData=
"M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z"
/>
</vector>
app/src/main/res/drawable/ic_money.xml
0 → 100644
View file @
28553c19
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"478.856dp"
android:height=
"478.856dp"
android:viewportWidth=
"478.856"
android:viewportHeight=
"478.856"
>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M406.872,160.017c-0.005,0 -0.011,0 -0.016,0h-400c-3.782,-0.004 -6.852,3.058 -6.856,6.84c0,0.005 0,0.011 0,0.016v192c-0.004,3.782 3.058,6.852 6.84,6.856c0.005,0 0.011,0 0.016,0h272c3.786,0 6.856,-3.07 6.856,-6.856c0,-3.786 -3.07,-6.856 -6.856,-6.856H13.712V173.729H400v17.144c-0.004,3.782 3.058,6.852 6.84,6.856c0.005,0 0.011,0 0.016,0c3.782,0.004 6.852,-3.058 6.856,-6.84c0,-0.005 0,-0.011 0,-0.016v-24C413.716,163.091 410.654,160.022 406.872,160.017z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M360.36,128.185l-320,-72c-1.776,-0.397 -3.637,-0.075 -5.176,0.896c-1.537,0.979 -2.624,2.526 -3.024,4.304l-16,72c-0.822,3.698 1.51,7.362 5.208,8.184c3.698,0.822 7.362,-1.51 8.184,-5.208l14.504,-65.288l313.296,70.488c0.496,0.115 1.003,0.172 1.512,0.168c3.786,-0.007 6.85,-3.082 6.844,-6.868C365.702,131.66 363.482,128.89 360.36,128.185z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M321.504,88.513l-192,-80c-3.337,-1.391 -7.182,0.038 -8.8,3.272l-16,32c-1.807,3.342 -0.563,7.517 2.78,9.324c3.342,1.807 7.517,0.563 9.324,-2.78c0.071,-0.131 0.138,-0.265 0.2,-0.401v0.016l13.128,-26.272l186.072,77.528c3.504,1.462 7.53,-0.192 8.992,-3.696C326.662,94.002 325.008,89.976 321.504,88.513z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M326.352,192.017h-63.496c-3.786,0 -6.856,3.07 -6.856,6.856c0,3.786 3.07,6.856 6.856,6.856h63.496c3.786,0 6.856,-3.07 6.856,-6.856S330.138,192.017 326.352,192.017z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M198.856,192.473c-38.881,0 -70.4,31.519 -70.4,70.4c0.04,38.864 31.536,70.36 70.4,70.4c38.881,0 70.4,-31.519 70.4,-70.4S237.737,192.473 198.856,192.473zM198.856,320.473c-31.812,0 -57.6,-25.788 -57.6,-57.6c0.035,-31.797 25.803,-57.565 57.6,-57.6c31.812,0 57.6,25.788 57.6,57.6C256.456,294.685 230.668,320.473 198.856,320.473z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M390.856,214.873c-42.4,0 -88,10.016 -88,32v192c0,21.984 45.6,32 88,32c42.4,0 88,-10.016 88,-32v-192C478.856,224.889 433.256,214.873 390.856,214.873zM462.856,438.753c-1.208,4.44 -25.2,16.12 -72,16.12s-70.792,-11.68 -72,-16v-12.576c17.024,8.576 45.144,12.576 72,12.576c26.856,0 54.984,-4.04 72,-12.584V438.753zM462.856,406.753c-1.208,4.44 -25.2,16.12 -72,16.12s-70.792,-11.68 -72,-16v-12.576c17.024,8.576 45.144,12.576 72,12.576c26.856,0 54.984,-4.04 72,-12.584V406.753zM462.856,374.753c-1.208,4.44 -25.2,16.12 -72,16.12s-70.792,-11.68 -72,-16v-12.576c17.024,8.576 45.144,12.576 72,12.576c26.856,0 54.984,-4.04 72,-12.584V374.753zM462.856,342.753c-1.208,4.44 -25.2,16.12 -72,16.12s-70.792,-11.68 -72,-16v-12.576c17.024,8.576 45.144,12.576 72,12.576c26.856,0 54.984,-4.04 72,-12.584V342.753zM462.856,310.753c-1.208,4.44 -25.2,16.12 -72,16.12s-70.792,-11.68 -72,-16v-12.576c17.024,8.536 45.144,12.576 72,12.576c26.856,0 54.984,-4.04 72,-12.584V310.753zM462.856,278.753c-1.208,4.44 -25.2,16.12 -72,16.12s-70.792,-11.68 -72,-16v-12.576c17.024,8.536 45.144,12.576 72,12.576c26.856,0 54.984,-4.04 72,-12.584V278.753zM390.856,262.873c-46.728,0 -70.712,-11.648 -72,-15.856v-0.048c1.288,-4.456 25.272,-16.096 72,-16.096c46.4,0 70.4,11.472 72,16C461.256,251.401 437.256,262.873 390.856,262.873z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M134.856,320.009H74.384l-28.672,-31.36v-52l31.664,-30.92h57.48c3.786,0 6.856,-3.07 6.856,-6.856c0,-3.786 -3.07,-6.856 -6.856,-6.856H74.592c-1.792,-0.004 -3.515,0.694 -4.8,1.944l-35.736,34.856c-1.335,1.56 -2.067,3.547 -2.064,5.6v56.896c0,1.711 0.639,3.36 1.792,4.624l32.504,35.552c1.299,1.422 3.137,2.233 5.064,2.232h63.504c3.786,0 6.856,-3.07 6.856,-6.856C141.712,323.079 138.643,320.009 134.856,320.009z"
/>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M202.856,254.873h-8c-2.488,0 -4,-1.392 -4,-2c0,-0.608 1.512,-2 4,-2h20c4.418,0 8,-3.582 8,-8s-3.582,-8 -8,-8h-8c0,-4.418 -3.582,-8 -8,-8s-8,3.582 -8,8v0.36c-8.873,1.253 -15.595,8.648 -16,17.6c0.573,10.489 9.507,18.548 20,18.04h8c2.488,0 4,1.392 4,2c0,0.608 -1.512,2 -4,2h-20c-4.418,0 -8,3.582 -8,8s3.582,8 8,8h8c0,4.418 3.582,8 8,8s8,-3.582 8,-8v-0.36c8.873,-1.253 15.595,-8.648 16,-17.6C222.283,262.424 213.349,254.365 202.856,254.873z"
/>
</vector>
app/src/main/res/drawable/ic_nfc.xml
0 → 100644
View file @
28553c19
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"511dp"
android:height=
"511dp"
android:viewportWidth=
"511"
android:viewportHeight=
"511.99945"
>
<path
android:fillColor=
"#FF000000"
android:pathData=
"m485.988,347.5c-1.133,0 -2.285,-0.094 -3.438,-0.297 -10.887,-1.887 -18.176,-12.238 -16.289,-23.121 3.883,-22.406 5.973,-45.313 6.211,-68.082 -0.832,-80.363 -24.266,-158.191 -67.766,-225.098 -6.023,-9.258 -3.395,-21.648 5.863,-27.668 9.262,-6.02 21.648,-3.395 27.672,5.867 47.688,73.344 73.355,158.652 74.23,246.699v0.398c-0.25,24.988 -2.535,50.125 -6.801,74.719 -1.688,9.727 -10.137,16.582 -19.684,16.582zM438.242,502.898c15.469,-23.789 28.785,-49.168 39.586,-75.43 4.203,-10.215 -0.676,-21.902 -10.891,-26.102 -10.215,-4.203 -21.902,0.672 -26.102,10.887 -9.855,23.969 -22.012,47.129 -36.129,68.84 -6.023,9.262 -3.395,21.648 5.863,27.672 3.367,2.188 7.145,3.234 10.883,3.234 6.543,0 12.957,-3.207 16.789,-9.102zM341.07,450.773c38.602,-57.613 59.492,-124.875 60.41,-194.512 0.004,-0.176 0.004,-0.352 0,-0.527 -0.918,-69.637 -21.809,-136.898 -60.41,-194.508 -6.148,-9.176 -18.574,-11.633 -27.746,-5.484 -9.18,6.148 -11.633,18.57 -5.484,27.746 34.23,51.09 52.777,110.734 53.641,172.512 -0.863,61.773 -19.41,121.418 -53.641,172.508 -6.148,9.176 -3.691,21.598 5.484,27.746 3.418,2.293 7.285,3.387 11.113,3.387 6.445,0 12.773,-3.109 16.633,-8.867zM252.996,367.305c10.465,-3 18.984,-10.895 22.789,-21.109 11.02,-29.59 16.305,-60.066 15.707,-90.59 -0.957,-48.707 -16.504,-96.012 -44.957,-136.797 -6.32,-9.055 -18.789,-11.277 -27.848,-4.957 -9.059,6.32 -11.277,18.789 -4.957,27.848 23.91,34.27 36.969,73.93 37.77,114.691 0.453,23.035 -3.137,46.105 -10.672,68.691l-183.457,-141.055c-7.988,-6.145 -18.48,-7.941 -28.066,-4.816 -9.566,3.125 -16.961,10.75 -19.781,20.406 -4.117,14.082 -9.023,36.512 -9.023,63.379 0,47.34 27.066,89.641 28.215,91.418 6,9.254 18.344,11.883 27.609,5.91 9.27,-5.977 11.938,-18.348 5.98,-27.629 -0.215,-0.34 -21.805,-34.398 -21.805,-69.699 0,-14.758 1.793,-27.879 3.988,-38.418l178.109,136.941c6.117,4.699 13.379,7.145 20.82,7.145 3.188,0 6.406,-0.445 9.578,-1.359zM252.996,367.305"
/>
</vector>
app/src/main/res/drawable/nfcgif.gif
0 → 100644
View file @
28553c19
528 KB
app/src/main/res/layout/activity_payment.xml
View file @
28553c19
...
...
@@ -14,17 +14,10 @@
android:id=
"@+id/appbar"
layout=
"@layout/app_bar"
/>
<include
android:layout_below=
"@id/appbar"
layout=
"@layout/activity_invoice"
android:id=
"@+id/cvInvoice"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
/>
<ScrollView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@id/
cvInvoice
"
android:layout_below=
"@id/
appbar
"
android:layout_above=
"@id/btnPay"
android:overScrollMode=
"never"
android:scrollingCache=
"false"
...
...
@@ -38,32 +31,6 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rvItem"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin=
"0dp"
android:nestedScrollingEnabled=
"false"
android:layout_marginTop=
"20dp"
tools:layout_editor_absoluteX=
"10dp"
/>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/tvLabel"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"Payment"
android:textSize=
"24sp"
android:textFontWeight=
"600"
android:textStyle=
"bold"
android:textColor=
"#202020"
android:layout_marginTop=
"20dp"
android:layout_marginBottom=
"0dp"
android:layout_marginStart=
"10dp"
android:layout_below=
"@id/rvItem"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rvPayment"
android:layout_width=
"match_parent"
...
...
@@ -71,7 +38,6 @@
android:layout_margin=
"10dp"
android:nestedScrollingEnabled=
"false"
tools:layout_editor_absoluteX=
"10dp"
android:layout_below=
"@id/tvLabel"
tools:listitem=
"@layout/payment_list"
/>
</RelativeLayout>
</ScrollView>
...
...
app/src/main/res/layout/methode_payment.xml
View file @
28553c19
...
...
@@ -9,7 +9,7 @@
android:id=
"@+id/appBarPaymentMethode"
/>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cv
Payment
"
android:id=
"@+id/cv
Cash
"
android:clickable=
"true"
android:focusable=
"true"
android:checkable=
"true"
...
...
@@ -27,19 +27,117 @@
<ImageView
android:id=
"@+id/ivLogo"
android:layout_width=
"
12
0dp"
android:layout_height=
"0dp"
android:src=
"@drawable/ic_
bni_logo
"
android:layout_width=
"
8
0dp"
android:layout_height=
"
2
0dp"
android:src=
"@drawable/ic_
money
"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
<RadioButton
android:id=
"@+id/rbPayment"
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:buttonTint=
"@color/colorPrimary"
android:enabled=
"false"
app:layout_constraintStart_toEndOf=
"@id/ivLogo"
android:text=
"Cash"
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:id=
"@+id/ivRight"
android:layout_width=
"10dp"
android:layout_height=
"20dp"
android:src=
"@drawable/ic_baseline_chevron_right_24"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvBankTransfer"
android:clickable=
"true"
android:focusable=
"true"
android:checkable=
"true"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
app:layout_constraintTop_toBottomOf=
"@id/cvCash"
app:strokeWidth=
"1dp"
app:strokeColor=
"@color/color_stroke"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"15dp"
>
<ImageView
android:id=
"@+id/ivLogoBankTransfer"
android:layout_width=
"80dp"
android:layout_height=
"20dp"
android:src=
"@drawable/ic_bank_transfer"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:layout_constraintStart_toEndOf=
"@id/ivLogoBankTransfer"
android:text=
"Bank Transfer"
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:id=
"@+id/ivRightBankTransfer"
android:layout_width=
"10dp"
android:layout_height=
"20dp"
android:src=
"@drawable/ic_baseline_chevron_right_24"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvNFC"
android:clickable=
"true"
android:focusable=
"true"
android:checkable=
"true"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
app:layout_constraintTop_toBottomOf=
"@id/cvBankTransfer"
app:strokeWidth=
"1dp"
app:strokeColor=
"@color/color_stroke"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"15dp"
>
<ImageView
android:id=
"@+id/ivLogoNFC"
android:layout_width=
"80dp"
android:layout_height=
"20dp"
android:src=
"@drawable/ic_nfc"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:layout_constraintStart_toEndOf=
"@id/ivLogoNFC"
android:text=
"Via NFC"
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:id=
"@+id/ivRightNFC"
android:layout_width=
"10dp"
android:layout_height=
"20dp"
android:src=
"@drawable/ic_baseline_chevron_right_24"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
...
...
app/src/main/res/layout/nfc_scanner.xml
0 → 100644
View file @
28553c19
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<ImageView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:src=
"@drawable/nfcgif"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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