Skip to content

Commit

Permalink
Merge pull request #3 from Taverz/dio-fix-dependece-https
Browse files Browse the repository at this point in the history
Dio fix dependece https
  • Loading branch information
Taverz authored Aug 17, 2024
2 parents 40ad005 + f022ad5 commit 34cbd35
Show file tree
Hide file tree
Showing 39 changed files with 1,848 additions and 250 deletions.
7 changes: 7 additions & 0 deletions atol_online_dart/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@

## ЗАПЛАНИРОВАННО 1.1.2

- Переделать модели
- Сделать пример Example
- Сделать виджеты готовые для настройки системы, чтобы быстро вкинуть в проект на MaterialDesign


## 1.1.2

- Update pubspec.yaml - add platform
Expand Down
39 changes: 39 additions & 0 deletions atol_online_dart/assets/mock_request/refund_example_docs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"external_id": "17052917561851307",
"receipt": {
"client": {
"email": "kkt@kkt.ru"
},
"company": {
"email": "chek@romashka.ru",
"sno": "usn_income_outcome",
"inn": "1234567891",
"payment_address": "http://magazin.ru/"
},
"items": [
{
"name": "Лазерный принтер HP Laserjet 2035 <CE461A>",
"price": 12635.00,
"quantity": 1,
"sum": 12635.00,
"measurement_unit": "Штука",
"payment_method": "credit",
"payment_object": "commodity",
"vat": {
"type": "vat18"
}
}
],
"payments": [
{
"type": 1,
"sum": 12635.0
}
],
"total": 12635.0
},
"service": {
"callback_url": "http://testtest"
},
"timestamp": "06.02.2017 11:33:00"
}
6 changes: 0 additions & 6 deletions atol_online_dart/bin/atol_online_dart.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
// import 'package:atol_online_dart/atol_online_dart.dart' as atol_online_dart;
// import 'package:atol_online_dart/check_network.dart';

void main(List<String> arguments) async {
// print('Hello world: ${atol_online_dart.calculate()}!');
// final networkConnect = await CheckNetworkCustom.checkNetwork();
}
13 changes: 2 additions & 11 deletions atol_online_dart/lib/atol_online_dart.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
// import 'package:atol_online_dart/atol_online_v1_05/api/api_request_impl.dart';
// import 'package:atol_online_dart/atol_online_v1_05/repository/check.dart';
// import 'package:atol_online_dart/atol_online_v1_05/repository/check_impl.dart';
library atol_online_dart;

int calculate() {
return 6 * 7;
}

// Future<dynamic> testRequest() async {
// final apiReq = ApiRequestAtolCheckImpl();
// RepositoryCheck reposCheck = RepositoryCheckImpl(apiReq);
// }
export 'package:atol_online_dart/atol_online_dart.dart';
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


