Skip to content

Commit

Permalink
minor fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
yan committed Dec 21, 2023
1 parent 8a62567 commit aaa99ca
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 76 deletions.
47 changes: 19 additions & 28 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:payselection_sdk/payselection.dart';
import 'package:uuid/uuid.dart';

void main() {
runApp(const MyApp());
Expand All @@ -16,7 +15,7 @@ class MyApp extends StatelessWidget {
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme:
ColorScheme.fromSeed(seedColor: Colors.deepPurple),
ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'PaySelection-Flutter-SDK'),
Expand All @@ -34,7 +33,6 @@ class MyHomePage extends StatefulWidget {
}

class _MyHomePageState extends State<MyHomePage> {
final uuid = const Uuid();
late PaySelectionSDK config;

@override
Expand All @@ -45,54 +43,47 @@ class _MyHomePageState extends State<MyHomePage> {
showDialog(
context: context,
builder: (builder) => ThreeDS(
url: responseData.redirectUrl ?? '',
)).then((value) => ScaffoldMessenger.of(context)
url: responseData.redirectUrl ?? '',
)).then((value) => ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(
content: Text(value == true
? 'Success transaction'
: 'Fail transaction'))));


content: Text(value == true
? 'Success transaction'
: 'Fail transaction'))));

//for check transaction status use config.transactionStatus

// config.transactionStatus(TransactionStatusRequest(
// transactionId: responseData.transactionId ?? "",
// transactionSecretKey:
// responseData.transactionSecretKey ?? ""));
// responseData.transactionSecretKey ?? ""));


},
(errorCode) => ScaffoldMessenger.of(context)
(errorCode) => ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text(errorCode))));
}

Future<BaseResponse<PublicPayResponse>> _pay() async {
config = PaySelectionSDK(PaySelectionConfig.credential(
publicKey:
'04bd07d3547bd1f90ddbd985feaaec59420cabd082ff5215f34fd1c89c5d8562e8f5e97a5df87d7c99bc6f16a946319f61f9eb3ef7cf355d62469edb96c8bea09e',
// '04bd07d3547bd1f90ddbd985deaaec59420cabd082ff5215f34fd1c89c5d8562e8f5e97a5df87d7c99bc6f16a946319f61f9eb3ef7cf355d62469edb96c8bea09e',
//bad key
'04bd07d3547bd1f90ddbd985feaaec59420cabd082ff5215f34fd1c89c5d8562e8f5e97a5df87d7c99bc6f16a946319f61f9eb3ef7cf355d62469edb96c8bea09e',
xSiteId: '21044',
xRequestId: uuid.v4(),
isDebug: true));
isDebug: true)
);

