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("---------------") println("---------------")
if (requestCode == externalApplicationRequestCode && resultCode == Activity.RESULT_OK && data != null) { if (requestCode == externalApplicationRequestCode && resultCode == Activity.RESULT_OK && data != null) {
println(data.getStringExtra(externalResultDataKey)) 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)) _result.success(data.getStringExtra(externalResultDataKey))
} else { } else {
_result.error("008", "Error while apps connecting", "aaa") _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) { // if (resultCode == Activity.RESULT_OK) {
// _result.success(data?.getStringExtra("result")) // _result.success(data?.getStringExtra("result"))

View File

@ -90,6 +90,7 @@ class ResultBean {
int code; int code;
String description; String description;
HostResponseBean hostResponse; HostResponseBean hostResponse;
ErrorResponseBean errorData;
ResultBean({this.code, this.description}); ResultBean({this.code, this.description});
@ -99,6 +100,7 @@ class ResultBean {
resultBean.code = map['code']; resultBean.code = map['code'];
resultBean.description = map['description']; resultBean.description = map['description'];
resultBean.hostResponse = HostResponseBean.fromMap(map['hostResponse']); resultBean.hostResponse = HostResponseBean.fromMap(map['hostResponse']);
resultBean.errorData = ErrorResponseBean.fromMap(map['errorData']);
return resultBean; return resultBean;
} }
@ -107,6 +109,7 @@ class ResultBean {
"code": code, "code": code,
"description": description, "description": description,
"hostResponse": hostResponse, "hostResponse": hostResponse,
"errorData": errorData,
}; };
} }
@ -131,3 +134,22 @@ class HostResponseBean {
"description": description, "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,
"description": description,
};
}

View File

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

View File

@ -15,4 +15,8 @@ void main() {
String salt = '!=uF:w1N_Salh?1gVSJ#eGfJYHA(wS4D'; String salt = '!=uF:w1N_Salh?1gVSJ#eGfJYHA(wS4D';
String hash = md5.convert(utf8.encode('uvaissov@gmail.com$salt')).toString(); String hash = md5.convert(utf8.encode('uvaissov@gmail.com$salt')).toString();
print(hash); 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'), const Choice(title: 'Информация о ККМ', icon: Icons.info_outline, command: 'infokkm'),
//if (version >= 24 ) //if (version >= 24 )
// const Choice(title: 'Bank', icon: Icons.text_fields, command: 'bank'), // 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: 'Настройка HalykPos', icon: Icons.phonelink_lock_outlined, command: 'tap2phone'),
const Choice(title: 'Настройки', icon: Icons.settings, command: 'settings'), const Choice(title: 'Настройки', icon: Icons.settings, command: 'settings'),
const Choice(title: 'Принтер', icon: Icons.print, command: 'print'), const Choice(title: 'Принтер', icon: Icons.print, command: 'print'),

View File

@ -227,7 +227,7 @@ class _AdditionalTabState extends State<AdditionalTab> {
}); });
int version = await _bankService.version(); int version = await _bankService.version();
if (version < 27 ) { if (version < _bankService.sdkVersion ) {
setState(() { setState(() {
isClosePosBusy = false; 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: 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 { 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: 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 { Future<Cd.HalykCloseDayDao> closeDayHalykPos() async {

View File

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