abstract class ApiRequestAtolAuth {
ApiRequestAtolAuth();
Future<String> getAuthToken({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ import 'dart:convert';

import 'package:atol_online_dart/atol_online_v1_4/api/api_auth_request.dart';
import 'package:atol_online_dart/atol_online_v1_4/utils/const_app.dart';
import 'package:http/http.dart' as httpImport;
// import 'package:http/http.dart' as httpImport;
import 'package:dio/dio.dart' as httpDio;

class ApiRequestAtolAuthImpl implements ApiRequestAtolAuth {

final mainUrl = '${ConstantApp.preUrl}${ConstantApp.mainUrl}/${ConstantApp.postMainUrl}/${ConstantApp.version}';
final mainUrl =
'${ConstantApp.preUrl}${ConstantApp.mainUrl}/${ConstantApp.postMainUrl}/${ConstantApp.version}';

/// https://online.atol.ru/possystem/v5/getToken
@override
Expand All @@ -15,19 +16,43 @@ class ApiRequestAtolAuthImpl implements ApiRequestAtolAuth {
required String password,
}) async {
// ${ConstantApp.postMainUrl}/${ConstantApp.version}
final url = Uri.parse('$mainUrl/getToken');
// final url = Uri.parse('$mainUrl/getToken');
final headers = {'Content-Type': 'application/json; charset=utf-8'};
final body = jsonEncode({
'login': login,
'pass': password,
});

final response = await httpImport.post(url, headers: headers, body: body);
final response = await httpDio.Dio()
.post('$mainUrl/getToken', queryParameters: headers, data: body);
if (response.statusCode == 200) {
final responseData = jsonDecode(response.body);
return responseData['token'];
final responseData = (response.data as Map<String, dynamic>)['token'];
return responseData;
} else {
throw Exception('Failed to get token');
}
}

// /// https://online.atol.ru/possystem/v5/getToken
// @override
// Future<String> getAuthToken({
// required String login,
// required String password,
// }) async {
// // ${ConstantApp.postMainUrl}/${ConstantApp.version}
// final url = Uri.parse('$mainUrl/getToken');
// final headers = {'Content-Type': 'application/json; charset=utf-8'};
// final body = jsonEncode({
// 'login': login,
// 'pass': password,
// });

// final response = await httpImport.post(url, headers: headers, body: body);
// if (response.statusCode == 200) {
// final responseData = jsonDecode(response.body);
// return responseData['token'];
// } else {
// throw Exception('Failed to get token');
// }
// }
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import 'package:atol_online_dart/atol_online_v1_4/model/refund_model.dart';
import 'package:atol_online_dart/atol_online_v1_4/model/request_model_exchange_info.dart';

abstract class ApiRequestAtolCheck {
ApiRequestAtolCheck();
void addToken(String token);
Future<Map> createCheck(ExchangeInfo model, String codeGroup);
Future<dynamic> returnCheck();
}
Future<void> returnCheck(RefundCheckAtol dataBody, String codeGroup);
}
126 changes: 106 additions & 20 deletions atol_online_dart/lib/atol_online_v1_4/api/api_check_request_impl.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import 'dart:convert';

import 'package:atol_online_dart/atol_online_v1_4/api/api_check_request.dart';
import 'package:atol_online_dart/atol_online_v1_4/model/refund_model.dart';
import 'package:atol_online_dart/atol_online_v1_4/model/request_model_exchange_info.dart';
import 'package:atol_online_dart/atol_online_v1_4/utils/const_app.dart';
import 'package:http/http.dart' as httpImport;
// import 'package:http/http.dart' as httpImport;
import 'package:dio/dio.dart' as httpDio;

class ApiRequestAtolCheckImpl implements ApiRequestAtolCheck {
late String? tokenCurrent;
ApiRequestAtolCheckImpl();

@override
void addToken(String tokenCurrent){
void addToken(String tokenCurrent) {
this.tokenCurrent = tokenCurrent;
}

Expand All @@ -24,40 +26,124 @@ class ApiRequestAtolCheckImpl implements ApiRequestAtolCheck {
/// * Token: <token>
@override
Future<Map> createCheck(ExchangeInfo model, String codeGroup) async {
if(tokenCurrent != null){
if (tokenCurrent == null) {
throw Exception('Emtpy token');
}
final Map<String, dynamic> bodyParams = model.toMap();

final url = Uri.https(
ConstantApp.mainUrl,
'/${ConstantApp.postMainUrl}/${ConstantApp.version}/$codeGroup/sell',
);
// final url = Uri.https(
// ConstantApp.mainUrl,
// '/${ConstantApp.postMainUrl}/${ConstantApp.version}/$codeGroup/sell',
// );
//
//"timestamp" -> "11.06.2024 15:17:27"
final headerParam = {
'Content-Type':
'application/json; charset=utf-8', //'application/json; charset=utf-8'
'Token': tokenCurrent!
'Token':
tokenCurrent! //.substring(0,(tokenCurrent!.length-1) > 15 ? 15 : (tokenCurrent!.length-1))
};

final response = await httpImport.post(
url,
headers: headerParam,
body: jsonEncode(bodyParams),
print(bodyParams);
final response = await httpDio.Dio().post(
'${ConstantApp.preUrl}${ConstantApp.mainUrl}/${ConstantApp.postMainUrl}/${ConstantApp.version}/$codeGroup/sell',
queryParameters: headerParam,
// options: httpDio.Options(
// headers: headerParam,
// ),
data: jsonEncode(bodyParams),
);
final decode = jsonDecode(response.body);
if (response.statusCode == 200) {
final decode = response.data;
final statusCode = (response.statusCode ?? 0);
if (statusCode >= 200 && statusCode < 300) {
return decode;
} else {
throw Exception('Failed to createCheck');
}
}

@override
Future<dynamic> returnCheck() {
if(tokenCurrent != null){
// /// ### Пример регистрации чека с операцией «Приход»:
// /// ```
// /// https://online.atol.ru/possystem/v5/group1/sell?token=<token>
// /// ````
// ///
// /// Заголовок запроса должен содержать параметры:
// /// * Content-type: application/json; charset=utf-8
// /// * Token: <token>
// @override
// Future<Map> createCheck(ExchangeInfo model, String codeGroup) async {
// if(tokenCurrent != null){
// throw Exception('Emtpy token');
// }
// final Map<String, dynamic> bodyParams = model.toMap();

// final url = Uri.https(
// ConstantApp.mainUrl,
// '/${ConstantApp.postMainUrl}/${ConstantApp.version}/$codeGroup/sell',
// );
// final headerParam = {
// 'Content-Type':
// 'application/json; charset=utf-8', //'application/json; charset=utf-8'
// 'Token': tokenCurrent!
// };

// final response = await httpImport.post(
// url,
// headers: headerParam,
// body: jsonEncode(bodyParams),
// );
// final decode = jsonDecode(response.body);
// if (response.statusCode == 200) {
// return decode;
// } else {
// throw Exception('Failed to createCheck');
// }
// }

Future<void> returnCheck(RefundCheckAtol dataBody, String codeGroup) async {
if (tokenCurrent == null) {
throw Exception('Emtpy token');
}
// TODO: implement returnCheck
throw UnimplementedError();
final Map<String, dynamic> bodyParams = dataBody.toJson();
// final url = Uri.parse('https://online.atol.ru/possystem/v4/magazin-ru_3401/sell_refund');
final urlString =
'${ConstantApp.preUrl}${ConstantApp.mainUrl}/${ConstantApp.postMainUrl}/${ConstantApp.version}/$codeGroup/sell_refund';
// final url = Uri.parse(urlString);
final headers = {
// 'Content-Type': 'application/json',
// 'Authorization': 'Bearer YOUR_TOKEN_HERE', // замените на ваш токен
'Content-Type': 'application/json; charset=utf-8',
'Token': tokenCurrent!
};

final response = await httpDio.Dio().post(
urlString,
queryParameters: headers,
// options: httpDio.Options(
// headers: headerParam,
// ),
data: jsonEncode(bodyParams),
);
// await http.post(url, headers: headers, body: json.encode(body));
final decode = response.data;
// if (response.statusCode == 200) {
// print('Refund registered successfully');
// } else {
// print('Failed to register refund: ${response.data}');
// }
final statusCode = (response.statusCode ?? 0);
if (statusCode >= 200 && statusCode < 300) {
return decode;
} else {
throw Exception('Failed to createCheck');
}
}

// @override
// Future<dynamic> returnCheck() {
// if (tokenCurrent != null) {
// throw Exception('Emtpy token');
// }
// // TODO: implement returnCheck
// throw UnimplementedError();
// }
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:atol_online_dart/atol_online_v1_4/api/api_check_request.dart';
import 'package:atol_online_dart/atol_online_v1_4/model/refund_model.dart';
import 'package:atol_online_dart/atol_online_v1_4/model/request_model_exchange_info.dart';

class ApiRequestAtolCheckImplTest implements ApiRequestAtolCheck {
Expand All @@ -10,11 +11,11 @@ class ApiRequestAtolCheckImplTest implements ApiRequestAtolCheck {
}

@override
Future returnCheck() {
Future returnCheck(RefundCheckAtol dataBody, String codeGroup) {
// TODO: implement returnCheck
throw UnimplementedError();
}

@override
void addToken(String token) {
// TODO: implement addToken
Expand Down
Loading

0 comments on commit 34cbd35

Please sign in to comment.