bug fixes on halyk payment

backend_nfc
suvaissov 2021-05-26 15:47:24 +06:00
parent c497fa7ed6
commit 5a1f086d78
8 changed files with 49 additions and 11 deletions

View File

@ -125,11 +125,11 @@ class MainActivity : FlutterActivity() {
println("---------------")
if (requestCode == externalApplicationRequestCode && resultCode == Activity.RESULT_OK && data != null) {
println(data.getStringExtra(externalResultDataKey))
Toast.makeText(this, data.getStringExtra(externalResultDataKey), Toast.LENGTH_LONG).show()
//Toast.makeText(this, data.getStringExtra(externalResultDataKey), Toast.LENGTH_LONG).show()
_result.success(data.getStringExtra(externalResultDataKey))
} else {
_result.error("008", "Error while apps connecting", "aaa")
Toast.makeText(this, "Error while apps connecting", Toast.LENGTH_SHORT).show()
//Toast.makeText(this, "Error while apps connecting", Toast.LENGTH_SHORT).show()
}
// if (resultCode == Activity.RESULT_OK) {
// _result.success(data?.getStringExtra("result"))

View File

@ -90,6 +90,7 @@ class ResultBean {
int code;
String description;
HostResponseBean hostResponse;
ErrorResponseBean errorData;
ResultBean({this.code, this.description});
@ -99,6 +100,7 @@ class ResultBean {
resultBean.code = map['code'];
resultBean.description = map['description'];
resultBean.hostResponse = HostResponseBean.fromMap(map['hostResponse']);
resultBean.errorData = ErrorResponseBean.fromMap(map['errorData']);
return resultBean;
}
@ -107,6 +109,7 @@ class ResultBean {
"code": code,
"description": description,
"hostResponse": hostResponse,
"errorData": errorData,
};
}
@ -125,6 +128,25 @@ class HostResponseBean {
return hostResponseBean;
}
Map toJson() =>
{
"code": code,
"description": description,
};
}
class ErrorResponseBean {
int code;
String description;
static ErrorResponseBean fromMap(Map<String, dynamic> map) {
if (map == null) return null;
ErrorResponseBean errorResponseBean = ErrorResponseBean();
errorResponseBean.code = map['code'];
errorResponseBean.description = map['description'];
return errorResponseBean;
}
Map toJson() =>
{
"code": code,

View File

@ -14,6 +14,7 @@ import '../models/aman_dao.dart';
class BankService extends BaseService {
int sdkVersion = 27;
final ApiService _api = locator<ApiService>();
final MethodChannel _channel = MethodChannel('channel:com.amanKassa/bank');
@ -60,6 +61,7 @@ class BankService extends BaseService {
double total = amount * 100;
log.i('total: $total, ${total.toInt()}');
String response = await _channel.invokeMethod("pay", <String, dynamic>{'amount': total.toInt(), 'token': token });
log.i(response);
HalykResponse dao = HalykResponse.fromMap(json.decode(response));
return dao;
} catch (e, stack) {

View File

@ -15,4 +15,8 @@ void main() {
String salt = '!=uF:w1N_Salh?1gVSJ#eGfJYHA(wS4D';
String hash = md5.convert(utf8.encode('uvaissov@gmail.com$salt')).toString();
print(hash);
String value = "100.0";
print(double.parse(value));
}

View File

@ -32,7 +32,7 @@ class _PopupMenuState extends State<PopupMenu> {
const Choice(title: 'Информация о ККМ', icon: Icons.info_outline, command: 'infokkm'),
//if (version >= 24 )
// const Choice(title: 'Bank', icon: Icons.text_fields, command: 'bank'),
if (version >= 27 )
if (version >= _bankService.sdkVersion )
const Choice(title: 'Настройка HalykPos', icon: Icons.phonelink_lock_outlined, command: 'tap2phone'),
const Choice(title: 'Настройки', icon: Icons.settings, command: 'settings'),
const Choice(title: 'Принтер', icon: Icons.print, command: 'print'),

View File

@ -227,7 +227,7 @@ class _AdditionalTabState extends State<AdditionalTab> {
});
int version = await _bankService.version();
if (version < 27 ) {
if (version < _bankService.sdkVersion ) {
setState(() {
isClosePosBusy = false;
});

View File

@ -44,7 +44,7 @@ Future<AmanDao<CardData>> paymentHalykPos(double total) async {
);
return AmanDao<CardData>(msg: response.result.description, success: true, data: cardData);
}
return AmanDao<CardData>(msg: response.result.description, success: false);
return AmanDao<CardData>(msg: response.result.errorData !=null ? response.result.errorData.description : response.result.description, success: false);
}
Future<AmanDao<CardData>> refundHalykPos(CardData refundData, double total) async {
@ -70,7 +70,7 @@ Future<AmanDao<CardData>> refundHalykPos(CardData refundData, double total) asyn
);
return AmanDao<CardData>(msg: response.result.description, success: true, data: cardData);
}
return AmanDao<CardData>(msg: response.result.description, success: false);
return AmanDao<CardData>(msg: response.result.errorData !=null ? response.result.errorData.description : response.result.description, success: false);
}
Future<Cd.HalykCloseDayDao> closeDayHalykPos() async {

View File

@ -64,7 +64,7 @@ class _PaymentViewState extends State<PaymentView> {
_bankInit() async {
int version = await _bankService.version();
if (version >= 27) {
if (version >= _bankService.sdkVersion) {
setState(() {
isBankApiAccess = true;
});
@ -198,15 +198,25 @@ class _PaymentViewState extends State<PaymentView> {
if (!isBankApiAccess || widget.model.operationType != OperationTypePay) {
return Container();
}
return StoreConnector<AppState, BankState>(
converter: (store) => store.state.bankState,
builder: (_, state) {
return StoreConnector<AppState, AppState>(
converter: (store) => store.state,
builder: (_, _state) {
BankState state = _state.bankState;
double _total;
if (widget.model.mode == SettingModeCalc) {
String value = totalCalc(_state.calcState.calcItems);
_total = double.parse(value);
} else {
String value = totalKassa(_state.kassaState.kassaItems);
_total = double.parse(value);
}
if (state.password == null || state.login == null || state.password.length < 1 || state.login.length < 1) {
return Container();
}
return InkWell(
onTap: () async {
AmanDao<CardData> data = await paymentHalykPos(100);
AmanDao<CardData> data = await paymentHalykPos(_total);
if (data.success) {
pressPayment(widget.model.operationType, data.data);
} else {