var request = PublicPayRequest(
orderId: "SAM_SDK_3",
description: "test payment",
paymentMethod: PaymentMethod.token,
payToken:
'eyJ0eXBlIjoiWWFuZGV4Iiwic2lnbmVkTWVzc2FnZSI6IntcImVuY3J5cHRlZE1lc3NhZ2VcIjpcImJHWDA3N2N5QTRXTXlFVnZCaDBNMEp2bnBUWk9UYUlxaDlxWHdNcmRxaTBtVXo4Q29UODdHUzZqWVZFd2NlRjhVMlZYSHJwY0RYRGcxc2o4NHJvRjEyeWgzQ2tyMUhmTmJxSFpNSm4vZExWREZvSGlqVWN3Sm9hNWZwbUNrNEIva0dwbFUyL0YxdTNGYjBxSG5zZERWWVpJMy85eG0vYkI0dXZaM09YNmZkNG5iQ1BVZ0NGbnlzSjRWKzZXK3gvVDhxUEs3RFhLVDFOYUtlTzIweWNya0NsWVJRL3Ircm1EcmxzS3llM0IrbWh4a1d0ZGY3WHgzOUQvSlZKUnFCZThUMkJyTzlzSmFBblhtangwZ0lKdkg0QThMWmUxaWFhWlRBS0pmTGtGb2RvOGJsalVJTVozTjVXSUV6RjYxT0dINHAwOG1ORjR5VUpGV2JaTmE4bXV6cTRTUzNhOTVwNlQrOHJLV0NmWmhqa0dHaE5qZG9ETElBM1RtcmdhRWxqQ281M0lCVC93UTBtcStEUzdXbUk0R00vb1Q4TkFGa3F0OE02c3RVZ2ZxK2hLSkY2S2VjRFVKcDRRMTdTdTJRcmpqTXR6NHNMV0x5NlBLM0JMR1drRGhjUlNFc0IraWt5TjdEeUdrSGt5T2YyQmF1N21uakp6WUdCZWg4T3VOUWJyRllNbEZ5R1dzd3VmQ2JUSnJjUWNzS1ArcmpWTExNWDgzbTlHcGViWDh6eG5kUy9XVVRMcEFkbkIvN3pMeEtRUExuOVdPemtRREE9PVwiLFwidGFnXCI6XCJVaVlqMVdaS3FlTnVsNHpKK2NSNG4yWi8wbUpuaUxPTTU1YllIejV6eGNrPVwiLFwiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJCTHp5WStRSTlzdzYvbXZ5ajdmV2NyQlh4WXE3ZHFyUkNJQUxJdTA5QitRbGp4NHlSOVdqU3Z3YjF3TGd1RjJvU1BnZThPYW93UEdhSkh1bkFUSVY4WFE9XCJ9IiwicHJvdG9jb2xWZXJzaW9uIjoiRUN2MiIsInNpZ25hdHVyZSI6Ik1FVUNJRVhLQldqSzVxaSs1R3E2cEZxaXk5Z2Z5R09GNndRMDhSVlhsUFczblJTN0FpRUEyalM3cmc4TGZaU25JYU1OQm1CbVJ3ZE9xNlZZZVo0R3dCQWhGaHVJT3dvPSIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW9WY29NbHFvWVBvK2MreUFlNFJFNHh4emZLQ1pIY0JRdFZKaEJWWGpCa2k0WHhDS3lza3BJbjJmM0xpQWtCVWF4Z2FyZmpUem0wM3NSY043TndzRVpRPT1cIixcImtleUV4cGlyYXRpb25cIjpcIjE3NjU3MDQwNDUwMDBcIn0iLCJzaWduYXR1cmVzIjpbIk1FVUNJUUMrbXFVVmVsaTBTY1kzVVZvOWNFaFluVDBpd3k5ZjNGMStkMXVxQ0dJL3RnSWdENHZPaFN6SFUyM1EwWXJoc05DTkp2bTF1TkRvZjJkT05aWDJ4ekRaNkU0PSJdfX0=',
paymentMethod: PaymentMethod.cryptogram,
amount: '10',
currency: 'RUB',
// cardDetails: CardDetails(
// cardHolderName: "TEST CARD",
// cardNumber: "5260111696757102",
// //success card
// // cardNumber: '2408684917843810', //fail card
// cvc: "123",
// expMonth: "12",
// expYear: "24"),
cardDetails: CardDetails(
cardHolderName: "TEST CARD",
cardNumber: "5260111696757102", //success card
// cardNumber: '2408684917843810', //fail card
cvc: "123",
expMonth: "12",
expYear: "24"),
customerInfo: CustomerInfo(
email: "[email protected]",
phone: "+19991231212",
Expand Down
36 changes: 18 additions & 18 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
version: "1.17.2"
version: "1.18.0"
convert:
dependency: transitive
description:
Expand Down Expand Up @@ -166,10 +166,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
version: "1.9.1"
version: "1.10.0"
path:
dependency: transitive
description:
Expand All @@ -184,15 +184,15 @@ packages:
path: ".."
relative: true
source: path
version: "0.0.1"
version: "1.0.0"
platform:
dependency: transitive
description:
name: platform
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102
url: "https://pub.dev"
source: hosted
version: "3.1.0"
version: "3.1.2"
plugin_platform_interface:
dependency: transitive
description:
Expand Down Expand Up @@ -242,18 +242,18 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
string_scanner:
dependency: transitive
description:
Expand Down Expand Up @@ -282,10 +282,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
version: "0.6.0"
version: "0.6.1"
typed_data:
dependency: transitive
description:
Expand Down Expand Up @@ -314,18 +314,18 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f
sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583
url: "https://pub.dev"
source: hosted
version: "11.7.1"
version: "11.10.0"
web:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
version: "0.1.4-beta"
version: "0.3.0"
webdriver:
dependency: transitive
description:
Expand Down Expand Up @@ -367,5 +367,5 @@ packages:
source: hosted
version: "3.9.2"
sdks:
dart: ">=3.1.2 <4.0.0"
dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.7.0"
13 changes: 5 additions & 8 deletions lib/src/core/payselection_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ sealed class PaySelectionConfig {
factory PaySelectionConfig.credential({
required String publicKey,
required String xSiteId,
required String xRequestId,
required bool isDebug,
BaseLogger logger,
}) = PaySelectionConfigCredential;
Expand All @@ -23,17 +22,15 @@ sealed class PaySelectionConfig {
class PaySelectionConfigCredential extends PaySelectionConfig {
const PaySelectionConfigCredential(
{required this.publicKey,
required this.xSiteId,
required this.xRequestId,
bool isDebug = true,
BaseLogger logger = const Logger()})
required this.xSiteId,
bool isDebug = true,
BaseLogger logger = const Logger()})
: super._(
isDebug: isDebug,
logger: logger);
isDebug: isDebug,
logger: logger);

final String publicKey;

final String xSiteId;

final String xRequestId;
}
32 changes: 13 additions & 19 deletions lib/src/utils/network_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class NetworkClient {

final requestBody = jsonEncode(_modifyRequest(request, config));

var requestId = const Uuid();
var requestId = const Uuid().v4();
final settings = NetworkSettings(
siteId: _siteId(config), reqId: requestId.v4());
siteId: _siteId(config), reqId: requestId);

late Map<String, String> headers;

Expand All @@ -36,18 +36,18 @@ class NetworkClient {
headers = {
'X-REQUEST-AUTH': 'public',
'X-SITE-ID': _siteId(config),
'X-REQUEST-ID': _reqId(config),
'X-REQUEST-SIGNATURE': _generateSignature(request) ?? ''
'X-REQUEST-ID': requestId,
'X-REQUEST-SIGNATURE': _generateSignature(request, requestId) ?? ''
};
rawResponse = await http.get(url, headers: headers);
} else {
headers = settings.baseHeaders();
rawResponse = await http
.post(
url,
headers: headers,
body: requestBody,
)
url,
headers: headers,
body: requestBody,
)
.timeout(NetworkSettings.timeout);
}
if (config.isDebug) {
Expand Down Expand Up @@ -76,9 +76,9 @@ class NetworkClient {
}

Map<String, dynamic> _modifyRequest(
PaySelectionRequest request,
PaySelectionConfig config,
) {
PaySelectionRequest request,
PaySelectionConfig config,
) {
switch (config) {
case PaySelectionConfigCredential():
return request.toJson(config.publicKey);
Expand All @@ -92,21 +92,15 @@ class NetworkClient {
}
}

String _reqId(PaySelectionConfig config) {
switch (config) {
case PaySelectionConfigCredential():
return config.xRequestId;
}
}

String? _generateSignature(PaySelectionRequest request) {
String? _generateSignature(PaySelectionRequest request, String xReqId) {
if (request is TransactionStatusRequest) {
final config = _config as PaySelectionConfigCredential;
final value =
'${request.httpMethod}\n'
'${request.apiMethodPath}\n'
'${config.xSiteId}\n'
'${config.xRequestId}\n';
'$xReqId\n';

final keyBytes = utf8.encode(request.transactionSecretKey);
final key = KeyParameter(Uint8List.fromList(keyBytes));
Expand Down
5 changes: 2 additions & 3 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
name: payselection_sdk
description: A new Flutter project.
repository: https://github.com/stranger11/Payselection-Flutter-SDK
version: 0.0.1
homepage:
version: 1.0.0


environment:
sdk: '>=3.1.2 <4.0.0'
Expand Down

0 comments on commit aaa99ca

Please sign in to comment.